Previous Thread
Next Thread
Print Thread
#25566 - 12/18/06 03:17 AM "Error creating DirectSound buffer: 80070057" ?  
Joined: Oct 2002
Posts: 1,017
MooglyGuy Offline
Senior Member
MooglyGuy  Offline
Senior Member

Joined: Oct 2002
Posts: 1,017
MESS screams and dies when I try to create a simple square wave generator in this one just-for-fun driver that I'm creating. Other drivers with sound work fine, it's just mine that crashes. Here's the complete driver - the ROM is just an empty 64k of NOPs - any ideas what the deal is?

Code:
#include "driver.h"
#include "vidhrdw/generic.h"
#include "sound/discrete.h"

#define VERBOSE_LEVEL ( 3 )

INLINE void verboselog( int n_level, const char *s_fmt, ... )
{
	if( VERBOSE_LEVEL >= n_level )
	{
		va_list v;
		char buf[ 32768 ];
		va_start( v, s_fmt );
		vsprintf( buf, s_fmt, v );
		va_end( v );
		logerror( "%08x: %s", activecpu_get_pc(), buf );
	}
}

PALETTE_INIT( synth )
{
	palette_set_color( machine, 0, 0x00, 0x00, 0x00 );
	palette_set_color( machine, 1, 0xff, 0xff, 0xff );
}

VIDEO_START( synth )
{
	return 0;
}

VIDEO_UPDATE( synth )
{
	return 0;
}

static ADDRESS_MAP_START( synth_map, ADDRESS_SPACE_PROGRAM, 8 )
	AM_RANGE(0x00000000, 0x0000ffff) AM_ROM
ADDRESS_MAP_END

INPUT_PORTS_START( synth )
	PORT_START_TAG("IN 0")
	PORT_BIT( 0x0ff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END

static MACHINE_START( synth )
{
	return 0;
}

static MACHINE_RESET( synth )
{
}

DISCRETE_SOUND_START( synth_discrete_interface )
	DISCRETE_SQUAREWAVE( NODE_01, 1, 261.626, 0.5, 0.5, 0, 90 )
	DISCRETE_OUTPUT( NODE_01, 1 )
DISCRETE_SOUND_END

static MACHINE_DRIVER_START( synth )
	MDRV_CPU_ADD( Z80, 4000000 )
	MDRV_CPU_PROGRAM_MAP( synth_map, 0 )

	MDRV_MACHINE_START( synth )
	MDRV_MACHINE_RESET( synth )

	MDRV_VIDEO_ATTRIBUTES( VIDEO_TYPE_RASTER )
	MDRV_SCREEN_SIZE( 256, 256 )
	MDRV_VISIBLE_AREA( 0, 255, 0, 255 )
	MDRV_PALETTE_LENGTH( 2 )
	MDRV_PALETTE_INIT( synth )

	MDRV_VIDEO_START( synth )
	MDRV_VIDEO_UPDATE( synth )

	MDRV_SPEAKER_STANDARD_MONO( "mono" )
	MDRV_SOUND_ADD_TAG( "discrete", DISCRETE, 0 )
	MDRV_SOUND_CONFIG( synth_discrete_interface )
	MDRV_SOUND_ROUTE( ALL_OUTPUTS, "mono", 0.75 )
MACHINE_DRIVER_END

ROM_START( synth )
	ROM_REGION( 0x10000, REGION_CPU1, 0 )
	ROM_LOAD( "synth.bin", 0x000000, 0x010000, CRC(12345678) SHA1(1234567812345678123456781234567812345678) )
ROM_END

SYSTEM_CONFIG_START( synth )
SYSTEM_CONFIG_END

/*    YEAR  NAME      PARENT    COMPAT    MACHINE   INPUT     INIT      CONFIG   COMPANY   FULLNAME */
COMP( 2006, synth,    0,        0,        synth,    synth,    0,        synth,   "Moogle Technologies", "Synthesizer", 0 )

#25567 - 12/18/06 08:49 AM Re: "Error creating DirectSound buffer: 80070057" ? [Re: MooglyGuy]  
Joined: Mar 2001
Posts: 15,772
R. Belmont Offline
R. Belmont  Offline

Very Senior Member

Joined: Mar 2001
Posts: 15,772
USA
For those following at home, he had neither MDRV_FRAMES_PER_SECOND() defined nor the new-style video beam timings (which MAME/MESS can auto-calculate the framerate from) so the sound init died since it had no idea how long a frame is in samples.

#25568 - 12/18/06 10:57 AM Re: "Error creating DirectSound buffer: 80070057" [Re: R. Belmont]  
Joined: Oct 2002
Posts: 1,017
MooglyGuy Offline
Senior Member
MooglyGuy  Offline
Senior Member

Joined: Oct 2002
Posts: 1,017
And for those following at home, here's the fully-working (so far) shebang:

Code:
#include "driver.h"
#include "vidhrdw/generic.h"
#include "sound/discrete.h"
#include "inputx.h"

#define VERBOSE_LEVEL ( 3 )

INLINE void verboselog( int n_level, const char *s_fmt, ... )
{
	if( VERBOSE_LEVEL >= n_level )
	{
		va_list v;
		char buf[ 32768 ];
		va_start( v, s_fmt );
		vsprintf( buf, s_fmt, v );
		va_end( v );
		logerror( "%08x: %s", activecpu_get_pc(), buf );
	}
}

PALETTE_INIT( synth )
{
	palette_set_color( machine, 0, 0x00, 0x00, 0x00 );
	palette_set_color( machine, 1, 0xff, 0xff, 0xff );
}

VIDEO_START( synth )
{
	return 0;
}

VIDEO_UPDATE( synth )
{
	return 0;
}

static ADDRESS_MAP_START( synth_map, ADDRESS_SPACE_PROGRAM, 8 )
	AM_RANGE(0x00000000, 0x0000ffff) AM_ROM
ADDRESS_MAP_END

INPUT_PORTS_START( synth )
	PORT_START_TAG("IN 0")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C4")  PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C#4") PORT_CODE(KEYCODE_2) PORT_CHAR('2')
	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D4")  PORT_CODE(KEYCODE_W) PORT_CHAR('W')
	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D#4") PORT_CODE(KEYCODE_3) PORT_CHAR('3')
	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("E4")  PORT_CODE(KEYCODE_E) PORT_CHAR('E')
	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F4")  PORT_CODE(KEYCODE_R) PORT_CHAR('R')
	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F#4") PORT_CODE(KEYCODE_5) PORT_CHAR('5')
	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G4")  PORT_CODE(KEYCODE_T) PORT_CHAR('T')

	PORT_START_TAG("IN 1")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G#4") PORT_CODE(KEYCODE_6) PORT_CHAR('6')
	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A4")  PORT_CODE(KEYCODE_Y) PORT_CHAR('Y')
	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A#4") PORT_CODE(KEYCODE_7) PORT_CHAR('7')
	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B4")  PORT_CODE(KEYCODE_U) PORT_CHAR('U')
	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C5")  PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C#5") PORT_CODE(KEYCODE_S) PORT_CHAR('S')
	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D5")  PORT_CODE(KEYCODE_X) PORT_CHAR('X')
	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D#5") PORT_CODE(KEYCODE_D) PORT_CHAR('D')

	PORT_START_TAG("IN 2")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("E5")  PORT_CODE(KEYCODE_C) PORT_CHAR('C')
	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F5")  PORT_CODE(KEYCODE_V) PORT_CHAR('V')
	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F#5") PORT_CODE(KEYCODE_G) PORT_CHAR('G')
	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G5")  PORT_CODE(KEYCODE_B) PORT_CHAR('B')
	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G#5") PORT_CODE(KEYCODE_H) PORT_CHAR('H')
	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A5")  PORT_CODE(KEYCODE_N) PORT_CHAR('N')
	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A#5") PORT_CODE(KEYCODE_J) PORT_CHAR('J')
	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B5")  PORT_CODE(KEYCODE_M) PORT_CHAR('M')

	PORT_START_TAG("IN 3")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Select Square")   PORT_CODE(KEYCODE_8) PORT_CHAR('8')
	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Select Sawtooth") PORT_CODE(KEYCODE_9) PORT_CHAR('9')
	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Select Sine")     PORT_CODE(KEYCODE_O) PORT_CHAR('O')
	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Select Triangle") PORT_CODE(KEYCODE_I) PORT_CHAR('I')
	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Temp0")           PORT_CODE(KEYCODE_UP)
	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Temp1")           PORT_CODE(KEYCODE_DOWN)
	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Temp2")           PORT_CODE(KEYCODE_LEFT)
	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Temp3")           PORT_CODE(KEYCODE_RIGHT)
INPUT_PORTS_END

static MACHINE_START( synth )
{
	return 0;
}

static MACHINE_RESET( synth )
{
}

#define SYNTH_C4_EN			NODE_01
#define SYNTH_CS4_EN		NODE_02
#define SYNTH_D4_EN			NODE_03
#define SYNTH_DS4_EN		NODE_04
#define SYNTH_E4_EN			NODE_05
#define SYNTH_F4_EN			NODE_06
#define SYNTH_FS4_EN		NODE_07
#define SYNTH_G4_EN			NODE_08
#define SYNTH_GS4_EN		NODE_09
#define SYNTH_A4_EN			NODE_10
#define SYNTH_AS4_EN		NODE_11
#define SYNTH_B4_EN			NODE_12
#define SYNTH_C5_EN			NODE_13
#define SYNTH_CS5_EN		NODE_14
#define SYNTH_D5_EN			NODE_15
#define SYNTH_DS5_EN		NODE_16
#define SYNTH_E5_EN			NODE_17
#define SYNTH_F5_EN			NODE_18
#define SYNTH_FS5_EN		NODE_19
#define SYNTH_G5_EN			NODE_20
#define SYNTH_GS5_EN		NODE_21
#define SYNTH_A5_EN			NODE_22
#define SYNTH_AS5_EN		NODE_23
#define SYNTH_B5_EN			NODE_24
#define NODE_C4				NODE_25
#define NODE_CS4			NODE_26
#define NODE_D4				NODE_27
#define NODE_DS4			NODE_28
#define NODE_E4				NODE_29
#define NODE_F4				NODE_30
#define NODE_FS4			NODE_31
#define NODE_G4				NODE_32
#define NODE_GS4			NODE_33
#define NODE_A4				NODE_34
#define NODE_AS4			NODE_35
#define NODE_B4				NODE_36
#define NODE_C5				NODE_37
#define NODE_CS5			NODE_38
#define NODE_D5				NODE_39
#define NODE_DS5			NODE_40
#define NODE_E5				NODE_41
#define NODE_F5				NODE_42
#define NODE_FS5			NODE_43
#define NODE_G5				NODE_44
#define NODE_GS5			NODE_45
#define NODE_A5				NODE_46
#define NODE_AS5			NODE_47
#define NODE_B5				NODE_48
#define SYNTH_KEY_BLOCK_SEL	NODE_49
#define SYNTH_KEY_SEL		NODE_50
#define SYNTH_EN			NODE_51
#define FREQ_BLOCK0			NODE_52
#define FREQ_BLOCK1			NODE_53
#define FREQ_BLOCK2			NODE_54
#define FREQ_SEL			NODE_55
#define RAW_SQUARE_WAVE		NODE_56
#define RAW_SAWTOOTH_WAVE	NODE_57
#define RAW_SINE_WAVE		NODE_58
#define RAW_TRIANGLE_WAVE	NODE_59
#define WAVE_SELECT			NODE_60
#define WAVE_MULTIPLEXER	NODE_61
#define OUTPUT_NODE			NODE_61

#define FREQ_C4				261.626
#define FREQ_CS4			277.183
#define FREQ_D4				293.665
#define FREQ_DS4			311.127
#define FREQ_E4				329.628
#define FREQ_F4				349.228
#define FREQ_FS4			369.994
#define FREQ_G4				391.995
#define FREQ_GS4			415.305
#define FREQ_A4				440.000
#define FREQ_AS4			466.164
#define FREQ_B4				493.883
#define FREQ_C5				523.251
#define FREQ_CS5			554.365
#define FREQ_D5				587.330
#define FREQ_DS5			622.254
#define FREQ_E5				659.255
#define FREQ_F5				698.456
#define FREQ_FS5			739.989
#define FREQ_G5				783.991
#define FREQ_GS5			830.609
#define FREQ_A5				880.000
#define FREQ_AS5			932.328
#define FREQ_B5				987.767

DISCRETE_SOUND_START( synth_discrete_interface )
	DISCRETE_INPUT_LOGIC(SYNTH_C4_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_CS4_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_D4_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_DS4_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_E4_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_F4_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_FS4_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_G4_EN)

	DISCRETE_INPUT_LOGIC(SYNTH_GS4_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_A4_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_AS4_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_B4_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_C5_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_CS5_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_D5_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_DS5_EN)

	DISCRETE_INPUT_LOGIC(SYNTH_E5_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_F5_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_FS5_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_G5_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_GS5_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_A5_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_AS5_EN)
	DISCRETE_INPUT_LOGIC(SYNTH_B5_EN)

	DISCRETE_INPUT_LOGIC(SYNTH_EN)
	DISCRETE_INPUT_DATA(WAVE_SELECT)

	DISCRETE_CONSTANT(NODE_C4,  FREQ_C4)
	DISCRETE_CONSTANT(NODE_CS4, FREQ_CS4)
	DISCRETE_CONSTANT(NODE_D4,  FREQ_D4)
	DISCRETE_CONSTANT(NODE_DS4, FREQ_DS4)
	DISCRETE_CONSTANT(NODE_E4,  FREQ_E4)
	DISCRETE_CONSTANT(NODE_F4,  FREQ_F4)
	DISCRETE_CONSTANT(NODE_FS4, FREQ_FS4)
	DISCRETE_CONSTANT(NODE_G4,  FREQ_G4)

	DISCRETE_CONSTANT(NODE_GS4, FREQ_GS4)
	DISCRETE_CONSTANT(NODE_A4,  FREQ_A4)
	DISCRETE_CONSTANT(NODE_AS4, FREQ_AS4)
	DISCRETE_CONSTANT(NODE_B4,  FREQ_B4)
	DISCRETE_CONSTANT(NODE_C5,  FREQ_C5)
	DISCRETE_CONSTANT(NODE_CS5, FREQ_CS5)
	DISCRETE_CONSTANT(NODE_D5,  FREQ_D5)
	DISCRETE_CONSTANT(NODE_DS5, FREQ_DS5)

	DISCRETE_CONSTANT(NODE_E5,  FREQ_E5)
	DISCRETE_CONSTANT(NODE_F5,  FREQ_F5)
	DISCRETE_CONSTANT(NODE_FS5, FREQ_FS5)
	DISCRETE_CONSTANT(NODE_G5,  FREQ_G5)
	DISCRETE_CONSTANT(NODE_GS5, FREQ_GS5)
	DISCRETE_CONSTANT(NODE_A5,  FREQ_A5)
	DISCRETE_CONSTANT(NODE_AS5, FREQ_AS5)
	DISCRETE_CONSTANT(NODE_B5,  FREQ_B5)

	DISCRETE_INPUT_DATA(SYNTH_KEY_BLOCK_SEL)
	DISCRETE_INPUT_DATA(SYNTH_KEY_SEL)

	DISCRETE_MULTIPLEX8( FREQ_BLOCK0, 1, SYNTH_KEY_SEL, NODE_C4,  NODE_CS4, NODE_D4,  NODE_DS4, NODE_E4,  NODE_F4,  NODE_FS4, NODE_G4 )
	DISCRETE_MULTIPLEX8( FREQ_BLOCK1, 1, SYNTH_KEY_SEL, NODE_GS4, NODE_A4,  NODE_AS4, NODE_B4,  NODE_C5,  NODE_CS5, NODE_D5,  NODE_DS5 )
	DISCRETE_MULTIPLEX8( FREQ_BLOCK2, 1, SYNTH_KEY_SEL, NODE_E5,  NODE_F5,  NODE_FS5, NODE_G5,  NODE_GS5, NODE_A5,  NODE_AS5, NODE_B5 )

	DISCRETE_MULTIPLEX4( FREQ_SEL, 1, SYNTH_KEY_BLOCK_SEL, FREQ_BLOCK0, FREQ_BLOCK1, FREQ_BLOCK2, 0 )

	DISCRETE_SQUAREWAVE(   RAW_SQUARE_WAVE,   1, FREQ_SEL, 100, 50, 0, 0 )
	DISCRETE_SAWTOOTHWAVE( RAW_SAWTOOTH_WAVE, 1, FREQ_SEL, 100, 0, 1, 0 )
	DISCRETE_SINEWAVE(     RAW_SINE_WAVE,     1, FREQ_SEL, 100, 0, 0 )
	DISCRETE_TRIANGLEWAVE( RAW_TRIANGLE_WAVE, 1, FREQ_SEL, 100, 0, 0 )

	DISCRETE_MULTIPLEX4( WAVE_MULTIPLEXER, SYNTH_EN, WAVE_SELECT, RAW_SQUARE_WAVE, RAW_SAWTOOTH_WAVE, RAW_SINE_WAVE, RAW_TRIANGLE_WAVE )

	DISCRETE_OUTPUT( OUTPUT_NODE, 1000 )
DISCRETE_SOUND_END

static INTERRUPT_GEN( synth_inputtest )
{
	if( readinputport(3) & 0x0f )
	{
		if( readinputport(3) & 0x01 )
		{
			discrete_sound_w( WAVE_SELECT, 0 );
			printf( "Square select\n" );
		}
		else if( readinputport(3) & 0x02 )
		{
			discrete_sound_w( WAVE_SELECT, 1 );
			printf( "Sawtooth select\n" );
		}
		else if( readinputport(3) & 0x04 )
		{
			discrete_sound_w( WAVE_SELECT, 2 );
			printf( "Sine select\n" );
		}
		else if( readinputport(3) & 0x08 )
		{
			discrete_sound_w( WAVE_SELECT, 3 );
			printf( "Triangle select\n" );
		}
	}
	if( readinputport(0) != 0 || readinputport(1) != 0 || readinputport(2) != 0 )
	{
		UINT8 keyidx = 0;
		UINT8 portidx = 0;
		if( readinputport(0) )
		{
			discrete_sound_w( SYNTH_KEY_BLOCK_SEL, 0 );
			portidx = 0;
		}
		else if( readinputport(1) )
		{
			discrete_sound_w( SYNTH_KEY_BLOCK_SEL, 1 );
			portidx = 1;
		}
		else if( readinputport(2) )
		{
			discrete_sound_w( SYNTH_KEY_BLOCK_SEL, 2 );
			portidx = 2;
		}
		else
		{
			portidx = 0xff;
		}
		if( portidx < 0xff )
		{
			for( keyidx = 0; keyidx < 8; keyidx++ )
			{
				if( readinputport(portidx) & ( 1 << keyidx ) )
				{
					discrete_sound_w( SYNTH_KEY_SEL, keyidx );
					break;
				}
			}
		}
		discrete_sound_w( SYNTH_EN, 1 );
	}
	else
	{
		discrete_sound_w( SYNTH_EN, 0 );
	}
}

static MACHINE_DRIVER_START( synth )
	MDRV_CPU_ADD( Z80, 4000000 )
	MDRV_CPU_PROGRAM_MAP( synth_map, 0 )
	MDRV_CPU_VBLANK_INT(synth_inputtest, 1)

	MDRV_MACHINE_START( synth )
	MDRV_MACHINE_RESET( synth )

	MDRV_FRAMES_PER_SECOND(60)
	MDRV_VIDEO_ATTRIBUTES( VIDEO_TYPE_RASTER )
	MDRV_SCREEN_SIZE( 256, 256 )
	MDRV_VISIBLE_AREA( 0, 255, 0, 255 )
	MDRV_PALETTE_LENGTH( 2 )
	MDRV_PALETTE_INIT( synth )

	MDRV_VIDEO_START( synth )
	MDRV_VIDEO_UPDATE( synth )

	MDRV_SPEAKER_STANDARD_MONO( "mono" )
	MDRV_SOUND_ADD_TAG( "discrete", DISCRETE, 0 )
	MDRV_SOUND_CONFIG( synth_discrete_interface )
	MDRV_SOUND_ROUTE( ALL_OUTPUTS, "mono", 0.75 )
MACHINE_DRIVER_END

ROM_START( synth )
	ROM_REGION( 0x10000, REGION_CPU1, 0 )
	ROM_LOAD( "synth.bin", 0x000000, 0x010000, CRC(12345678) SHA1(1234567812345678123456781234567812345678) )
ROM_END

SYSTEM_CONFIG_START( synth )
SYSTEM_CONFIG_END

/*    YEAR  NAME      PARENT    COMPAT    MACHINE   INPUT     INIT      CONFIG   COMPANY   FULLNAME */
COMP( 2006, synth,    0,        0,        synth,    synth,    0,        synth,   "Moogle Technologies", "synthesizer", 0 )


Octave 4 is Q2W3ER5T6Y7U, Octave 5 is ZSXDCVGBHNJM. Select between Square / Sawtooth / Sine / Triangle wave with 8 / 9 / O / I.


Who's Online Now
1 registered members (Carbon), 9 guests, and 3 spiders.
Key: Admin, Global Mod, Mod
Shout Box
Forum Statistics
Forums9
Topics8,453
Posts109,705
Members4,766
Most Online225
May 26th, 2014
Powered by UBB.threads™ PHP Forum Software 7.6.0
Page Time: 0.022s Queries: 14 (0.009s) Memory: 4.9519 MB (Peak: 5.1215 MB) Zlib enabled. Server Time: 2017-12-12 10:15:48 UTC