summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Couriersud <couriersud@users.noreply.github.com>2009-09-03 19:19:29 +0000
committer Couriersud <couriersud@users.noreply.github.com>2009-09-03 19:19:29 +0000
commit73b92450085508672ee7b0da91a19c8c13094c59 (patch)
tree6470e8ade35d04538301eabd549ae18419170f4d /src
parenta0dc0e0196f06132b93b5af31dcec09777bd8099 (diff)
03416: bradley: Exits with DISCRETE_ADJUSTMENT_TAG - NODE_88 has invalid tag.
- removed old bzone sound code as well.
Diffstat (limited to 'src')
-rw-r--r--src/mame/audio/bzone.c278
-rw-r--r--src/mame/drivers/bzone.c38
-rw-r--r--src/mame/includes/bzone.h9
3 files changed, 8 insertions, 317 deletions
diff --git a/src/mame/audio/bzone.c b/src/mame/audio/bzone.c
index 4d980c05936..5e08aad9431 100644
--- a/src/mame/audio/bzone.c
+++ b/src/mame/audio/bzone.c
@@ -22,282 +22,6 @@ D0 explosion enable gates a noise generator
#include "streams.h"
#include "bzone.h"
-#if !BZONE_DISCRETE
-#define OUTPUT_RATE (6000*4)
-
-
-/* Statics */
-static INT16 *discharge = NULL;
-#define EXP(charge,n) (charge ? 0x7fff - discharge[0x7fff-n] : discharge[n])
-
-static sound_stream *channel;
-static int latch;
-static int poly_counter;
-static int poly_shift;
-
-static int explosion_clock;
-static int explosion_out;
-static int explosion_amp;
-static int explosion_amp_counter;
-
-static int shell_clock;
-static int shell_out;
-static int shell_amp;
-static int shell_amp_counter;
-
-static int motor_counter;
-static int motor_counter_a;
-static int motor_counter_b;
-static int motor_rate;
-static int motor_rate_new;
-static int motor_rate_counter;
-static int motor_amp;
-static int motor_amp_new;
-static int motor_amp_step;
-static int motor_amp_counter;
-
-WRITE8_HANDLER( bzone_sounds_w )
-{
- if( data == latch )
- return;
-
- stream_update(channel);
- latch = data;
-
- sound_global_enable(space->machine, latch & 0x20);
-}
-
-static STREAM_UPDATE( bzone_sound_update )
-{
- stream_sample_t *buffer = outputs[0];
- while( samples-- )
- {
- static int last_val = 0;
- int sum = 0;
-
- /* polynome shifter H5 and H4 (LS164) clocked with 6kHz */
- poly_counter -= 6000;
- while( poly_counter <= 0 )
- {
- int clock;
-
- poly_counter += OUTPUT_RATE;
- if( ((poly_shift & 0x0008) == 0) == ((poly_shift & 0x4000) == 0) )
- poly_shift = (poly_shift << 1) | 1;
- else
- poly_shift <<= 1;
-
- /* NAND gate J4 */
- clock = ((poly_shift & 0x7000) == 0x7000) ? 0 : 1;
-
- /* raising edge on pin 3 of J5 (LS74)? */
- if( clock && !explosion_clock )
- explosion_out ^= 1;
-
- /* save explo clock level */
- explosion_clock = clock;
-
- /* input 11 of J5 (LS74) */
- clock = (poly_shift >> 15) & 1;
-
- /* raising edge on pin 11 of J5 (LS74)? */
- if( clock && !shell_clock )
- shell_out ^= 1;
-
- /* save shell clock level */
- shell_clock = clock;
- }
-
- /* explosion enable: charge C14 */
- if( latch & 0x01 )
- explosion_amp = 32767;
-
- /* explosion output? */
- if( explosion_out )
- {
- if( explosion_amp > 0 )
- {
- /*
- * discharge C14 through R17 + R16
- * time constant is 10e-6 * 23000 = 0.23 seconds
- * (samples were decaying much slower: 1/4th rate? )
- */
- explosion_amp_counter -= (int)(32767 / (0.23*4));
- if( explosion_amp_counter < 0 )
- {
- int n = (-explosion_amp_counter / OUTPUT_RATE) + 1;
- explosion_amp_counter += n * OUTPUT_RATE;
- if( (explosion_amp -= n) < 0 )
- explosion_amp = 0;
- }
- }
- /*
- * I don't know the amplification of the op-amp
- * and feedback, so the loud/soft values are arbitrary
- */
- if( latch & 0x02 ) /* explosion loud ? */
- sum += EXP(0,explosion_amp)/3;
- else
- sum += EXP(0,explosion_amp)/4;
- }
-
- /* shell enable: charge C9 */
- if( latch & 0x04 )
- shell_amp = 32767;
-
- /* shell output? */
- if( shell_out )
- {
- if( shell_amp > 0 )
- {
- /*
- * discharge C9 through R14 + R15
- * time constant is 4.7e-6 * 23000 = 0.1081 seconds
- * (samples were decaying much slower: 1/4th rate? )
- */
- shell_amp_counter -= (int)(32767 / (0.1081*4));
- if( shell_amp_counter < 0 )
- {
- int n = (-shell_amp_counter / OUTPUT_RATE) + 1;
- shell_amp_counter += n * OUTPUT_RATE;
- if( (shell_amp -= n) < 0 )
- shell_amp = 0;
- }
- }
- /*
- * I don't know the amplification of the op-amp
- * and feedback, so the loud/soft values are arbitrary
- */
- if( latch & 0x08 ) /* shell loud ? */
- sum += EXP(0,shell_amp)/3;
- else
- sum += EXP(0,shell_amp)/4;
- }
-
- if( latch & 0x80 )
- {
- /* NE5555 timer
- * C = 0.018u, Ra = 100k, Rb = 125k
- * charge time = 0.693 * (Ra + Rb) * C = 3870us
- * discharge time = 0.693 * Rb * C = 1559.25us
- * freq approx. 184 Hz
- * I have no idea what frequencies are coming from the NE555
- * with "MOTOR REV EN" being high or low. I took 240Hz as
- * higher rate and sweep up or down to the new rate in 0.25s
- */
- motor_rate_new = (latch & 0x10) ? 240 : 184;
- if( motor_rate != motor_rate_new )
- {
- /* sweep rate to new rate */
- motor_rate_counter -= (int)((240 - 184) / 0.25);
- while( motor_rate_counter <= 0 )
- {
- motor_rate_counter += OUTPUT_RATE;
- motor_rate += (motor_rate < motor_rate_new) ? +1 : -1;
- }
- }
- motor_counter -= motor_rate;
- while( motor_counter <= 0 )
- {
- double r0, r1;
-
- motor_counter += OUTPUT_RATE;
-
- r0 = 1.0/1e12;
- r1 = 1.0/1e12;
-
- if( ++motor_counter_a == 16 )
- motor_counter_a = 6;
- if( ++motor_counter_b == 16 )
- motor_counter_b = 4;
-
- if( motor_counter_a & 8 ) /* bit 3 */
- r1 += 1.0/33000;
- else
- r0 += 1.0/33000;
- if( motor_counter_a == 15 ) /* ripple carry */
- r1 += 1.0/33000;
- else
- r0 += 1.0/33000;
-
- if( motor_counter_b & 8 ) /* bit 3 */
- r1 += 1.0/33000;
- else
- r0 += 1.0/33000;
- if( motor_counter_b == 15 ) /* ripple carry */
- r1 += 1.0/33000;
- else
- r0 += 1.0/33000;
-
- /* new voltage at C29 */
- r0 = 1.0/r0;
- r1 = 1.0/r1;
- motor_amp_new = (int)(32767 * r0 / (r0 + r1));
-
- /* charge/discharge C29 (0.47uF) */
- if( motor_amp_new > motor_amp )
- motor_amp_step = (int)((motor_amp_new - motor_amp) / (r1*0.47e-6));
- else
- motor_amp_step = (int)((motor_amp - motor_amp_new) / (r0*0.47e-6));
- }
- if( motor_amp != motor_amp_new )
- {
- motor_amp_counter -= motor_amp_step;
- if( motor_amp_counter < 0 )
- {
- int n = (-motor_amp_counter / OUTPUT_RATE) + 1;
- motor_amp_counter += n * OUTPUT_RATE;
- if( motor_amp > motor_amp_new )
- {
- motor_amp -= n;
- if( motor_amp < motor_amp_new )
- motor_amp = motor_amp_new;
- }
- else
- {
- motor_amp += n;
- if( motor_amp > motor_amp_new )
- motor_amp = motor_amp_new;
- }
- }
- }
- sum += EXP((motor_amp<motor_amp_new),motor_amp)/3;
- }
-
- *buffer++ = (sum + last_val) / 2;
-
- /* crude 75% low pass filter */
- last_val = (sum + last_val * 3) / 4;
- }
-}
-
-static DEVICE_START( bzone_sound )
-{
- int i;
-
- discharge = auto_alloc_array(device->machine, INT16, 32768);
- for( i = 0; i < 0x8000; i++ )
- discharge[0x7fff-i] = (INT16) (0x7fff/exp(1.0*i/4096));
-
- channel = stream_create(device, 0, 1, OUTPUT_RATE, 0, bzone_sound_update);
-}
-
-
-DEVICE_GET_INFO( bzone_sound )
-{
- switch (state)
- {
- /* --- the following bits of info are returned as pointers to data or functions --- */
- case DEVINFO_FCT_START: info->start = DEVICE_START_NAME(bzone_sound); break;
-
- /* --- the following bits of info are returned as NULL-terminated strings --- */
- case DEVINFO_STR_NAME: strcpy(info->s, "Battlezone Engine"); break;
- case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
- }
-}
-
-#else
-
#include "sound/discrete.h"
#include "sound/pokey.h"
@@ -584,5 +308,3 @@ MACHINE_DRIVER_START( bzone_audio )
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_DRIVER_END
-
-#endif
diff --git a/src/mame/drivers/bzone.c b/src/mame/drivers/bzone.c
index 25982ee1adc..78a4dd036a1 100644
--- a/src/mame/drivers/bzone.c
+++ b/src/mame/drivers/bzone.c
@@ -306,11 +306,7 @@ static ADDRESS_MAP_START( bzone_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x1810, 0x1810) AM_DEVREAD("mathbox", mathbox_lo_r)
AM_RANGE(0x1818, 0x1818) AM_DEVREAD("mathbox", mathbox_hi_r)
AM_RANGE(0x1820, 0x182f) AM_DEVREADWRITE("pokey", pokey_r, pokey_w)
-#if BZONE_DISCRETE
AM_RANGE(0x1840, 0x1840) AM_DEVWRITE("discrete", bzone_sounds_w)
-#else
- AM_RANGE(0x1840, 0x1840) AM_WRITE(bzone_sounds_w)
-#endif
AM_RANGE(0x1860, 0x187f) AM_DEVWRITE("mathbox", mathbox_go_w)
AM_RANGE(0x2000, 0x2fff) AM_RAM AM_BASE(&vectorram) AM_SIZE(&vectorram_size) AM_REGION("maincpu", 0x2000)
AM_RANGE(0x3000, 0x7fff) AM_ROM
@@ -407,6 +403,10 @@ ADDRESS_MAP_END
PORT_DIPSETTING( 0x60, "6 credits/4 coins" )\
PORT_DIPSETTING( 0x80, "6 credits/5 coins" )
+#define BZONEADJ \
+ PORT_START("R11") \
+ PORT_ADJUSTER( 50, "Engine Frequency" )
+
static INPUT_PORTS_START( bzone )
BZONEIN0
BZONEDSW0
@@ -422,10 +422,7 @@ static INPUT_PORTS_START( bzone )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
-#if BZONE_DISCRETE
- PORT_START("R11")
- PORT_ADJUSTER( 50, "Engine Frequency" )
-#endif
+ BZONEADJ
INPUT_PORTS_END
@@ -519,6 +516,8 @@ static INPUT_PORTS_START( bradley )
PORT_START("AN2") /* analog 2 = shell firing range hack removed, now uses Z */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Z ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_CENTERDELTA(0) PORT_REVERSE
+
+ BZONEADJ
INPUT_PORTS_END
@@ -578,32 +577,11 @@ static MACHINE_DRIVER_START( bzone )
MDRV_IMPORT_FROM(bzone_base)
/* sound hardware */
-#if BZONE_DISCRETE
MDRV_IMPORT_FROM(bzone_audio)
-#else
- MDRV_SPEAKER_STANDARD_MONO("mono")
- MDRV_SOUND_ADD("pokey", POKEY, MASTER_CLOCK / 8)
- MDRV_SOUND_CONFIG(bzone_pokey_interface)
- MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-
- MDRV_SOUND_ADD("custom", BZONE, 0)
- MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
-#endif
MACHINE_DRIVER_END
-static MACHINE_DRIVER_START( bradley )
-
- /* basic machine hardware */
- MDRV_IMPORT_FROM(bzone)
-
- /* sound hardware */
- MDRV_SOUND_REPLACE("pokey", POKEY, BZONE_MASTER_CLOCK / 8)
- MDRV_SOUND_CONFIG(bzone_pokey_interface)
- MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-MACHINE_DRIVER_END
-
static MACHINE_DRIVER_START( redbaron )
@@ -842,5 +820,5 @@ static DRIVER_INIT( bradley )
GAMEL(1980, bzone, 0, bzone, bzone, 0, ROT0, "Atari", "Battle Zone (set 1)", GAME_SUPPORTS_SAVE, layout_bzone )
GAMEL(1980, bzone2, bzone, bzone, bzone, 0, ROT0, "Atari", "Battle Zone (set 2)", GAME_SUPPORTS_SAVE, layout_bzone )
GAMEL(1980, bzonec, bzone, bzone, bzone, 0, ROT0, "Atari", "Battle Zone (cocktail)", GAME_SUPPORTS_SAVE|GAME_NO_COCKTAIL, layout_bzone )
-GAME( 1980, bradley, 0, bradley, bradley, bradley, ROT0, "Atari", "Bradley Trainer", GAME_SUPPORTS_SAVE )
+GAME( 1980, bradley, 0, bzone, bradley, bradley, ROT0, "Atari", "Bradley Trainer", GAME_SUPPORTS_SAVE )
GAMEL(1980, redbaron, 0, redbaron, redbaron, 0, ROT0, "Atari", "Red Baron", GAME_SUPPORTS_SAVE, layout_ho88ffff )
diff --git a/src/mame/includes/bzone.h b/src/mame/includes/bzone.h
index 6ed7c926cc2..cd8964d0fc7 100644
--- a/src/mame/includes/bzone.h
+++ b/src/mame/includes/bzone.h
@@ -4,8 +4,6 @@
*************************************************************************/
-#define BZONE_DISCRETE (1)
-
#define BZONE_MASTER_CLOCK (XTAL_12_096MHz)
#define BZONE_CLOCK_3KHZ (MASTER_CLOCK / 4096)
@@ -16,17 +14,10 @@ extern UINT8 rb_input_select;
/*----------- defined in audio/bzone.c -----------*/
-#if BZONE_DISCRETE
WRITE8_DEVICE_HANDLER( bzone_sounds_w );
MACHINE_DRIVER_EXTERN( bzone_audio );
-#else
-WRITE8_HANDLER( bzone_sounds_w );
-
-DEVICE_GET_INFO( bzone_sound );
-#define SOUND_BZONE DEVICE_GET_INFO_NAME(bzone_sound)
-#endif
/*----------- defined in audio/redbaron.c -----------*/