Previous 199869 Revisions Next

r17563 Wednesday 29th August, 2012 at 18:23:02 UTC by Tafoid
Continuing new device implementation for SN76496 and clones - hyperspt.c, sbasketb.c, trackfld.c, yiear.c  [David Haywood, Osso]

Comment:  "make depend" is required here.
[src/mame/audio]trackfld.c
[src/mame/drivers]hyperspt.c sbasketb.c trackfld.c yiear.c
[src/mame/includes]hyperspt.h sbasketb.h trackfld.h yiear.h

trunk/src/mame/audio/trackfld.c
r17562r17563
1313struct _trackfld_audio_state
1414{
1515   /* sound-related */
16   int      m_SN76496_latch;
1716   int      m_last_addr;
1817   int      m_last_irq;
1918
r17562r17563
4645   state->m_vlm = device->machine().device("vlm");
4746
4847   /* sound */
49   device->save_item(NAME(state->m_SN76496_latch));
5048   device->save_item(NAME(state->m_last_addr));
5149   device->save_item(NAME(state->m_last_irq));
5250}
r17562r17563
5553{
5654   trackfld_audio_state *state = get_safe_token(device);
5755
58   state->m_SN76496_latch = 0;
5956   state->m_last_addr = 0;
6057   state->m_last_irq = 0;
6158}
r17562r17563
158155}
159156
160157
161WRITE8_HANDLER( konami_SN76496_latch_w )
162{
163   device_t *audio = space->machine().device("trackfld_audio");
164   trackfld_audio_state *state = get_safe_token(audio);
165   state->m_SN76496_latch = data;
166}
167158
168159
169WRITE8_DEVICE_HANDLER( konami_SN76496_w )
170{
171   device_t *audio = device->machine().device("trackfld_audio");
172   trackfld_audio_state *state = get_safe_token(audio);
173   sn76496_w(device, offset, state->m_SN76496_latch);
174}
175
176160/*****************************************************************************
177161    DEVICE DEFINITION
178162*****************************************************************************/
trunk/src/mame/includes/yiear.h
r17562r17563
1#include "sound/sn76496.h"
2
13class yiear_state : public driver_device
24{
35public:
r17562r17563
57      : driver_device(mconfig, type, tag) ,
68      m_spriteram(*this, "spriteram"),
79      m_spriteram2(*this, "spriteram2"),
8      m_videoram(*this, "videoram"){ }
10      m_videoram(*this, "videoram"),
11      m_sn(*this, "snsnd")
12   { }
913
1014   /* memory pointers */
1115   required_shared_ptr<UINT8> m_spriteram;
1216   required_shared_ptr<UINT8> m_spriteram2;
1317   required_shared_ptr<UINT8> m_videoram;
18   optional_device<sn76489a_new_device> m_sn;
1419
1520   /* video-related */
1621   tilemap_t  *m_bg_tilemap;
r17562r17563
2126   DECLARE_WRITE8_MEMBER(yiear_control_w);
2227   DECLARE_READ8_MEMBER(yiear_speech_r);
2328   DECLARE_WRITE8_MEMBER(yiear_VLM5030_control_w);
29
30   UINT8 m_SN76496_latch;
31   DECLARE_WRITE8_MEMBER( konami_SN76496_latch_w ) { m_SN76496_latch = data; };
32   DECLARE_WRITE8_MEMBER( konami_SN76496_w ) { m_sn->write(space, offset, m_SN76496_latch); };
2433};
2534
2635
trunk/src/mame/includes/trackfld.h
r17562r17563
44
55***************************************************************************/
66
7#include "sound/sn76496.h"
78
89class trackfld_state : public driver_device
910{
r17562r17563
1516      m_spriteram(*this, "spriteram"),
1617      m_scroll2(*this, "scroll2"),
1718      m_videoram(*this, "videoram"),
18      m_colorram(*this, "colorram"){ }
19      m_colorram(*this, "colorram"),
20      m_sn(*this, "snsnd")
21   { }
1922
2023   /* memory pointers */
2124   required_shared_ptr<UINT8> m_spriteram2;
r17562r17563
2427   required_shared_ptr<UINT8> m_scroll2;
2528   required_shared_ptr<UINT8> m_videoram;
2629   required_shared_ptr<UINT8> m_colorram;
30   optional_device<sn76496_new_device> m_sn;
2731
2832   /* video-related */
2933   tilemap_t  *m_bg_tilemap;
r17562r17563
5155   DECLARE_DRIVER_INIT(atlantol);
5256   DECLARE_DRIVER_INIT(wizzquiz);
5357   DECLARE_DRIVER_INIT(mastkin);
58
59   UINT8 m_SN76496_latch;
60   DECLARE_WRITE8_MEMBER( konami_SN76496_latch_w ) { m_SN76496_latch = data; };
61   DECLARE_WRITE8_MEMBER( konami_SN76496_w ) { m_sn->write(space, offset, m_SN76496_latch); };
5462};
5563
5664
trunk/src/mame/includes/hyperspt.h
r17562r17563
1
2#include "sound/sn76496.h"
3
14class hyperspt_state : public driver_device
25{
36public:
r17562r17563
69      m_spriteram(*this, "spriteram"),
710      m_scroll(*this, "scroll"),
811      m_videoram(*this, "videoram"),
9      m_colorram(*this, "colorram"){ }
12      m_colorram(*this, "colorram"),
13      m_sn(*this, "snsnd")
14   { }
1015
1116   /* memory pointers */
1217   required_shared_ptr<UINT8> m_spriteram;
1318   required_shared_ptr<UINT8> m_scroll;
1419   required_shared_ptr<UINT8> m_videoram;
1520   required_shared_ptr<UINT8> m_colorram;
21   optional_device<sn76496_new_device> m_sn;
1622   UINT8 *  m_scroll2;
1723   UINT8 *  m_spriteram2;
1824
r17562r17563
2733   DECLARE_WRITE8_MEMBER(hyperspt_colorram_w);
2834   DECLARE_WRITE8_MEMBER(hyperspt_flipscreen_w);
2935   DECLARE_DRIVER_INIT(hyperspt);
36
37   UINT8 m_SN76496_latch;
38   DECLARE_WRITE8_MEMBER( konami_SN76496_latch_w ) { m_SN76496_latch = data; };
39   DECLARE_WRITE8_MEMBER( konami_SN76496_w ) { m_sn->write(space, offset, m_SN76496_latch); };
3040};
3141
3242/*----------- defined in video/hyperspt.c -----------*/
trunk/src/mame/includes/sbasketb.h
r17562r17563
1
2#include "sound/sn76496.h"
3
14class sbasketb_state : public driver_device
25{
36public:
r17562r17563
811      m_spriteram(*this, "spriteram"),
912      m_palettebank(*this, "palettebank"),
1013      m_spriteram_select(*this, "spriteramsel"),
11      m_scroll(*this, "scroll"){ }
14      m_scroll(*this, "scroll"),
15      m_sn(*this, "snsnd")
16   { }
1217
1318   /* memory pointers */
1419   required_shared_ptr<UINT8> m_colorram;
r17562r17563
1722   required_shared_ptr<UINT8> m_palettebank;
1823   required_shared_ptr<UINT8> m_spriteram_select;
1924   required_shared_ptr<UINT8> m_scroll;
25   optional_device<sn76489_new_device> m_sn;
2026
2127   /* video-related */
2228   tilemap_t  *m_bg_tilemap;
r17562r17563
2935   DECLARE_WRITE8_MEMBER(sbasketb_colorram_w);
3036   DECLARE_WRITE8_MEMBER(sbasketb_flipscreen_w);
3137   DECLARE_DRIVER_INIT(sbasketb);
38
39   UINT8 m_SN76496_latch;
40   DECLARE_WRITE8_MEMBER( konami_SN76496_latch_w ) { m_SN76496_latch = data; };
41   DECLARE_WRITE8_MEMBER( konami_SN76496_w ) { m_sn->write(space, offset, m_SN76496_latch); };
3242};
3343
3444/*----------- defined in video/sbasketb.c -----------*/
trunk/src/mame/drivers/yiear.c
r17562r17563
103103#include "includes/yiear.h"
104104
105105
106
106107READ8_MEMBER(yiear_state::yiear_speech_r)
107108{
108109   device_t *device = machine().device("vlm");
r17562r17563
141142static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, yiear_state )
142143   AM_RANGE(0x0000, 0x0000) AM_READ(yiear_speech_r)
143144   AM_RANGE(0x4000, 0x4000) AM_WRITE(yiear_control_w)
144   AM_RANGE(0x4800, 0x4800) AM_WRITE_LEGACY(konami_SN76496_latch_w)
145   AM_RANGE(0x4900, 0x4900) AM_DEVWRITE_LEGACY("snsnd", konami_SN76496_w)
145   AM_RANGE(0x4800, 0x4800) AM_WRITE(konami_SN76496_latch_w)
146   AM_RANGE(0x4900, 0x4900) AM_WRITE(konami_SN76496_w)
146147   AM_RANGE(0x4a00, 0x4a00) AM_WRITE(yiear_VLM5030_control_w)
147148   AM_RANGE(0x4b00, 0x4b00) AM_DEVWRITE_LEGACY("vlm", vlm5030_data_w)
148149   AM_RANGE(0x4c00, 0x4c00) AM_READ_PORT("DSW2")
r17562r17563
276277   state->m_yiear_nmi_enable = 0;
277278}
278279
280//-------------------------------------------------
281//  sn76496_config psg_intf
282//-------------------------------------------------
283
284static const sn76496_config psg_intf =
285{
286    DEVCB_NULL
287};
288
279289static MACHINE_CONFIG_START( yiear, yiear_state )
280290
281291   /* basic machine hardware */
r17562r17563
306316
307317   MCFG_SOUND_ADD("trackfld_audio", TRACKFLD_AUDIO, 0)
308318
309   MCFG_SOUND_ADD("snsnd", SN76489A, XTAL_18_432MHz/12)   /* verified on pcb */
319   MCFG_SOUND_ADD("snsnd", SN76489A_NEW, XTAL_18_432MHz/12)   /* verified on pcb */
310320   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
321   MCFG_SOUND_CONFIG(psg_intf)
311322
312323   MCFG_SOUND_ADD("vlm", VLM5030, XTAL_3_579545MHz)   /* verified on pcb */
313324   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
trunk/src/mame/drivers/hyperspt.c
r17562r17563
8282   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE_LEGACY("vlm", vlm5030_data_w) /* speech data */
8383   AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE_LEGACY("vlm", hyperspt_sound_w)     /* speech and output control */
8484   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_device, write_unsigned8)
85   AM_RANGE(0xe001, 0xe001) AM_WRITE_LEGACY(konami_SN76496_latch_w)  /* Loads the snd command into the snd latch */
86   AM_RANGE(0xe002, 0xe002) AM_DEVWRITE_LEGACY("snsnd", konami_SN76496_w)    /* This address triggers the SN chip to read the data port. */
85   AM_RANGE(0xe001, 0xe001) AM_WRITE(konami_SN76496_latch_w)  /* Loads the snd command into the snd latch */
86   AM_RANGE(0xe002, 0xe002) AM_WRITE(konami_SN76496_w)    /* This address triggers the SN chip to read the data port. */
8787ADDRESS_MAP_END
8888
8989static ADDRESS_MAP_START( soundb_map, AS_PROGRAM, 8, hyperspt_state )
r17562r17563
9494   AM_RANGE(0xa000, 0xa000) AM_NOP
9595   AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE_LEGACY("hyprolyb_adpcm", hyprolyb_adpcm_w)     /* speech and output control */
9696   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_device, write_unsigned8)
97   AM_RANGE(0xe001, 0xe001) AM_WRITE_LEGACY(konami_SN76496_latch_w)  /* Loads the snd command into the snd latch */
98   AM_RANGE(0xe002, 0xe002) AM_DEVWRITE_LEGACY("snsnd", konami_SN76496_w)    /* This address triggers the SN chip to read the data port. */
97   AM_RANGE(0xe001, 0xe001) AM_WRITE(konami_SN76496_latch_w)  /* Loads the snd command into the snd latch */
98   AM_RANGE(0xe002, 0xe002) AM_WRITE(konami_SN76496_w)    /* This address triggers the SN chip to read the data port. */
9999ADDRESS_MAP_END
100100
101101static INPUT_PORTS_START( hyperspt )
r17562r17563
280280      device_set_input_line(device, 0, HOLD_LINE);
281281}
282282
283//-------------------------------------------------
284//  sn76496_config psg_intf
285//-------------------------------------------------
283286
287static const sn76496_config psg_intf =
288{
289    DEVCB_NULL
290};
291
284292static MACHINE_CONFIG_START( hyperspt, hyperspt_state )
285293
286294   /* basic machine hardware */
r17562r17563
315323   MCFG_DAC_ADD("dac")
316324   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
317325
318   MCFG_SOUND_ADD("snsnd", SN76496, XTAL_14_31818MHz/8) /* verified on pcb */
326   MCFG_SOUND_ADD("snsnd", SN76496_NEW, XTAL_14_31818MHz/8) /* verified on pcb */
319327   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
328   MCFG_SOUND_CONFIG(psg_intf)
320329
321330   MCFG_SOUND_ADD("vlm", VLM5030, XTAL_3_579545MHz) /* verified on pcb */
322331   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
trunk/src/mame/drivers/sbasketb.c
r17562r17563
9999   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE_LEGACY("vlm", vlm5030_data_w) /* speech data */
100100   AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE_LEGACY("vlm", hyperspt_sound_w)     /* speech and output controll */
101101   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_device, write_unsigned8)
102   AM_RANGE(0xe001, 0xe001) AM_WRITE_LEGACY(konami_SN76496_latch_w)  /* Loads the snd command into the snd latch */
103   AM_RANGE(0xe002, 0xe002) AM_DEVWRITE_LEGACY("snsnd", konami_SN76496_w)      /* This address triggers the SN chip to read the data port. */
102   AM_RANGE(0xe001, 0xe001) AM_WRITE(konami_SN76496_latch_w)  /* Loads the snd command into the snd latch */
103   AM_RANGE(0xe002, 0xe002) AM_WRITE(konami_SN76496_w)      /* This address triggers the SN chip to read the data port. */
104104ADDRESS_MAP_END
105105
106106
r17562r17563
184184      device_set_input_line(device, 0, HOLD_LINE);
185185}
186186
187//-------------------------------------------------
188//  sn76496_config psg_intf
189//-------------------------------------------------
190
191static const sn76496_config psg_intf =
192{
193    DEVCB_NULL
194};
195
196
187197static MACHINE_CONFIG_START( sbasketb, sbasketb_state )
188198
189199   /* basic machine hardware */
r17562r17563
216226   MCFG_DAC_ADD("dac")
217227   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
218228
219   MCFG_SOUND_ADD("snsnd", SN76489, XTAL_14_31818MHz / 8)
229   MCFG_SOUND_ADD("snsnd", SN76489_NEW, XTAL_14_31818MHz / 8)
220230   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
231   MCFG_SOUND_CONFIG(psg_intf)
221232
222233   MCFG_SOUND_ADD("vlm", VLM5030, XTAL_3_579545MHz) /* Schematics say 3.58MHz, but board uses 3.579545MHz xtal */
223234   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
trunk/src/mame/drivers/trackfld.c
r17562r17563
275275
276276
277277static ADDRESS_MAP_START( yieartf_map, AS_PROGRAM, 8, trackfld_state )
278   AM_RANGE(0x0000, 0x0000) AM_READ(trackfld_speech_r) AM_WRITE_LEGACY(konami_SN76496_latch_w)
279   AM_RANGE(0x0001, 0x0001) AM_DEVWRITE_LEGACY("snsnd", konami_SN76496_w)
278   AM_RANGE(0x0000, 0x0000) AM_READ(trackfld_speech_r) AM_WRITE(konami_SN76496_latch_w)
279   AM_RANGE(0x0001, 0x0001) AM_WRITE(konami_SN76496_w)
280280   AM_RANGE(0x0002, 0x0002) AM_WRITE(trackfld_VLM5030_control_w)
281281   AM_RANGE(0x0003, 0x0003) AM_DEVWRITE_LEGACY("vlm", vlm5030_data_w)
282282   AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x007f) AM_WRITE(watchdog_reset_w)      /* AFE */
r17562r17563
398398
399399READ8_MEMBER(trackfld_state::trackfld_SN76496_r)
400400{
401   device_t *device = machine().device("snsnd");
402   konami_SN76496_w(device, 0, 0);
401   konami_SN76496_w(space, 0, 0);
403402   return 0xff; // ?
404403}
405404
r17562r17563
408407   AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM
409408   AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_READ(soundlatch_byte_r)
410409   AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_READ_LEGACY(trackfld_sh_timer_r)
411   AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_WRITE_LEGACY(konami_SN76496_latch_w)
412   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_READ(trackfld_SN76496_r) AM_DEVWRITE_LEGACY("snsnd",konami_SN76496_w)
410   AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_WRITE(konami_SN76496_latch_w)
411   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_READ(trackfld_SN76496_r) AM_WRITE(konami_SN76496_w)
413412   AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1ff8) AM_DEVWRITE("dac", dac_device, write_unsigned8)
414413   AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x1ff8) AM_NOP         /* watch dog ?; reaktor reads here */
415414   AM_RANGE(0xe002, 0xe002) AM_MIRROR(0x1ff8) AM_DEVREAD_LEGACY("vlm", trackfld_speech_r)
r17562r17563
422421   AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM
423422   AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_READ(soundlatch_byte_r)
424423   AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_READ_LEGACY(trackfld_sh_timer_r)
425   AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_WRITE_LEGACY(konami_SN76496_latch_w)
426   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_READ(trackfld_SN76496_r) AM_DEVWRITE_LEGACY("snsnd",konami_SN76496_w)
424   AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_WRITE(konami_SN76496_latch_w)
425   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_READ(trackfld_SN76496_r) AM_WRITE(konami_SN76496_w)
427426   AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1ff8) AM_DEVWRITE("dac", dac_device, write_unsigned8)
428427   AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x1ff8) AM_NOP         /* watch dog ?; reaktor reads here */
429428   AM_RANGE(0xe002, 0xe002) AM_MIRROR(0x1ff8) AM_DEVREAD_LEGACY("hyprolyb_adpcm", hyprolyb_adpcm_busy_r)
r17562r17563
902901      device_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
903902}
904903
904//-------------------------------------------------
905//  sn76496_config psg_intf
906//-------------------------------------------------
905907
908static const sn76496_config psg_intf =
909{
910    DEVCB_NULL
911};
912
906913static MACHINE_CONFIG_START( trackfld, trackfld_state )
907914
908915   /* basic machine hardware */
r17562r17563
939946   MCFG_DAC_ADD("dac")
940947   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
941948
942   MCFG_SOUND_ADD("snsnd", SN76496, SOUND_CLOCK/8)
949   MCFG_SOUND_ADD("snsnd", SN76496_NEW, SOUND_CLOCK/8)
943950   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
951   MCFG_SOUND_CONFIG(psg_intf)
944952
945953   MCFG_SOUND_ADD("vlm", VLM5030, VLM_CLOCK)
946954   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
r17562r17563
9931001   MCFG_DAC_ADD("dac")
9941002   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
9951003
996   MCFG_SOUND_ADD("snsnd", SN76496, MASTER_CLOCK/6/2)
1004   MCFG_SOUND_ADD("snsnd", SN76496_NEW, MASTER_CLOCK/6/2)
9971005   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
1006   MCFG_SOUND_CONFIG(psg_intf)
9981007
9991008   MCFG_SOUND_ADD("vlm", VLM5030, VLM_CLOCK)
10001009   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team