summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Couriersud <couriersud@users.noreply.github.com>2008-08-22 21:29:11 +0000
committer Couriersud <couriersud@users.noreply.github.com>2008-08-22 21:29:11 +0000
commite972cc16449eeae578f86650a5ab679c35300b22 (patch)
tree14dde2da235ef285039577eefdabc8623c5d6aef
parentd8d031e8d3b9f023d0180279b944b0dfecaeb2eb (diff)
dkong & friends: Use new latch device
* adds new latch device where appropriate * increased accuracy since now all main/sound cpu communications are properly latched * removed quite some code as a consequence * minor cosmetic edits
-rw-r--r--src/mame/audio/dkong.c446
-rw-r--r--src/mame/drivers/dkong.c122
-rw-r--r--src/mame/includes/dkong.h23
-rw-r--r--src/mame/video/dkong.c103
4 files changed, 275 insertions, 419 deletions
diff --git a/src/mame/audio/dkong.c b/src/mame/audio/dkong.c
index 8a64e25dbec..01478ef6bec 100644
--- a/src/mame/audio/dkong.c
+++ b/src/mame/audio/dkong.c
@@ -2,9 +2,8 @@
#include "cpu/i8039/i8039.h"
#include "cpu/m6502/m6502.h"
#include "sound/nes_apu.h"
-#include "sound/samples.h"
#include "sound/discrete.h"
-#include "sound/dac.h"
+#include "machine/latch8.h"
#include "sound/tms5110.h"
#include "sound/5110intf.h"
@@ -28,24 +27,9 @@
* sound is completely overmodulated.
*/
-// FIXME: Review at a later time
+/* FIXME: Review at a later time */
#define DK_REVIEW (1)
-#define ACTIVELOW_PORT_BIT(P,A,D) (((P) & (~(1 << (A)))) | (((D) ^ 1) << (A)))
-
-/* Needed for dkongjr ... FIXME */
-//#define I8035_T_R(N) ((portT >> (N)) & 1)
-#define I8035_T_R(M,N) ((soundlatch2_r(machine,0) >> (N)) & 1)
-#define I8035_T_W_AL(M,N,D) do { state->portT = ACTIVELOW_PORT_BIT(state->portT,N,D); soundlatch2_w(machine, 0, state->portT); } while (0)
-
-#define I8035_P1_R(M) (soundlatch3_r(M,0))
-#define I8035_P2_R(M) (soundlatch4_r(M,0))
-#define I8035_P1_W(M,D) soundlatch3_w(M,0,D)
-#define I8035_P2_W(M,D) soundlatch4_w(M,0,D)
-
-#define I8035_P1_W_AL(M,B,D) I8035_P1_W(M,ACTIVELOW_PORT_BIT(I8035_P1_R(M),B,(D)))
-#define I8035_P2_W_AL(M,B,D) I8035_P2_W(M,ACTIVELOW_PORT_BIT(I8035_P2_R(M),B,(D)))
-
/****************************************************************
*
@@ -62,7 +46,7 @@
#define DS_SOUND7_INV NODE_05
#define DS_SOUND9_INV NODE_06
#define DS_DAC NODE_07
-#define DS_DAC_DISCHARGE NODE_08
+#define DS_DISCHARGE_INV NODE_08
#define DS_SOUND0 NODE_208
#define DS_SOUND1 NODE_209
@@ -205,7 +189,7 @@ static const discrete_mixer_desc dkong_rc_jump_desc =
DISC_MIXER_IS_RESISTOR,
{1, DK_R49+DK_R51,NE555_INTERNAL_R,2*NE555_INTERNAL_R},
{NODE_26,0,0,0},
- {0,0,0,0}, // no node capacitors
+ {0,0,0,0}, /* no node capacitors */
0, 0,
DK_C24,
0,
@@ -217,7 +201,7 @@ static const discrete_mixer_desc dkong_rc_walk_desc =
DISC_MIXER_IS_RESISTOR,
{1, DK_R45+DK_R44,NE555_INTERNAL_R,2*NE555_INTERNAL_R},
{NODE_52,0,0,0},
- {0,0,0,0}, // no node capacitors
+ {0,0,0,0}, /* no node capacitors */
0, 0,
DK_C29,
0,
@@ -228,8 +212,8 @@ static const discrete_mixer_desc dkong_mixer_desc =
{
DISC_MIXER_IS_RESISTOR,
{DK_R2, DK_R24, DK_R1, DK_R14},
- {0,0,0}, // no variable resistors
- {0,0,0}, // no node capacitors
+ {0,0,0}, /* no variable resistors */
+ {0,0,0}, /* no node capacitors */
#if DK_REVIEW
0, RES_K(10),
#else
@@ -275,13 +259,13 @@ static DISCRETE_SOUND_START(dkong2b)
/* Input register mapping for dkong */
/************************************************/
- // DISCRETE_INPUT_DATA
+ /* DISCRETE_INPUT_DATA */
DISCRETE_INPUT_NOT(DS_SOUND2_INV)
DISCRETE_INPUT_NOT(DS_SOUND1_INV)
DISCRETE_INPUT_NOT(DS_SOUND0_INV)
- DISCRETE_INPUT_LOGIC(DS_DAC_DISCHARGE)
+ DISCRETE_INPUT_NOT(DS_DISCHARGE_INV)
DISCRETE_INPUT_DATA(DS_DAC)
- // Mixing - DAC
+ /* Mixing - DAC */
DISCRETE_ADJUSTMENT_TAG(DS_ADJ_DAC, 0, 1, DISC_LINADJ, "VR2")
/************************************************/
@@ -297,7 +281,7 @@ static DISCRETE_SOUND_START(dkong2b)
/************************************************/
/* Noise */
DISCRETE_LFSR_NOISE(NODE_11, 1, 1, CLOCK_2VF, 1.0, 0, 0.5, &dkong_lfsr)
- DISCRETE_COUNTER(NODE_12, 1, 0, NODE_11, 7, DISC_COUNT_UP, 0, DISC_CLK_ON_R_EDGE) // LS161, IC 3J
+ DISCRETE_COUNTER(NODE_12, 1, 0, NODE_11, 7, DISC_COUNT_UP, 0, DISC_CLK_ON_R_EDGE) /* LS161, IC 3J */
DISCRETE_TRANSFORM3(NODE_13,1,NODE_12,3,DK_SUP_V,"01>2*")
/* Stomp */
@@ -307,8 +291,8 @@ static DISCRETE_SOUND_START(dkong2b)
DISCRETE_TRANSFORM2(NODE_16, 1, NODE_15, 0.6, "01>")
DISCRETE_RCDISC2(NODE_17,NODE_16,DK_SUP_V,DK_R8+DK_R7,0.0,DK_R7,DK_C20)
- DISCRETE_DIODE_MIXER2(NODE_18, 1, DK_1N5553_V, NODE_13, NODE_13) // D3
- DISCRETE_DIODE_MIXER2(NODE_20, 1, DK_1N5553_V, NODE_17, NODE_18) // D1, D2
+ DISCRETE_DIODE_MIXER2(NODE_18, 1, DK_1N5553_V, NODE_13, NODE_13) /* D3 */
+ DISCRETE_DIODE_MIXER2(NODE_20, 1, DK_1N5553_V, NODE_17, NODE_18) /* D1, D2 */
DISCRETE_RCINTEGRATE(NODE_22,1,NODE_20,DK_R5, R_PARALLEL(DK_R4+DK_R3,DK_R6),0,DK_C19,DK_SUP_V,DISC_RC_INTEGRATE_TYPE1)
DISCRETE_MULTIPLY(DS_OUT_SOUND0,1,NODE_22,DK_R3/R_SERIE(DK_R3,DK_R4))
@@ -316,7 +300,7 @@ static DISCRETE_SOUND_START(dkong2b)
/************************************************/
/* Jump */
/************************************************/
-
+/* tt */
DISCRETE_MULTIPLY(NODE_24,1,DS_SOUND1,DK_SUP_V)
/* 4049B Inverter Oscillator build from 3 inverters */
DISCRETE_INVERTER_OSC(NODE_25,1,0,DK_R38,DK_R39,DK_C26,0,&dkong_inverter_osc_desc_jump)
@@ -361,8 +345,8 @@ static DISCRETE_SOUND_START(dkong2b)
/************************************************/
/* Signal decay circuit Q7, R20, C32 */
- DISCRETE_RCDISC(NODE_70, DS_DAC_DISCHARGE, 1, DK_R20, DK_C32)
- DISCRETE_TRANSFORM4(NODE_71, 1, DS_DAC, DK_SUP_V/256.0, NODE_70, DS_DAC_DISCHARGE, "01*3!2+*")
+ DISCRETE_RCDISC(NODE_70, DS_DISCHARGE_INV, 1, DK_R20, DK_C32)
+ DISCRETE_TRANSFORM4(NODE_71, 1, DS_DAC, DK_SUP_V/256.0, NODE_70, DS_DISCHARGE_INV, "01*3!2+*")
/* following the DAC are two opamps. The first is a current-to-voltage changer
* for the DAC08 which delivers a variable output current.
@@ -387,12 +371,12 @@ static DISCRETE_SOUND_START(dkong2b)
DISCRETE_MIXER4(NODE_288, 1, DS_OUT_SOUND0, DS_OUT_SOUND1, DS_OUT_DAC, DS_OUT_SOUND2, &dkong_mixer_desc)
- // Amplifier: internal amplifier
+ /* Amplifier: internal amplifier */
DISCRETE_ADDER2(NODE_289,1,NODE_288,5.0*43.0/(100.0+43.0))
DISCRETE_RCINTEGRATE(NODE_294,1,NODE_289,0,150,1000, CAP_U(33),DK_SUP_V,DISC_RC_INTEGRATE_TYPE3)
DISCRETE_CRFILTER(NODE_295,1,NODE_294, RES_K(50), DK_C13)
- //DISCRETE_CRFILTER(NODE_295,1,NODE_294, 1000, DK_C13)
- // EZV20 equivalent filter circuit ...
+ /*DISCRETE_CRFILTER(NODE_295,1,NODE_294, 1000, DK_C13) */
+ /* EZV20 equivalent filter circuit ... */
DISCRETE_CRFILTER(NODE_296,1,NODE_295, RES_K(1), CAP_U(4.7))
#if DK_NO_FILTERS
DISCRETE_OUTPUT(NODE_288, 32767.0/5.0 * 10)
@@ -418,14 +402,14 @@ DISCRETE_SOUND_END
#define RS_R8 RES_K(100)
#define RS_R9 RES_K(10)
#define RS_R14 RES_K(10)
-#define RS_R15 RES_K(5.6) // ????
+#define RS_R15 RES_K(5.6) /* ???? */
#define RS_R16 RES_K(5.6)
#define RS_R18 RES_K(4.7)
#define RS_R22 RES_K(5.6)
#define RS_R23 RES_K(5.6)
#define RS_R25 RES_K(10)
#define RS_R26 RES_K(5.1)
-#define RS_R27 RES_K(2) // 10k in schematics - but will oscillate
+#define RS_R27 RES_K(2) /* 10k in schematics - but will oscillate */
#define RS_R28 150
#define RS_R29 RES_K(4.7)
#define RS_R30 RES_K(10)
@@ -444,7 +428,7 @@ DISCRETE_SOUND_END
#define RS_R54 RES_K(1.2)
#define RS_R55 RES_K(10)
#define RS_R56 RES_K(12)
-#define RS_R57 RES_K(4.3) // ??? 43
+#define RS_R57 RES_K(4.3) /* ??? 43 */
#define RS_R58 RES_K(43)
#define RS_R59 RES_K(1.2)
#define RS_R60 RES_K(10)
@@ -483,8 +467,8 @@ DISCRETE_SOUND_END
static const discrete_mixer_desc radarscp_mixer_desc =
{DISC_MIXER_IS_RESISTOR,
{RS_R14, RS_R25, RS_R2, RS_R42, RS_R1},
- {0,0,0,0,0}, // no variable resistors
- {0,0,0,0,0}, // no node capacitors
+ {0,0,0,0,0}, /* no variable resistors */
+ {0,0,0,0,0}, /* no node capacitors */
0, RS_VR2,
0,
RS_C2,
@@ -494,7 +478,7 @@ static const discrete_mixer_desc radarscp_mixer_desc_0 =
{DISC_MIXER_IS_RESISTOR,
{RS_R56+RS_R54,NE555_INTERNAL_R,R_PARALLEL(2*NE555_INTERNAL_R,RS_R55) },
{0,0,0},
- {0,0,0,0}, // no node capacitors
+ {0,0,0,0}, /* no node capacitors */
0, 0,
RS_C51,
0,
@@ -503,8 +487,8 @@ static const discrete_mixer_desc radarscp_mixer_desc_0 =
static const discrete_mixer_desc radarscp_mixer_desc_7 =
{DISC_MIXER_IS_RESISTOR,
{RS_R63+RS_R59, NE555_INTERNAL_R,R_PARALLEL(2*NE555_INTERNAL_R,RS_R60)},
- {0,0,0}, // no variable resistors
- {0,0,0}, // no node capacitors
+ {0,0,0}, /* no variable resistors */
+ {0,0,0}, /* no node capacitors */
0, 0,
RS_C50,
0,
@@ -531,16 +515,16 @@ static DISCRETE_SOUND_START(radarscp)
/* Input register mapping for radarscp */
/************************************************/
- // DISCRETE_INPUT_DATA
+ /* DISCRETE_INPUT_DATA */
DISCRETE_INPUT_NOT(DS_SOUND0_INV)
DISCRETE_INPUT_NOT(DS_SOUND1_INV)
DISCRETE_INPUT_NOT(DS_SOUND2_INV)
DISCRETE_INPUT_NOT(DS_SOUND6_INV)
DISCRETE_INPUT_NOT(DS_SOUND7_INV)
- DISCRETE_INPUT_LOGIC(DS_DAC_DISCHARGE)
+ DISCRETE_INPUT_NOT(DS_DISCHARGE_INV)
DISCRETE_INPUT_DATA(DS_DAC)
- // Mixing - DAC
+ /* Mixing - DAC */
DISCRETE_ADJUSTMENT_TAG(DS_ADJ_DAC, 0, 1, DISC_LINADJ, "VR2")
/************************************************/
@@ -555,10 +539,10 @@ static DISCRETE_SOUND_START(radarscp)
/************************************************/
DISCRETE_LFSR_NOISE(NODE_11, 1, 1, CLOCK_2VF, 1.0, 0, 0.5, &dkong_lfsr)
- // Clear (1) from SOUND6
- DISCRETE_COUNTER(NODE_12, 1, DS_SOUND6_INV, NODE_11, 15, DISC_COUNT_UP, 0, DISC_CLK_ON_R_EDGE) // LS161, IC 3J
- DISCRETE_TRANSFORM3(NODE_13,1,NODE_12,0x04,DK_SUP_V,"01&1=2*") //QC => SND02
- DISCRETE_TRANSFORM3(NODE_14,1,NODE_12,0x02,DK_SUP_V,"01&1=2*") //QB => SND01
+ /* Clear (1) from SOUND6 */
+ DISCRETE_COUNTER(NODE_12, 1, DS_SOUND6_INV, NODE_11, 15, DISC_COUNT_UP, 0, DISC_CLK_ON_R_EDGE) /* LS161, IC 3J */
+ DISCRETE_TRANSFORM3(NODE_13,1,NODE_12,0x04,DK_SUP_V,"01&1=2*") /*QC => SND02 */
+ DISCRETE_TRANSFORM3(NODE_14,1,NODE_12,0x02,DK_SUP_V,"01&1=2*") /*QB => SND01 */
/************************************************/
/* SOUND2 */
@@ -567,11 +551,11 @@ static DISCRETE_SOUND_START(radarscp)
/* C21 is discharged via Q5 BE */
DISCRETE_RCDISC_MODULATED(NODE_16,1,DS_SOUND2_INV,0,RS_R_NN01,0,0,RS_R9*2,RS_C20,DK_SUP_V)
- DISCRETE_TRANSFORM2(NODE_17, 1, NODE_16, 0.6, "01>") // TR2
+ DISCRETE_TRANSFORM2(NODE_17, 1, NODE_16, 0.6, "01>") /* TR2 */
DISCRETE_RCDISC2(NODE_18,NODE_17,DK_SUP_V,RS_R8+RS_R7,0.0,RS_R7,RS_C19)
- DISCRETE_DIODE_MIXER2(NODE_19, 1, DK_1N5553_V, NODE_13, NODE_13) // D3
- DISCRETE_DIODE_MIXER2(NODE_20, 1, DK_1N5553_V, NODE_18, NODE_19) // D1, D2
+ DISCRETE_DIODE_MIXER2(NODE_19, 1, DK_1N5553_V, NODE_13, NODE_13) /* D3 */
+ DISCRETE_DIODE_MIXER2(NODE_20, 1, DK_1N5553_V, NODE_18, NODE_19) /* D1, D2 */
DISCRETE_RCINTEGRATE(NODE_22,1,NODE_20,RS_R5, R_PARALLEL(RS_R4+RS_R3,RS_R6),0,RS_C18,DK_SUP_V,DISC_RC_INTEGRATE_TYPE1)
DISCRETE_MULTIPLY(DS_OUT_SOUND2,1,NODE_22,RS_R3/R_SERIE(RS_R3,RS_R4))
@@ -583,11 +567,11 @@ static DISCRETE_SOUND_START(radarscp)
/* C21 is discharged via Q5 BE */
DISCRETE_RCDISC_MODULATED(NODE_26,1,DS_SOUND1_INV,0,RS_R_NN02,0,0,RS_R32,RS_C31,DK_SUP_V)
- DISCRETE_TRANSFORM2(NODE_27, 1, NODE_26, 0.6, "01>") // TR5
+ DISCRETE_TRANSFORM2(NODE_27, 1, NODE_26, 0.6, "01>") /* TR5 */
DISCRETE_RCDISC2(NODE_28,NODE_27,DK_SUP_V,RS_R31+RS_R30,0.0,RS_R30,RS_C30)
- DISCRETE_DIODE_MIXER2(NODE_29, 1, DK_1N5553_V, NODE_14, NODE_14) // D3
- DISCRETE_DIODE_MIXER2(NODE_30, 1, DK_1N5553_V, NODE_28, NODE_29) // D1, D2
+ DISCRETE_DIODE_MIXER2(NODE_29, 1, DK_1N5553_V, NODE_14, NODE_14) /* D3 */
+ DISCRETE_DIODE_MIXER2(NODE_30, 1, DK_1N5553_V, NODE_28, NODE_29) /* D1, D2 */
DISCRETE_RCINTEGRATE(NODE_31,1,NODE_30,RS_R28, R_PARALLEL(RS_R27+RS_R26,RS_R29),0,RS_C29,DK_SUP_V,DISC_RC_INTEGRATE_TYPE1)
DISCRETE_MULTIPLY(DS_OUT_SOUND1,1,NODE_31,RS_R26/R_SERIE(RS_R26,RS_R27))
@@ -627,8 +611,8 @@ static DISCRETE_SOUND_START(radarscp)
/* DAC */
/************************************************/
/* Signal decay circuit Q7, R20, C32 */
- DISCRETE_RCDISC(NODE_170, DS_DAC_DISCHARGE, 1, RS_R40, RS_C40)
- DISCRETE_TRANSFORM4(NODE_171, 1, DS_DAC, DK_SUP_V/256.0, NODE_170, DS_DAC_DISCHARGE, "01*3!2+*")
+ DISCRETE_RCDISC(NODE_170, DS_DISCHARGE_INV, 1, RS_R40, RS_C40)
+ DISCRETE_TRANSFORM4(NODE_171, 1, DS_DAC, DK_SUP_V/256.0, NODE_170, DS_DISCHARGE_INV, "01*3!2+*")
/* following the DAC are two opamps. The first is a current-to-voltage changer
* for the DAC08 which delivers a variable output current.
@@ -649,7 +633,7 @@ static DISCRETE_SOUND_START(radarscp)
DISCRETE_MIXER5(NODE_288, 1, DS_OUT_SOUND0, DS_OUT_SOUND1, DS_OUT_SOUND2, DS_OUT_SOUND7, DS_OUT_DAC, &radarscp_mixer_desc)
- // Amplifier: internal amplifier
+ /* Amplifier: internal amplifier */
DISCRETE_ADDER2(NODE_289,1,NODE_288,5.0*43.0/(100.0+43.0))
DISCRETE_RCINTEGRATE(NODE_294,1,NODE_289,0,150,1000, CAP_U(33),DK_SUP_V,DISC_RC_INTEGRATE_TYPE3)
DISCRETE_CRFILTER(NODE_295,1,NODE_294, 1000, DK_C13)
@@ -689,7 +673,7 @@ DISCRETE_SOUND_END
#define JR_C14 CAP_U(4.7)
#define JR_C15 CAP_U(22)
#define JR_C16 CAP_U(3.3)
-#define JR_C17 CAP_U(3.3) // ??? illegible
+#define JR_C17 CAP_U(3.3) /* ??? illegible */
#define JR_C18 CAP_N(22)
#define JR_C19 CAP_N(4.7)
#define JR_C20 CAP_U(0.12)
@@ -726,8 +710,8 @@ DISCRETE_SOUND_END
static const discrete_mixer_desc dkongjr_mixer_desc =
{DISC_MIXER_IS_RESISTOR,
{JR_R5, JR_R3, JR_R6, JR_R4, JR_R25},
- {0,0,0,0,0}, // no variable resistors
- {0,0,0,0,0}, // no node capacitors
+ {0,0,0,0,0}, /* no variable resistors */
+ {0,0,0,0,0}, /* no node capacitors */
0, 0,
JR_C155,
JR_C161,
@@ -736,9 +720,9 @@ static const discrete_mixer_desc dkongjr_mixer_desc =
static const discrete_mixer_desc dkongjr_s1_mixer_desc =
{DISC_MIXER_IS_RESISTOR,
{JR_R13, JR_R12},
- {0,0}, // no variable resistors
- {0,0}, // no node capacitors
- 0, RES_K(90), // Internal LS624 resistors ...
+ {0,0}, /* no variable resistors */
+ {0,0}, /* no node capacitors */
+ 0, RES_K(90), /* Internal LS624 resistors ... */
JR_C24,
0,
0, 1};
@@ -771,7 +755,7 @@ static DISCRETE_SOUND_START(dkongjr)
DISCRETE_INPUT_NOT(DS_SOUND6_INV)
DISCRETE_INPUT_NOT(DS_SOUND7_INV)
DISCRETE_INPUT_NOT(DS_SOUND9_INV)
- DISCRETE_INPUT_LOGIC(DS_DAC_DISCHARGE)
+ DISCRETE_INPUT_NOT(DS_DISCHARGE_INV)
DISCRETE_INPUT_DATA(DS_DAC)
/************************************************/
@@ -827,15 +811,15 @@ static DISCRETE_SOUND_START(dkongjr)
DISCRETE_COUNTER(NODE_100,1,0,NODE_118,0xFFFF,DISC_COUNT_UP,0,DISC_CLK_BY_COUNT)
- DISCRETE_BITSET(NODE_101, NODE_100, 7) //LS157 2A
- DISCRETE_BITSET(NODE_102, NODE_100, 4) //LS157 2B
- DISCRETE_BITSET(NODE_103, NODE_100, 13) //LS157 3A
- DISCRETE_BITSET(NODE_104, NODE_100, 12) //LS157 3B
+ DISCRETE_BITSET(NODE_101, NODE_100, 7) /*LS157 2A */
+ DISCRETE_BITSET(NODE_102, NODE_100, 4) /*LS157 2B */
+ DISCRETE_BITSET(NODE_103, NODE_100, 13) /*LS157 3A */
+ DISCRETE_BITSET(NODE_104, NODE_100, 12) /*LS157 3B */
/* LS157 Switches */
- DISCRETE_SWITCH(NODE_105, 1, DS_SOUND7_INV, GND, NODE_113) // Switch 1 from LS624
- DISCRETE_SWITCH(NODE_106, 1, DS_SOUND7_INV, NODE_101, NODE_102) // Switch 2
- DISCRETE_SWITCH(NODE_107, 1, DS_SOUND7_INV, NODE_103, NODE_104) // Switch 3
+ DISCRETE_SWITCH(NODE_105, 1, DS_SOUND7_INV, GND, NODE_113) /* Switch 1 from LS624 */
+ DISCRETE_SWITCH(NODE_106, 1, DS_SOUND7_INV, NODE_101, NODE_102) /* Switch 2 */
+ DISCRETE_SWITCH(NODE_107, 1, DS_SOUND7_INV, NODE_103, NODE_104) /* Switch 3 */
DISCRETE_LS123(NODE_110, DS_SOUND0_INV, JR_R8, JR_C14)
DISCRETE_TRANSFORM2(NODE_111, 1, TTL_HIGH, NODE_110, "01-")
@@ -855,8 +839,8 @@ static DISCRETE_SOUND_START(dkongjr)
/* DAC */
/************************************************/
/* Signal decay circuit Q7, R20, C32 */
- DISCRETE_RCDISC(NODE_170, DS_DAC_DISCHARGE, 1, JR_R20, JR_C32)
- DISCRETE_TRANSFORM4(NODE_171, 1, DS_DAC, DK_SUP_V/256.0, NODE_170, DS_DAC_DISCHARGE, "01*3!2+*")
+ DISCRETE_RCDISC(NODE_170, DS_DISCHARGE_INV, 1, JR_R20, JR_C32)
+ DISCRETE_TRANSFORM4(NODE_171, 1, DS_DAC, DK_SUP_V/256.0, NODE_170, DS_DISCHARGE_INV, "01*3!2+*")
/* following the DAC are two opamps. The first is a current-to-voltage changer
* for the DAC08 which delivers a variable output current.
@@ -889,35 +873,7 @@ DISCRETE_SOUND_END
*
****************************************************************/
-static SOUND_START( dkong )
-{
- dkong_state *state = machine->driver_data;
- state_save_register_global(state->page);
- state_save_register_global(state->mcustatus);
- state_save_register_global(state->portT);
-}
-
-static SOUND_RESET( dkong )
-{
- dkong_state *state = machine->driver_data;
-
- state->mcustatus = 0;
- state->page = 0x47;
- state->portT = 0;
-
- I8035_T_W_AL(machine,0,0);
- I8035_T_W_AL(machine,1,0);
- I8035_P1_W(machine,0xFF);
- I8035_P2_W(machine,0xFF);
- soundlatch_w(machine,0,0x0F);
-}
-
-static SOUND_RESET( dkongjr )
-{
- SOUND_RESET_CALL(dkong);
- soundlatch_w(machine,0,0x00);
-}
/****************************************************************
*
@@ -1013,39 +969,18 @@ Addresses found at @0x510, cpu2
static WRITE8_HANDLER( M58817_command_w )
{
- logerror("PA Write %x\n", data);
-
tms5110_ctl_w(machine, 0, data & 0x0f);
tms5110_pdc_w(machine, 0, (data>>4) & 0x01);
- // FIXME 0x20 is CS
+ /* FIXME 0x20 is CS */
}
+
/****************************************************************
*
* I/O Handlers - static
*
****************************************************************/
-static READ8_HANDLER( dkong_sh_p1_r )
-{
- return I8035_P1_R(machine);
-}
-
-static READ8_HANDLER( dkong_sh_p2_r )
-{
- return I8035_P2_R(machine);
-}
-
-static READ8_HANDLER( dkong_sh_t0_r )
-{
- return I8035_T_R(machine,0);
-}
-
-static READ8_HANDLER( dkong_sh_t1_r )
-{
- return I8035_T_R(machine,1);
-}
-
static WRITE8_HANDLER( dkong_voice_w )
{
/* only provided for documentation purposes
@@ -1062,84 +997,35 @@ static READ8_HANDLER( dkong_voice_status_r )
return 0;
}
-static READ8_HANDLER( dkong_sh_tune_r )
+static READ8_DEVICE_HANDLER( dkong_tune_r )
{
- dkong_state *state = machine->driver_data;
- UINT8 *SND = memory_region(machine, "sound");
+ const device_config *devvp2 = devtag_get_device(device->machine, LATCH8, "virtual_p2");
+ UINT8 *snd_rom = memory_region(device->machine, "sound");
+ UINT8 page = latch8_r(devvp2,0) & 0x47;
- if ( state->page & 0x40 )
+ if ( page & 0x40 )
{
- return (soundlatch_r(machine,0) & 0x0F) | (dkong_voice_status_r(machine,0)<<4);
+ return (latch8_r(device, 0) & 0x0F) | (dkong_voice_status_r(device->machine,0)<<4);
}
else
{
/* printf("rom access at pc = %4x\n",activecpu_get_pc()); */
- return (SND[0x1000+(state->page & 7)*256+offset]);
+ return (snd_rom[0x1000+(page & 7)*256+offset]);
}
}
-static READ8_HANDLER( dkongjr_sh_tune_r )
-{
- return soundlatch_r(machine,0) & 0x01F;
-}
-
-static WRITE8_HANDLER( dkong_sh_p1_w )
+static WRITE8_HANDLER( dkong_p1_w )
{
discrete_sound_w(machine,DS_DAC,data);
}
-static READ8_HANDLER( radarsc1_sh_p1_r )
-{
- int r;
-
- r = (I8035_P1_R(machine) & 0x80) | (tms5110_status_r(machine,0)<<6);
- return r;
-}
-
-static WRITE8_HANDLER( dkong_sh_p2_w )
-{
- dkong_state *state = machine->driver_data;
-
- /* If P2.Bit7 -> is apparently an external signal decay or other output control
- * If P2.Bit6 -> activates the external compressed sample ROM (not radarsc1)
- * If P2.Bit5 -> Signal ANSN ==> Grid enable (radarsc1)
- * If P2.Bit4 -> status code to main cpu
- * P2.Bit2-0 -> select the 256 byte bank for external ROM
- */
-
- state->mcustatus = ((~data & 0x10) >> 4);
- radarsc1_ansn_w(machine, 0, (data & 0x20) >> 5);
- state->page = (data & 0x47);
-
- discrete_sound_w(machine,DS_DAC_DISCHARGE, (data & 0x80) ? 0 : 1 );
-}
-
-
/****************************************************************
*
* I/O Handlers - global
*
****************************************************************/
-WRITE8_HANDLER( dkongjr_sh_test6_w )
-{
- I8035_P2_W_AL(machine,6,data & 1);
-}
-
-
-WRITE8_HANDLER( dkongjr_sh_tuneselect_w )
-{
- soundlatch_w(machine,offset,data);
-}
-
-READ8_HANDLER( dkong_audio_status_r )
-{
- dkong_state *state = machine->driver_data;
-
- return state->mcustatus;
-}
-
WRITE8_HANDLER( dkong_audio_irq_w )
{
if (data)
@@ -1148,92 +1034,6 @@ WRITE8_HANDLER( dkong_audio_irq_w )
cpunum_set_input_line(machine, 1, 0, CLEAR_LINE);
}
-WRITE8_HANDLER( dkong_snd_disc_w )
-{
- dkong_state *state = machine->driver_data;
-
- switch (offset)
- {
- case 0:
- discrete_sound_w(machine,DS_SOUND0_INP,data & 1);
- break;
- case 1:
- discrete_sound_w(machine,DS_SOUND1_INP,data & 1);
- break;
- case 2:
- discrete_sound_w(machine,DS_SOUND2_INP,data & 1);
- radarscp_snd02_w(machine, 0, data & 1);
- break;
- case 3:
- if (state->hardware_type == HARDWARE_TRS01)
- //SOUND3 ==> PA7
- I8035_P1_W_AL(machine,7,data & 1);
- else
- I8035_P2_W_AL(machine,5,data & 1);
- break;
- case 4:
- I8035_T_W_AL(machine, 1, data & 1);
- break;
- case 5:
- I8035_T_W_AL(machine, 0, data & 1);
- break;
- case 6:
- discrete_sound_w(machine,DS_SOUND6_INP,data & 1);
- break;
- case 7:
- discrete_sound_w(machine,DS_SOUND7_INP,data & 1);
- break;
- }
- return;
-}
-
-WRITE8_HANDLER( dkong_sh_tuneselect_w )
-{
- soundlatch_w(machine,offset,data ^ 0x0f);
-}
-
-WRITE8_HANDLER( dkongjr_snd_w1 )
-{
- dkong_state *state = machine->driver_data;
-
- switch (offset)
- {
- case 0: /* climb */
- discrete_sound_w(machine,DS_SOUND0_INP,data & 1);
- break;
- case 1: /* jump */
- discrete_sound_w(machine,DS_SOUND1_INP,data & 1);
- break;
- case 2: /* land */
- discrete_sound_w(machine,DS_SOUND2_INP,data & 1);
- break;
- case 3: /* Port 3 write ==> PB 5 */
- I8035_P2_W_AL(machine,5,data & 1);
- break;
- case 4: /* Port 4 write */
- I8035_T_W_AL(machine,1, data & 1);
- break;
- case 5: /* Port 5 write */
- I8035_T_W_AL(machine,0, data & 1);
- break;
- case 6: /* Port 6 write ==> PB 4 */
- I8035_P2_W_AL(machine,4,data & 1);
- break;
- case 7: /* walk */
- discrete_sound_w(machine,DS_SOUND7_INP,data & 1);
- break;
- }
-}
-
-WRITE8_HANDLER( dkongjr_snd_w2 )
-{
- switch (offset)
- {
- case 0: /* S9 - drop */
- discrete_sound_w(machine,DS_SOUND9_INP,data & 1);
- break;
- }
-}
/*************************************
*
@@ -1246,35 +1046,38 @@ static ADDRESS_MAP_START( dkong_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( dkong_sound_io_map, ADDRESS_SPACE_IO, 8 )
- AM_RANGE(0x00, 0xff) AM_READWRITE(dkong_sh_tune_r, dkong_voice_w)
- AM_RANGE(I8039_bus, I8039_bus) AM_READWRITE(dkong_sh_tune_r, dkong_voice_w)
- AM_RANGE(I8039_p1, I8039_p1) AM_READWRITE(dkong_sh_p1_r, dkong_sh_p1_w)
- AM_RANGE(I8039_p2, I8039_p2) AM_READWRITE(dkong_sh_p2_r, dkong_sh_p2_w)
- AM_RANGE(I8039_t0, I8039_t0) AM_READ(dkong_sh_t0_r)
- AM_RANGE(I8039_t1, I8039_t1) AM_READ(dkong_sh_t1_r)
+ AM_RANGE(0x00, 0xFF) AM_DEVREAD(LATCH8, "ls175.3d", dkong_tune_r)
+ AM_WRITE(dkong_voice_w)
+ AM_RANGE(I8039_bus, I8039_bus) AM_DEVREAD(LATCH8, "ls175.3d", dkong_tune_r)
+ AM_WRITE(dkong_voice_w)
+ AM_RANGE(I8039_p1, I8039_p1) AM_WRITE(dkong_p1_w) /* only write to dac */
+ AM_RANGE(I8039_p2, I8039_p2) AM_LATCH8_READWRITE("virtual_p2")
+ AM_RANGE(I8039_t0, I8039_t0) AM_LATCH8_READBIT("ls259.6h", 5)
+ AM_RANGE(I8039_t1, I8039_t1) AM_LATCH8_READBIT("ls259.6h", 4)
ADDRESS_MAP_END
static ADDRESS_MAP_START( dkongjr_sound_io_map, ADDRESS_SPACE_IO, 8 )
- AM_RANGE(0x00, 0xff) AM_READ(dkongjr_sh_tune_r)
- AM_RANGE(I8039_p1, I8039_p1) AM_READWRITE(dkong_sh_p1_r, dkong_sh_p1_w)
- AM_RANGE(I8039_p2, I8039_p2) AM_READWRITE(dkong_sh_p2_r, dkong_sh_p2_w)
- AM_RANGE(I8039_t0, I8039_t0) AM_READ(dkong_sh_t0_r)
- AM_RANGE(I8039_t1, I8039_t1) AM_READ(dkong_sh_t1_r)
+ AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_LATCH8_READ("ls174.3d")
+ AM_RANGE(I8039_p1, I8039_p1) AM_WRITE(dkong_p1_w) /* only write to dac */
+ AM_RANGE(I8039_p2, I8039_p2) AM_LATCH8_READWRITE("virtual_p2")
+ AM_RANGE(I8039_t0, I8039_t0) AM_LATCH8_READBIT("ls259.6h", 5)
+ AM_RANGE(I8039_t1, I8039_t1) AM_LATCH8_READBIT("ls259.6h", 4)
ADDRESS_MAP_END
static ADDRESS_MAP_START( radarsc1_sound_io_map, ADDRESS_SPACE_IO, 8 )
- AM_RANGE(0x00, 0xff) AM_READ(soundlatch_r)
- AM_RANGE(0x00, 0xff) AM_WRITE(dkong_sh_p1_w) // DAC here
- AM_RANGE(I8039_p1, I8039_p1) AM_READWRITE(radarsc1_sh_p1_r, M58817_command_w)
- AM_RANGE(I8039_p2, I8039_p2) AM_READWRITE(dkong_sh_p2_r, dkong_sh_p2_w)
- AM_RANGE(I8039_t0, I8039_t0) AM_READ(dkong_sh_t0_r)
- AM_RANGE(I8039_t1, I8039_t1) AM_READ(dkong_sh_t1_r)
+ AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_DEVREAD(LATCH8, "ls175.3d", latch8_r)
+ AM_RANGE(0x00, 0xff) AM_WRITE(dkong_p1_w) /* DAC here */
+ AM_RANGE(I8039_p1, I8039_p1) AM_LATCH8_READ("virtual_p1")
+ AM_WRITE(M58817_command_w)
+ AM_RANGE(I8039_p2, I8039_p2) AM_LATCH8_WRITE("virtual_p2")
+ AM_RANGE(I8039_t0, I8039_t0) AM_LATCH8_READBIT("ls259.6h", 5)
+ AM_RANGE(I8039_t1, I8039_t1) AM_LATCH8_READBIT("ls259.6h", 4)
ADDRESS_MAP_END
static ADDRESS_MAP_START( dkong3_sound1_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x4016, 0x4016) AM_READ(soundlatch_r) // overwrite default
- AM_RANGE(0x4017, 0x4017) AM_READ(soundlatch2_r)
+ AM_RANGE(0x4016, 0x4016) AM_LATCH8_READ("latch1") /* overwrite default */
+ AM_RANGE(0x4017, 0x4017) AM_LATCH8_READ("latch2")
AM_RANGE(0x4000, 0x4017) AM_READ(nes_psg_0_r)
AM_RANGE(0x4000, 0x4017) AM_WRITE(nes_psg_0_w)
AM_RANGE(0xe000, 0xffff) AM_ROM
@@ -1282,7 +1085,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( dkong3_sound2_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x4016, 0x4016) AM_READ(soundlatch3_r) // overwrite default
+ AM_RANGE(0x4016, 0x4016) AM_LATCH8_READ("latch3") /* overwrite default */
AM_RANGE(0x4000, 0x4017) AM_READ(nes_psg_1_r)
AM_RANGE(0x4000, 0x4017) AM_WRITE(nes_psg_1_w)
AM_RANGE(0xe000, 0xffff) AM_ROM
@@ -1305,13 +1108,35 @@ static const nes_interface nes_interface_2 = { "n2a03b" };
MACHINE_DRIVER_START( dkong2b_audio )
+ /* sound latches */
+
+ MDRV_LATCH8_ADD("ls175.3d")
+ MDRV_LATCH8_MASK(0xf0)
+ MDRV_LATCH8_INVERT(0x0F)
+
+ MDRV_LATCH8_ADD("ls259.6h")
+ MDRV_LATCH8_DISCRETE_NODE(0, DS_SOUND0_INP)
+ MDRV_LATCH8_DISCRETE_NODE(1, DS_SOUND1_INP)
+ MDRV_LATCH8_DISCRETE_NODE(2, DS_SOUND2_INP)
+ MDRV_LATCH8_DISCRETE_NODE(6, DS_SOUND6_INP)
+ MDRV_LATCH8_DISCRETE_NODE(7, DS_SOUND7_INP)
+
+ /* If P2.Bit7 -> is apparently an external signal decay or other output control
+ * If P2.Bit6 -> activates the external compressed sample ROM (not radarsc1)
+ * If P2.Bit5 -> Signal ANSN ==> Grid enable (radarsc1)
+ * If P2.Bit4 -> status code to main cpu
+ * P2.Bit2-0 -> select the 256 byte bank for external ROM
+ */
+
+ MDRV_LATCH8_ADD( "virtual_p2" ) /* virtual latch for port B */
+ MDRV_LATCH8_INVERT( 0x20 ) /* signal is inverted */
+ MDRV_LATCH8_DEVREAD(5, LATCH8, "ls259.6h", latch8_r, 3)
+ MDRV_LATCH8_DISCRETE_NODE(7, DS_DISCHARGE_INV)
+
MDRV_CPU_ADD("sound", I8035,I8035_CLOCK)
MDRV_CPU_PROGRAM_MAP(dkong_sound_map,0)
MDRV_CPU_IO_MAP(dkong_sound_io_map, 0)
- MDRV_SOUND_START(dkong)
- MDRV_SOUND_RESET(dkong)
-
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("discrete", DISCRETE, 0)
MDRV_SOUND_CONFIG_DISCRETE(dkong2b)
@@ -1334,6 +1159,12 @@ MACHINE_DRIVER_START( radarsc1_audio )
MDRV_IMPORT_FROM( radarscp_audio )
MDRV_CPU_MODIFY("sound")
MDRV_CPU_IO_MAP(radarsc1_sound_io_map, 0)
+
+ /* virtual_p2 is not used here */
+ MDRV_LATCH8_ADD( "virtual_p1" ) /* virtual latch for port A */
+ MDRV_LATCH8_INVERT( 0x80 ) /* signal is inverted */
+ MDRV_LATCH8_DEVREAD(7, LATCH8, "ls259.6h", latch8_r, 3)
+ MDRV_LATCH8_READ(6, tms5110_status_r, 0)
MDRV_SOUND_ADD("tms", M58817, XTAL_640kHz)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@@ -1342,13 +1173,33 @@ MACHINE_DRIVER_END
MACHINE_DRIVER_START( dkongjr_audio )
+ /* sound latches */
+
+ MDRV_LATCH8_ADD("ls174.3d")
+ MDRV_LATCH8_MASK(0xE0)
+
+ MDRV_LATCH8_ADD( "ls259.6h")
+ MDRV_LATCH8_DISCRETE_NODE(0, DS_SOUND0_INP)
+ MDRV_LATCH8_DISCRETE_NODE(1, DS_SOUND1_INP)
+ MDRV_LATCH8_DISCRETE_NODE(2, DS_SOUND2_INP)
+ MDRV_LATCH8_DISCRETE_NODE(7, DS_SOUND7_INP)
+
+ MDRV_LATCH8_ADD( "ls259.5h")
+ MDRV_LATCH8_DISCRETE_NODE(1, DS_SOUND9_INP)
+
+ MDRV_LATCH8_ADD( "ls259.4h")
+
+ MDRV_LATCH8_ADD( "virtual_p2" ) /* virtual latch for port B */
+ MDRV_LATCH8_INVERT( 0x70 ) /* all signals are inverted */
+ MDRV_LATCH8_DEVREAD(6, LATCH8, "ls259.4h", latch8_r, 1)
+ MDRV_LATCH8_DEVREAD(5, LATCH8, "ls259.6h", latch8_r, 3)
+ MDRV_LATCH8_DEVREAD(4, LATCH8, "ls259.6h", latch8_r, 6)
+ MDRV_LATCH8_DISCRETE_NODE(7, DS_DISCHARGE_INV)
+
MDRV_CPU_ADD("sound", I8035,I8035_CLOCK)
MDRV_CPU_PROGRAM_MAP(dkong_sound_map,0)
MDRV_CPU_IO_MAP(dkongjr_sound_io_map, 0)
- MDRV_SOUND_START(dkong)
- MDRV_SOUND_RESET(dkongjr)
-
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("discrete", DISCRETE, 0)
@@ -1367,6 +1218,11 @@ MACHINE_DRIVER_START( dkong3_audio )
MDRV_CPU_PROGRAM_MAP(dkong3_sound2_map, 0)
MDRV_CPU_VBLANK_INT("main", nmi_line_pulse)
+ /* sound latches */
+ MDRV_LATCH8_ADD( "latch1")
+ MDRV_LATCH8_ADD( "latch2")
+ MDRV_LATCH8_ADD( "latch3")
+
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("nes1", NES, N2A03_DEFAULTCLOCK)
MDRV_SOUND_CONFIG(nes_interface_1)
diff --git a/src/mame/drivers/dkong.c b/src/mame/drivers/dkong.c
index 956654a9fd8..b02b498f8d3 100644
--- a/src/mame/drivers/dkong.c
+++ b/src/mame/drivers/dkong.c
@@ -304,6 +304,7 @@ Donkey Kong Junior Notes
#include "includes/dkong.h"
#include "machine/8257dma.h"
#include "machine/z80dma.h"
+#include "machine/latch8.h"
/*************************************
*
@@ -471,6 +472,7 @@ static MACHINE_RESET( drakton )
memory_set_bank(1, 1);
}
+
/*************************************
*
* DMA handling
@@ -562,27 +564,29 @@ static WRITE8_DEVICE_HANDLER( p8257_drq_w )
static READ8_HANDLER( dkong_in2_r )
{
+ /* mcu status (sound feedback) is inverted bit4 from port B (8039) */
+ const device_config *devvp2 = devtag_get_device(machine, LATCH8, "virtual_p2");
+ UINT8 mcustatus = latch8_bit4_q_r(devvp2, 0);
+
UINT8 r;
-#if DEBUG_DISC_SOUND
- static UINT8 ui_snd = 0;
- static UINT8 lst = 0;
- if (!lst && (input_port_read(machine, "TST") & 0x01))
- {
- ui_snd = (ui_snd + 1) % 10;
- popmessage("Sound %d", ui_snd);
- }
- lst = input_port_read(machine, "TST") & 0x01;
- if (ui_snd<8)
- dkongjr_snd_w1(ui_snd, (input_port_read(machine, "TST") & 0x02)>>1);
- else
- dkongjr_snd_w2(ui_snd-8, (input_port_read(machine, "TST") & 0x02)>>1);
-#endif
+ r = (input_port_read(machine, "IN2") & 0xBF) | (mcustatus << 6);
+ coin_counter_w(offset, r >> 7);
+ if (r & 0x10)
+ r = (r & ~0x10) | 0x80; /* service ==> coin */
+ return r;
+}
+
+static READ8_HANDLER( dkongjr_in2_r )
+{
+ /* dkongjr does not have the mcu line connected */
- r = (input_port_read(machine, "IN2") & 0xBF) | (dkong_audio_status_r(machine,0) << 6);
+ UINT8 r;
+
+ r = (input_port_read(machine, "IN2") & 0xBF) | 0x40;
coin_counter_w(offset, r >> 7);
if (r & 0x10)
- r = (r & ~0x10) | 0x80; /* service ==> coint */
+ r = (r & ~0x10) | 0x80; /* service ==> coin */
return r;
}
@@ -596,6 +600,7 @@ static READ8_HANDLER( hunchbkd_mirror_r )
return data;
}
+
static WRITE8_HANDLER( hunchbkd_mirror_w )
{
#if DEBUG_PROTECTION
@@ -605,6 +610,7 @@ static WRITE8_HANDLER( hunchbkd_mirror_w )
program_write_byte(0x1000+offset,data);
}
+
static READ8_HANDLER( epos_decrypt_rom )
{
dkong_state *state = machine->driver_data;
@@ -634,6 +640,7 @@ static READ8_HANDLER( epos_decrypt_rom )
return 0;
}
+
static WRITE8_HANDLER( hunchbkd_data_w )
{
dkong_state *state = machine->driver_data;
@@ -641,6 +648,7 @@ static WRITE8_HANDLER( hunchbkd_data_w )
state->hunchloopback = data;
}
+
static READ8_HANDLER( hunchbkd_port0_r )
{
dkong_state *state = machine->driver_data;
@@ -658,6 +666,7 @@ static READ8_HANDLER( hunchbkd_port0_r )
return 0;
}
+
static READ8_HANDLER( hunchbkd_port1_r )
{
dkong_state *state = machine->driver_data;
@@ -665,6 +674,7 @@ static READ8_HANDLER( hunchbkd_port1_r )
return state->hunchloopback;
}
+
static READ8_HANDLER( herbiedk_port1_r )
{
switch (activecpu_get_pc())
@@ -676,12 +686,13 @@ static READ8_HANDLER( herbiedk_port1_r )
return 1;
}
+
static READ8_HANDLER( spclforc_port0_r )
{
switch (activecpu_get_pc())
{
- case 0x00a3: // spclforc
- case 0x007b: // spcfrcii
+ case 0x00a3: /* spclforc */
+ case 0x007b: /* spcfrcii */
return 1;
}
@@ -738,6 +749,7 @@ static READ8_HANDLER( strtheat_inputport_0_r )
}
}
+
static READ8_HANDLER( strtheat_inputport_1_r )
{
if(input_port_read(machine, "DSW0") & 0x40)
@@ -767,10 +779,12 @@ static ADDRESS_MAP_START( dkong_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w)
AM_BASE_MEMBER(dkong_state, video_ram)
AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE(DMA8257, "dma8257", dma8257_r, dma8257_w) /* P8257 control registers */
- AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_WRITE(dkong_sh_tuneselect_w) /* IN0, sound CPU intf */
+ AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_LATCH8_WRITE("ls175.3d") /* IN0, sound CPU intf */
AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(radarscp_grid_color_w) /* IN1 */
+
AM_RANGE(0x7d00, 0x7d00) AM_READ(dkong_in2_r) /* IN2 */
- AM_RANGE(0x7d00, 0x7d07) AM_WRITE(dkong_snd_disc_w) /* Sound signals */
+ AM_RANGE(0x7d00, 0x7d07) AM_DEVWRITE(LATCH8, "ls259.6h", latch8_bit0_w) /* Sound signals */
+
AM_RANGE(0x7d80, 0x7d80) AM_READ_PORT("DSW0") AM_WRITE(dkong_audio_irq_w) /* DSW0 */
AM_RANGE(0x7d81, 0x7d81) AM_WRITE(radarscp_grid_enable_w)
AM_RANGE(0x7d82, 0x7d82) AM_WRITE(dkong_flipscreen_w)
@@ -789,18 +803,23 @@ static ADDRESS_MAP_START( dkongjr_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w)
AM_BASE_MEMBER(dkong_state, video_ram)
AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE(DMA8257, "dma8257", dma8257_r, dma8257_w) /* P8257 control registers */
- AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_WRITE(dkongjr_sh_tuneselect_w)
+
+ AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_LATCH8_WRITE("ls174.3d") /* IN0, sound interface */
+
AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(dkongjr_gfxbank_w)
- AM_RANGE(0x7c81, 0x7c81) AM_WRITE(dkongjr_sh_test6_w)
- AM_RANGE(0x7d00, 0x7d00) AM_READ(dkong_in2_r) /* IN2 */
- AM_RANGE(0x7d00, 0x7d07) AM_WRITE(dkongjr_snd_w1) /* Sound addrs */
+ AM_RANGE(0x7c80, 0x7c87) AM_DEVWRITE(LATCH8, "ls259.4h", latch8_bit0_w) /* latch for sound and signals above */
+
+ AM_RANGE(0x7d00, 0x7d00) AM_READ(dkongjr_in2_r) /* IN2 */
+ AM_RANGE(0x7d00, 0x7d07) AM_DEVWRITE(LATCH8, "ls259.6h",latch8_bit0_w) /* Sound addrs */
+
AM_RANGE(0x7d80, 0x7d80) AM_READ_PORT("DSW0") AM_WRITE(dkong_audio_irq_w) /* DSW0 */
- AM_RANGE(0x7d81, 0x7d81) AM_WRITE(dkongjr_snd_w2) /* Sound addrs */
AM_RANGE(0x7d82, 0x7d82) AM_WRITE(dkong_flipscreen_w)
AM_RANGE(0x7d83, 0x7d83) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */
AM_RANGE(0x7d84, 0x7d84) AM_WRITE(interrupt_enable_w)
AM_RANGE(0x7d85, 0x7d85) AM_DEVWRITE(DMA8257, "dma8257", p8257_drq_w) /* P8257 ==> /DRQ0 /DRQ1 */
AM_RANGE(0x7d86, 0x7d87) AM_WRITE(dkong_palettebank_w)
+ AM_RANGE(0x7d80, 0x7d87) AM_DEVWRITE(LATCH8, "ls259.5h", latch8_bit0_w) /* latch for sound and signals above*/
+
AM_RANGE(0x8000, 0x9fff) AM_ROM /* bootleg DKjr only */
AM_RANGE(0xb000, 0xbfff) AM_ROM /* pestplce only */
AM_RANGE(0xd000, 0xdfff) AM_ROM /* DK3 bootleg only */
@@ -814,18 +833,18 @@ static ADDRESS_MAP_START( dkong3_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_SIZE_MEMBER(dkong_state, sprite_ram_size) /* sprite set 1 */
AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w)
AM_BASE_MEMBER(dkong_state, video_ram)
- AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_WRITE(soundlatch_w)
- AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(soundlatch2_w)
- AM_RANGE(0x7d00, 0x7d00) AM_READ_PORT("DSW0") AM_WRITE(soundlatch3_w)
+ AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_LATCH8_WRITE("latch1")
+ AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_LATCH8_WRITE("latch2")
+ AM_RANGE(0x7d00, 0x7d00) AM_READ_PORT("DSW0") AM_LATCH8_WRITE("latch3")
AM_RANGE(0x7d80, 0x7d80) AM_READ_PORT("DSW1") AM_WRITE(dkong3_2a03_reset_w)
AM_RANGE(0x7e80, 0x7e80) AM_WRITE(dkong3_coin_counter_w)
AM_RANGE(0x7e81, 0x7e81) AM_WRITE(dkong3_gfxbank_w)
AM_RANGE(0x7e82, 0x7e82) AM_WRITE(dkong_flipscreen_w)
- AM_RANGE(0x7e83, 0x7e83) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */
+ AM_RANGE(0x7e83, 0x7e83) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */
AM_RANGE(0x7e84, 0x7e84) AM_WRITE(interrupt_enable_w)
- AM_RANGE(0x7e85, 0x7e85) AM_DEVWRITE(Z80DMA, "z80dma", z80dma_rdy_w) /* ==> DMA Chip */
+ AM_RANGE(0x7e85, 0x7e85) AM_DEVWRITE(Z80DMA, "z80dma", z80dma_rdy_w) /* ==> DMA Chip */
AM_RANGE(0x7e86, 0x7e87) AM_WRITE(dkong_palettebank_w)
- AM_RANGE(0x8000, 0x9fff) AM_ROM /* DK3 and bootleg DKjr only */
+ AM_RANGE(0x8000, 0x9fff) AM_ROM /* DK3 and bootleg DKjr only */
ADDRESS_MAP_END
static ADDRESS_MAP_START( dkong3_io_map, ADDRESS_SPACE_IO, 8 )
@@ -846,10 +865,10 @@ static ADDRESS_MAP_START( hunchbkd_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0fff) AM_ROM
AM_RANGE(0x1000, 0x13ff) AM_RAM AM_BASE_MEMBER(dkong_state, sprite_ram)
AM_SIZE_MEMBER(dkong_state, sprite_ram_size) /* 0x7000 */
- AM_RANGE(0x1400, 0x1400) AM_READ_PORT("IN0") AM_WRITE(dkong_sh_tuneselect_w)
+ AM_RANGE(0x1400, 0x1400) AM_READ_PORT("IN0") AM_DEVWRITE(LATCH8, "ls175.3d", latch8_w)
AM_RANGE(0x1480, 0x1480) AM_READ_PORT("IN1")
AM_RANGE(0x1500, 0x1500) AM_READ(dkong_in2_r) /* IN2 */
- AM_RANGE(0x1500, 0x1507) AM_WRITE(dkong_snd_disc_w) /* Sound signals */
+ AM_RANGE(0x1500, 0x1507) AM_DEVWRITE(LATCH8, "ls259.6h", latch8_bit0_w) /* Sound signals */
AM_RANGE(0x1580, 0x1580) AM_READ_PORT("DSW0") AM_WRITE(dkong_audio_irq_w) /* DSW0 */
AM_RANGE(0x1582, 0x1582) AM_WRITE(dkong_flipscreen_w)
AM_RANGE(0x1583, 0x1583) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */
@@ -1197,8 +1216,8 @@ static INPUT_PORTS_START( shootgal )
PORT_MODIFY("IN2")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Start 1 / P1 Button 1") PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Start 2 / P1 Button 2") PORT_PLAYER(1)
- //PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- //PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ /* PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) */
+ /* PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) */
PORT_START("DSW0") /* DSW0 */
PORT_DIPNAME( 0x01, 0x00, "1" )
@@ -1306,7 +1325,7 @@ static INPUT_PORTS_START( herodk )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION( "SW1:!2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x02, "5" )
- PORT_DIPNAME( 0x0c, 0x00, "Difficulty?" ) PORT_DIPLOCATION( "SW1:!3,!4" ) // Stored at 0x1c99
+ PORT_DIPNAME( 0x0c, 0x00, "Difficulty?" ) PORT_DIPLOCATION( "SW1:!3,!4" ) /* Stored at 0x1c99 */
PORT_DIPSETTING( 0x00, "0" )
PORT_DIPSETTING( 0x04, "1" )
PORT_DIPSETTING( 0x08, "2" )
@@ -1727,7 +1746,7 @@ static MACHINE_DRIVER_START( pestplce )
MDRV_GFXDECODE(pestplce)
MDRV_PALETTE_LENGTH(DK2B_PALETTE_LENGTH)
- MDRV_PALETTE_INIT(dkong2b) // wrong!
+ MDRV_PALETTE_INIT(dkong2b) /* wrong! */
MDRV_VIDEO_UPDATE(pestplce)
MACHINE_DRIVER_END
@@ -1779,6 +1798,12 @@ static MACHINE_DRIVER_START( dkong3b )
MDRV_PALETTE_INIT(dkong3)
MACHINE_DRIVER_END
+/*************************************
+ *
+ * EPOS Machine drivers
+ *
+ *************************************/
+
static MACHINE_DRIVER_START( strtheat )
/* basic machine hardware */
MDRV_IMPORT_FROM(dkong2b)
@@ -1862,7 +1887,7 @@ ROM_START( radarsc1 )
ROM_FILL( 0x1000, 0x0800, 0xFF )
ROM_REGION( 0x0800, "tms", 0 ) /* speech rom */
- ROM_LOAD( "trs014ha.bin", 0x0000, 0x0800, CRC(d1f1b48c) SHA1(ee5584368d2e9f7bde271f5004585b53f5ff5c3f) ) // speech rom
+ ROM_LOAD( "trs014ha.bin", 0x0000, 0x0800, CRC(d1f1b48c) SHA1(ee5584368d2e9f7bde271f5004585b53f5ff5c3f) ) /* speech rom */
ROM_REGION( 0x1000, "gfx1", ROMREGION_DISPOSE )
ROM_LOAD( "trs01v3f", 0x0000, 0x0800, CRC(f095330e) SHA1(dd3de744f28ff108630d3336bd246d3323fa34af) )
@@ -1884,9 +1909,10 @@ ROM_START( radarsc1 )
ROM_LOAD( "trs01c2j.bin", 0x0000, 0x0100, CRC(2a087c87) SHA1(dbf0c6173583dc4fa5d3f34d2f42cbaf2bd4b167) ) /* blue */
ROM_LOAD( "trs01c2k.bin", 0x0100, 0x0100, CRC(650c5daf) SHA1(72f91ee2fab9eee58ee42881327e6345aa70b7f9) ) /* green */
ROM_LOAD( "trs01c2l.bin", 0x0200, 0x0100, CRC(23087910) SHA1(afc05c322b11fefaf0af857fee06a5afd0d4593e) ) /* red */
- // Hack! The prom at pos 1D on video board has not been dumped
- // Rom 1D is a MB7051, only 5 address lines
- // Rom below from TRS02 dump: rs2-v.1hc
+ /* Hack! The prom at pos 1D on video board has not been dumped
+ * Rom 1D is a MB7051, only 5 address lines
+ * Rom below from TRS02 dump: rs2-v.1hc
+ */
ROM_LOAD( "trs01v1d.bin", 0x0300, 0x0100, BAD_DUMP CRC(1b828315) SHA1(00c9f8c5ae86b68d38c66f9071b5f1ef421c1005) ) /* character color codes on a per-column basis */
ROM_END
@@ -1921,9 +1947,9 @@ ROM_END
ROM_START( dkongo )
ROM_REGION( 0x10000, "main", 0 )
- ROM_LOAD( "c_5f_b.bin", 0x0000, 0x1000, CRC(424f2b11) SHA1(e4f096f2bbd37281f42a5f8e083738f55c07f3dd) ) // tkg3c.5f
- ROM_LOAD( "c_5ct_g.bin", 0x1000, 0x1000, CRC(5ec461ec) SHA1(acb11a8fbdbb3ab46068385fe465f681e3c824bd) ) // tkg3c.5g
- ROM_LOAD( "c_5h_b.bin", 0x2000, 0x1000, CRC(1d28895d) SHA1(63792cab215fc2a7b0e8ee61d8115045571e9d42) ) // tkg3c.5h
+ ROM_LOAD( "c_5f_b.bin", 0x0000, 0x1000, CRC(424f2b11) SHA1(e4f096f2bbd37281f42a5f8e083738f55c07f3dd) ) /* tkg3c.5f */
+ ROM_LOAD( "c_5ct_g.bin", 0x1000, 0x1000, CRC(5ec461ec) SHA1(acb11a8fbdbb3ab46068385fe465f681e3c824bd) ) /* tkg3c.5g */
+ ROM_LOAD( "c_5h_b.bin", 0x2000, 0x1000, CRC(1d28895d) SHA1(63792cab215fc2a7b0e8ee61d8115045571e9d42) ) /* tkg3c.5h */
ROM_LOAD( "tkg3c.5k", 0x3000, 0x1000, CRC(553b89bb) SHA1(61611df9e2748fdcd31821038dcc0e16dc933873) )
/* space for diagnostic ROM */
@@ -2706,8 +2732,6 @@ ROM_START( drktnjr )
ROM_REGION( 0x1000, "sound", 0 ) /* sound */
/* one is used for dkong conversions, the other one for dkongjr conversions */
ROM_LOAD( "2716.3h1", 0x0000, 0x0800, CRC(2a6ec016) SHA1(c95e185a39c8029f00798ce0a00759a4deb45677) ) /* dkongjr */
- //ROM_RELOAD( 0x0800, 0x0800 )
- //ROM_FILL( 0x0800, 0x0800, 0xFF )
ROM_REGION( 0x1000, "gfx1", ROMREGION_DISPOSE )
ROM_LOAD( "2716.3n", 0x0000, 0x0800, CRC(ea0e7f9a) SHA1(a8e2b43e15281d45e414eaae98e5248bad79c41b) )
@@ -2825,10 +2849,10 @@ ROM_START( shootgal )
ROM_LOAD( "sg-01-0", 0x0000, 0x0800, CRC(f055a624) SHA1(5dfe89d7271092e665cdd5cd59d15a2b70f92f43) )
ROM_REGION( 0x1800, "tms", 0 )
- ROM_LOAD( "sg-01snd", 0x0000, 0x1000, CRC(644a0728) SHA1(e249fd57bc49572a2246aaf7c68a547f319f51bc) ) //sg-01-snd
- ROM_LOAD( "sg-01spk", 0x1000, 0x0800, CRC(aacaf730) SHA1(cd562093ab8931d165cb0877e332474fce131c67) ) //sg-01-spk
+ ROM_LOAD( "sg-01snd", 0x0000, 0x1000, CRC(644a0728) SHA1(e249fd57bc49572a2246aaf7c68a547f319f51bc) ) /* sg-01-snd */
+ ROM_LOAD( "sg-01spk", 0x1000, 0x0800, CRC(aacaf730) SHA1(cd562093ab8931d165cb0877e332474fce131c67) ) /* sg-01-spk */
- ROM_REGION( 0x2000, "user2", 0 ) // gun proms?
+ ROM_REGION( 0x2000, "user2", 0 ) /* gun proms? */
ROM_LOAD( "sg-1", 0x0000, 0x0200, CRC(fda82517) SHA1(b36bac69b6f8218b280aae59133ea0d22d7a99f6) )
ROM_LOAD( "sg-2", 0x0200, 0x091d, CRC(6e065613) SHA1(26d048af5c302f921de8e2c1bc7c7bf48dc21b5a) )
diff --git a/src/mame/includes/dkong.h b/src/mame/includes/dkong.h
index d60626618dd..cdf9a888f18 100644
--- a/src/mame/includes/dkong.h
+++ b/src/mame/includes/dkong.h
@@ -47,9 +47,9 @@
#define HARDWARE_TRS02 2
#define HARDWARE_TKG02 3
-#define DK2B_PALETTE_LENGTH (256+256+8+1) // (256)
-#define DK4B_PALETTE_LENGTH (256+256+8+1) // (256)
-#define DK3_PALETTE_LENGTH (256+256+8+1) // (256)
+#define DK2B_PALETTE_LENGTH (256+256+8+1) /* (256) */
+#define DK4B_PALETTE_LENGTH (256+256+8+1) /* (256) */
+#define DK3_PALETTE_LENGTH (256+256+8+1) /* (256) */
#define RS_PALETTE_LENGTH (256+256+8+1)
typedef struct _dkong_state dkong_state;
@@ -61,8 +61,6 @@ struct _dkong_state
UINT8 hardware_type;
/* sound state */
- UINT8 page,mcustatus;
- UINT8 portT;
/* video state */
tilemap *bg_tilemap;
@@ -91,8 +89,6 @@ struct _dkong_state
/* Save state relevant */
UINT8 gfx_bank, palette_bank;
UINT8 grid_on;
- UINT8 snd02_enable;
- UINT8 sig_ansn;
UINT16 grid_col;
UINT8 sprite_bank;
UINT8 dma_latch;
@@ -105,9 +101,6 @@ struct _dkong_state
/*----------- defined in video/dkong.c -----------*/
-WRITE8_HANDLER( radarscp_snd02_w ); /* to daisy chain sound 02 signal */
-WRITE8_HANDLER( radarsc1_ansn_w ); /* to daisy chain sound 02 signal */
-
WRITE8_HANDLER( radarscp_grid_enable_w );
WRITE8_HANDLER( radarscp_grid_color_w );
WRITE8_HANDLER( dkong_flipscreen_w );
@@ -131,18 +124,8 @@ VIDEO_UPDATE( spclforc );
/*----------- defined in audio/dkong.c -----------*/
-READ8_HANDLER( dkong_audio_status_r );
WRITE8_HANDLER( dkong_audio_irq_w );
-WRITE8_HANDLER( dkong_snd_disc_w );
-WRITE8_HANDLER( dkong_sh_tuneselect_w );
-
-WRITE8_HANDLER( dkongjr_sh_test6_w );
-WRITE8_HANDLER( dkongjr_sh_tuneselect_w );
-
-WRITE8_HANDLER( dkongjr_snd_w1 );
-WRITE8_HANDLER( dkongjr_snd_w2 );
-
MACHINE_DRIVER_EXTERN( radarscp_audio );
MACHINE_DRIVER_EXTERN( dkong2b_audio );
MACHINE_DRIVER_EXTERN( dkongjr_audio );
diff --git a/src/mame/video/dkong.c b/src/mame/video/dkong.c
index 8e6d8b474f1..2be0c44406f 100644
--- a/src/mame/video/dkong.c
+++ b/src/mame/video/dkong.c
@@ -10,6 +10,7 @@
#include "driver.h"
#include "video/resnet.h"
#include "includes/dkong.h"
+#include "machine/latch8.h"
#define RADARSCP_BCK_COL_OFFSET 256
#define RADARSCP_GRID_COL_OFFSET (RADARSCP_BCK_COL_OFFSET + 256)
@@ -60,13 +61,13 @@ static const double cd4049_al = 0.01;
static const res_net_decode_info dkong_decode_info =
{
- 2, // there may be two proms needed to construct color
- 0, // start at 0
- 255, // end at 255
- // R, G, B, R, G, B
- { 256, 256, 0, 0, 0, 0}, // offsets
- { 1, -2, 0, 0, 2, 0}, // shifts
- {0x07,0x04,0x03,0x00,0x03,0x00} // masks
+ 2, /* there may be two proms needed to construct color */
+ 0, /* start at 0 */
+ 255, /* end at 255 */
+ /* R, G, B, R, G, B */
+ { 256, 256, 0, 0, 0, 0}, /* offsets */
+ { 1, -2, 0, 0, 2, 0}, /* shifts */
+ {0x07,0x04,0x03,0x00,0x03,0x00} /* masks */
};
static const res_net_info dkong_net_info =
@@ -75,7 +76,7 @@ static const res_net_info dkong_net_info =
{
{ RES_NET_AMP_DARLINGTON, 470, 0, 3, { 1000, 470, 220 } },
{ RES_NET_AMP_DARLINGTON, 470, 0, 3, { 1000, 470, 220 } },
- { RES_NET_AMP_EMITTER, 680, 0, 2, { 470, 220, 0 } } // dkong
+ { RES_NET_AMP_EMITTER, 680, 0, 2, { 470, 220, 0 } } /* dkong */
}
};
@@ -91,13 +92,13 @@ static const res_net_info dkong_net_bck_info =
static const res_net_decode_info dkong3_decode_info =
{
- 1, // one prom needed to contruct color
- 0, // start at 0
- 255, // end at 255
- // R, G, B
- { 0, 0, 512 }, // offsets
- { 4, 0, 0 }, // shifts
- {0x0F,0x0F,0x0F } // masks
+ 1, /* one prom needed to contruct color */
+ 0, /* start at 0 */
+ 255, /* end at 255 */
+ /* R, G, B */
+ { 0, 0, 512 }, /* offsets */
+ { 4, 0, 0 }, /* shifts */
+ {0x0F,0x0F,0x0F } /* masks */
};
static const res_net_info dkong3_net_info =
@@ -124,7 +125,7 @@ static const res_net_info radarscp_net_info =
{
{ RES_NET_AMP_DARLINGTON, 470, 0, 3, { 1000, 470, 220 } },
{ RES_NET_AMP_DARLINGTON, 470, 0, 3, { 1000, 470, 220 } },
- { RES_NET_AMP_DARLINGTON, 680, 150000, 2, { 470, 220, 0 } } // radarscp
+ { RES_NET_AMP_DARLINGTON, 680, 150000, 2, { 470, 220, 0 } } /* radarscp */
}
};
@@ -134,7 +135,7 @@ static const res_net_info radarscp_net_bck_info =
{
{ RES_NET_AMP_DARLINGTON, 470, 0, 0, { 0 } },
{ RES_NET_AMP_DARLINGTON, 470, 0, 0, { 0 } },
- { RES_NET_AMP_DARLINGTON, 680, 150000, 0, { 0 } } // radarscp
+ { RES_NET_AMP_DARLINGTON, 680, 150000, 0, { 0 } } /* radarscp */
}
};
@@ -163,8 +164,8 @@ static const res_net_info radarscp_stars_net_info =
RES_NET_VCC_5V | RES_NET_VBIAS_5V | RES_NET_VIN_TTL_OUT | RES_NET_MONITOR_SANYO_EZV20,
{
{ RES_NET_AMP_DARLINGTON, 4700, 470, 0, { 0 } },
- { RES_NET_AMP_DARLINGTON, 1, 0, 0, { 0 } }, // dummy
- { RES_NET_AMP_DARLINGTON, 1, 0, 0, { 0 } }, // dummy
+ { RES_NET_AMP_DARLINGTON, 1, 0, 0, { 0 } }, /* dummy */
+ { RES_NET_AMP_DARLINGTON, 1, 0, 0, { 0 } }, /* dummy */
}
};
@@ -174,9 +175,9 @@ static const res_net_info radarscp_blue_net_info =
{
RES_NET_VCC_5V | RES_NET_VBIAS_5V | RES_NET_VIN_VCC | RES_NET_MONITOR_SANYO_EZV20,
{
- { RES_NET_AMP_DARLINGTON, 470, 4700, 0, { 0 } }, // bias/gnd exist in schematics, readable in TKG3 schematics
- { RES_NET_AMP_DARLINGTON, 470, 4700, 0, { 0 } }, // bias/gnd exist in schematics, readable in TKG3 schematics
- { RES_NET_AMP_DARLINGTON, 0, 0, 8, { 128,64,32,16,8,4,2,1 } }, // dummy
+ { RES_NET_AMP_DARLINGTON, 470, 4700, 0, { 0 } }, /* bias/gnd exist in schematics, readable in TKG3 schematics */
+ { RES_NET_AMP_DARLINGTON, 470, 4700, 0, { 0 } }, /* bias/gnd exist in schematics, readable in TKG3 schematics */
+ { RES_NET_AMP_DARLINGTON, 0, 0, 8, { 128,64,32,16,8,4,2,1 } }, /* dummy */
}
};
@@ -186,9 +187,9 @@ static const res_net_info radarscp_grid_net_info =
{
RES_NET_VCC_5V | RES_NET_VBIAS_5V | RES_NET_VIN_TTL_OUT | RES_NET_MONITOR_SANYO_EZV20,
{
- { RES_NET_AMP_DARLINGTON, 0, 0, 1, { 1 } }, // dummy
- { RES_NET_AMP_DARLINGTON, 0, 0, 1, { 1 } }, // dummy
- { RES_NET_AMP_DARLINGTON, 0, 0, 1, { 1 } }, // dummy
+ { RES_NET_AMP_DARLINGTON, 0, 0, 1, { 1 } }, /* dummy */
+ { RES_NET_AMP_DARLINGTON, 0, 0, 1, { 1 } }, /* dummy */
+ { RES_NET_AMP_DARLINGTON, 0, 0, 1, { 1 } }, /* dummy */
}
};
@@ -210,7 +211,7 @@ PALETTE_INIT( dkong2b)
/* Now treat tri-state black background generation */
for (i=0;i<256;i++)
- if ( (i & 0x03) == 0x00 ) // NOR => CS=1 => Tristate => real black
+ if ( (i & 0x03) == 0x00 ) /* NOR => CS=1 => Tristate => real black */
{
int r,g,b;
r = compute_res_net( 1, 0, &dkong_net_bck_info );
@@ -250,7 +251,7 @@ PALETTE_INIT( dkong4b )
/* Now treat tri-state black background generation */
for (i=0;i<256;i++)
- if ( (i & 0x03) == 0x00 ) // NOR => CS=1 => Tristate => real black
+ if ( (i & 0x03) == 0x00 ) /* NOR => CS=1 => Tristate => real black */
{
r = compute_res_net( 1, 0, &radarscp_net_bck_info );
g = compute_res_net( 1, 1, &radarscp_net_bck_info );
@@ -288,7 +289,7 @@ PALETTE_INIT( radarscp )
/* Now treat tri-state black background generation */
for (i=0;i<256;i++)
- if ( (i & 0x03) == 0x00 ) // NOR => CS=1 => Tristate => real black
+ if ( (i & 0x03) == 0x00 ) /* NOR => CS=1 => Tristate => real black */
{
r = compute_res_net( 1, 0, &radarscp_net_bck_info );
g = compute_res_net( 1, 1, &radarscp_net_bck_info );
@@ -352,7 +353,7 @@ PALETTE_INIT( radarsc1 )
/* Now treat tri-state black background generation */
for (i=0;i<256;i++)
- if ( (i & 0x03) == 0x00 ) // NOR => CS=1 => Tristate => real black
+ if ( (i & 0x03) == 0x00 ) /* NOR => CS=1 => Tristate => real black */
{
r = compute_res_net( 0, 0, &radarsc1_net_info );
g = compute_res_net( 0, 1, &radarsc1_net_info );
@@ -480,20 +481,6 @@ WRITE8_HANDLER( dkong_videoram_w )
}
}
-WRITE8_HANDLER( radarscp_snd02_w )
-{
- dkong_state *state = machine->driver_data;
-
- state->snd02_enable = data & 0x01;
-}
-
-WRITE8_HANDLER( radarsc1_ansn_w )
-{
- dkong_state *state = machine->driver_data;
-
- state->sig_ansn = data & 0x01;
-}
-
WRITE8_HANDLER( dkongjr_gfxbank_w )
{
dkong_state *state = machine->driver_data;
@@ -547,7 +534,7 @@ WRITE8_HANDLER( radarscp_grid_color_w )
dkong_state *state = machine->driver_data;
state->grid_col = (data & 0x07) ^ 0x07;
- //popmessage("Gridcol: %d", state->grid_col);
+ /* popmessage("Gridcol: %d", state->grid_col); */
}
WRITE8_HANDLER( dkong_flipscreen_w )
@@ -716,17 +703,20 @@ INLINE double CD4049(running_machine *machine, double x)
* a period of roughly 4.4 ms
*/
-#define RC1 (2.2e3 * 22e-6) // 22e-6;
+#define RC1 (2.2e3 * 22e-6) /* 22e-6; */
#define RC2 (10e3 * 33e-6)
#define RC31 (18e3 * 33e-6)
#define RC32 ((18e3 + 68e3) * 33e-6)
#define RC4 (90e3 * 0.47e-6)
#define dt (1./60./(double) VTOTAL)
-#define period2 (((INT64)(PIXEL_CLOCK) * ( 33L * 68L )) / (INT32)10000000L / 3) // period/2 in pixel ...
+#define period2 (((INT64)(PIXEL_CLOCK) * ( 33L * 68L )) / (INT32)10000000L / 3) /* period/2 in pixel ... */
static void radarscp_step(running_machine *machine, int line_cnt)
{
dkong_state *state = machine->driver_data;
+ const device_config *dev6h = devtag_get_device(machine, LATCH8, "ls259.6h");
+ const device_config *devvp2 = devtag_get_device(machine, LATCH8, "virtual_p2");
+
/* Condensator is illegible in schematics for TRS2 board.
* TRS1 board states 3.3u.
*/
@@ -753,13 +743,15 @@ static void radarscp_step(running_machine *machine, int line_cnt)
if ( ( !(line_cnt & 0x40) && ((line_cnt+1) & 0x40) ) && (mame_rand(machine) > RAND_MAX/2))
state->sig30Hz = (1-state->sig30Hz);
- state->rflip_sig = state->snd02_enable & state->sig30Hz;
+ /* Now mix with SND02 (sound 2) line - on 74ls259, bit2 */
+ state->rflip_sig = latch8_bit2_r(dev6h, 0) & state->sig30Hz;
+
sig = state->rflip_sig ^ ((line_cnt & 0x80)>>7);
if (state->hardware_type == HARDWARE_TRS01)
state->rflip_sig = !state->rflip_sig;
- if (sig) // 128VF
+ if (sig) /* 128VF */
diff = (0.0 - cv1);
else
diff = (3.4 - cv1);
@@ -781,8 +773,12 @@ static void radarscp_step(running_machine *machine, int line_cnt)
state->blue_level = (int)(vg3/5.0*255);
- // Grid signal
- if (state->grid_on && state->sig_ansn)
+ /*
+ * Grid signal
+ *
+ * Mixed with ANS line (bit 5) from Port B of 8039
+ */
+ if (state->grid_on && latch8_bit5_r(devvp2, 0))
{
diff = (0.0 - cv3);
diff = diff - diff*exp(0.0 - (1.0/RC32 * dt) );
@@ -798,7 +794,7 @@ static void radarscp_step(running_machine *machine, int line_cnt)
diff = diff - diff*exp(0.0 - (1.0/RC4 * dt) );
cv4 += diff;
- if (CD4049(machine, CD4049(machine, vg2 - cv4))>2.4/5.0) //TTL - Level
+ if (CD4049(machine, CD4049(machine, vg2 - cv4))>2.4/5.0) /* TTL - Level */
state->grid_sig = 0;
else
state->grid_sig = 1;
@@ -831,7 +827,7 @@ static void radarscp_draw_background(running_machine *machine, dkong_state *stat
{
pixel = BITMAP_ADDR16(bitmap, y, x);
draw_ok = !(*pixel & 0x01) && !(*pixel & 0x02);
- if (state->hardware_type == HARDWARE_TRS01) // Check again from schematics
+ if (state->hardware_type == HARDWARE_TRS01) /* Check again from schematics */
draw_ok = draw_ok && !((htable[ (!state->rflip_sig<<7) | (x>>2)] >>2) & 0x01);
if (draw_ok)
*pixel = *(BITMAP_ADDR16(state->bg_bits, y, x));
@@ -930,7 +926,6 @@ static VIDEO_START( dkong_base )
state->gfx_bank = 0;
state->palette_bank = 0;
state->sprite_bank = 0;
- state->sig_ansn = 1;
state->vidhw = -1;
state_save_register_global(state->gfx_bank);
@@ -938,8 +933,6 @@ static VIDEO_START( dkong_base )
state_save_register_global(state->sprite_bank);
state_save_register_global(state->grid_on);
- state_save_register_global(state->snd02_enable);
- state_save_register_global(state->sig_ansn);
state_save_register_global(state->grid_col);
state_save_register_global(state->flip);
}