Previous 199869 Revisions Next

r32535 Saturday 4th October, 2014 at 21:13:34 UTC by hap
remove assumption that dsp common ram is an MB8421 (MB8421 used on the sound part)
[src/mame/drivers]taitojc.c
[src/mame/includes]taitojc.h

trunk/src/mame/includes/taitojc.h
r32534r32535
11#include "video/poly.h"
2#include "machine/mb8421.h"
32#include "machine/taitoio.h"
43
54#define TAITOJC_POLYGON_FIFO_SIZE       0x20000
r32534r32535
4342      m_maincpu(*this,"maincpu"),
4443      m_dsp(*this,"dsp"),
4544      m_tc0640fio(*this, "tc0640fio"),
46      m_mb8421(*this, "mb8421"),
4745      m_gfx2(*this, "gfx2"),
4846      m_vram(*this, "vram"),
4947      m_objlist(*this, "objlist"),
5048      m_snd_shared_ram(*this, "snd_shared"),
5149      m_main_ram(*this, "main_ram"),
50      m_dsp_shared_ram(*this, "dsp_shared"),
5251      m_palette_ram(*this, "palette_ram"),
5352      m_gfxdecode(*this, "gfxdecode"),
5453      m_screen(*this, "screen"),
r32534r32535
6463   required_device<cpu_device> m_maincpu;
6564   required_device<cpu_device> m_dsp;
6665   required_device<tc0640fio_device> m_tc0640fio;
67   required_device<mb8421_device> m_mb8421;
6866   required_memory_region m_gfx2;
6967
7068   required_shared_ptr<UINT32> m_vram;
7169   required_shared_ptr<UINT32> m_objlist;
7270   required_shared_ptr<UINT32> m_snd_shared_ram;
7371   required_shared_ptr<UINT32> m_main_ram;
72   required_shared_ptr<UINT16> m_dsp_shared_ram;
7473   required_shared_ptr<UINT32> m_palette_ram;
7574
7675   required_device<gfxdecode_device> m_gfxdecode;
r32534r32535
8887   UINT16 m_dsp_tex_offset;
8988
9089   int m_first_dsp_reset;
91   UINT8 m_dsp_shared_ram_hi[0x800];
9290   INT16 m_viewport_data[3];
9391   INT16 m_projection_data[3];
9492   INT16 m_intersection_data[3];
r32534r32535
119117
120118   DECLARE_READ8_MEMBER(mcu_comm_r);
121119   DECLARE_WRITE8_MEMBER(mcu_comm_w);
122   DECLARE_READ8_MEMBER(dsp_shared_r);
123   DECLARE_WRITE8_MEMBER(dsp_shared_w);
124120   DECLARE_READ32_MEMBER(snd_share_r);
125121   DECLARE_WRITE32_MEMBER(snd_share_w);
126122   DECLARE_READ8_MEMBER(jc_pcbid_r);
r32534r32535
138134   DECLARE_WRITE8_MEMBER(hc11_data_w);
139135   DECLARE_READ8_MEMBER(hc11_analog_r);
140136
137   DECLARE_READ16_MEMBER(dsp_shared_r);
138   DECLARE_WRITE16_MEMBER(dsp_shared_w);
139   DECLARE_READ16_MEMBER(dsp_to_main_7fe_r);
140   DECLARE_WRITE16_MEMBER(dsp_to_main_7fe_w);
141   DECLARE_WRITE16_MEMBER(main_to_dsp_7ff_w);
142
141143   DECLARE_READ16_MEMBER(dsp_rom_r);
142144   DECLARE_WRITE16_MEMBER(dsp_rom_w);
143145   DECLARE_WRITE16_MEMBER(dsp_texture_w);
r32534r32535
173175   UINT32 screen_update_taitojc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
174176   UINT32 screen_update_dendego(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
175177   INTERRUPT_GEN_MEMBER(taitojc_vblank);
176   DECLARE_WRITE_LINE_MEMBER(mb8421_intl);
177   DECLARE_WRITE_LINE_MEMBER(mb8421_intr);
178178   void draw_object(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 w1, UINT32 w2, UINT8 bank_type);
179179   void draw_object_bank(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 bank_type, UINT8 pri);
180180   void taitojc_clear_frame();
trunk/src/mame/drivers/taitojc.c
r32534r32535
380380#include "cpu/mc68hc11/mc68hc11.h"
381381#include "sound/es5506.h"
382382#include "sound/okim6295.h"
383#include "machine/mb8421.h"
384383#include "machine/taitoio.h"
385384#include "machine/eepromser.h"
386385#include "audio/taito_en.h"
r32534r32535
455454
456455***************************************************************************/
457456
458// boob :( this is probably not the MB8421, need to change this
459WRITE_LINE_MEMBER(taitojc_state::mb8421_intl)
457// dsp common ram has similar interrupt capability as MB8421
458WRITE16_MEMBER(taitojc_state::dsp_to_main_7fe_w)
460459{
460   COMBINE_DATA(&m_dsp_shared_ram[0x7fe]);
461
461462   // shared ram interrupt request from dsp side
462   m_maincpu->set_input_line(6, state ? ASSERT_LINE : CLEAR_LINE);
463   if (ACCESSING_BITS_0_7)
464      m_maincpu->set_input_line(6, ASSERT_LINE);
463465}
464466
465WRITE_LINE_MEMBER(taitojc_state::mb8421_intr)
467READ16_MEMBER(taitojc_state::dsp_to_main_7fe_r)
466468{
467   // shared ram interrupt request from maincpu side
468   // this is hacky, acquiring the internal dsp romdump should allow it to be cleaned up
469   if (state)
469   if (ACCESSING_BITS_0_7)
470      m_maincpu->set_input_line(6, CLEAR_LINE);
471
472   return m_dsp_shared_ram[0x7fe];
473}
474
475WRITE16_MEMBER(taitojc_state::main_to_dsp_7ff_w)
476{
477   COMBINE_DATA(&m_dsp_shared_ram[0x7ff]);
478
479   if (ACCESSING_BITS_0_7)
470480   {
471      if (m_mb8421->peek(0x7ff) & 0x08)
481      // shared ram interrupt request from maincpu side
482      // this is hacky, acquiring the internal dsp romdump should allow it to be cleaned up(?)
483      if (data & 0x08)
472484      {
473485         m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
474486      }
r32534r32535
512524
513525***************************************************************************/
514526
515READ8_MEMBER(taitojc_state::dsp_shared_r)
527READ16_MEMBER(taitojc_state::dsp_shared_r)
516528{
517   return m_dsp_shared_ram_hi[offset];
529   return m_dsp_shared_ram[offset];
518530}
519531
520WRITE8_MEMBER(taitojc_state::dsp_shared_w)
532WRITE16_MEMBER(taitojc_state::dsp_shared_w)
521533{
522   m_dsp_shared_ram_hi[offset] = data;
534   COMBINE_DATA(&m_dsp_shared_ram[offset]);
523535}
524536
525537
r32534r32535
634646   AM_RANGE(0x06a00000, 0x06a01fff) AM_READWRITE(snd_share_r, snd_share_w) AM_SHARE("snd_shared")
635647   AM_RANGE(0x06c00000, 0x06c0001f) AM_READWRITE8(jc_lan_r, jc_lan_w, 0x00ff0000)
636648   AM_RANGE(0x08000000, 0x080fffff) AM_RAM AM_SHARE("main_ram")
637   AM_RANGE(0x10000000, 0x10001fff) AM_DEVREADWRITE8("mb8421", mb8421_device, left_r, left_w, 0x00ff0000)
638   AM_RANGE(0x10000000, 0x10001fff) AM_READWRITE8(dsp_shared_r, dsp_shared_w, 0xff000000) // which chip is this?
649   AM_RANGE(0x10001ff8, 0x10001ffb) AM_READ16(dsp_to_main_7fe_r, 0xffff0000)
650   AM_RANGE(0x10001ffc, 0x10001fff) AM_WRITE16(main_to_dsp_7ff_w, 0xffff0000)
651   AM_RANGE(0x10000000, 0x10001fff) AM_READWRITE16(dsp_shared_r, dsp_shared_w, 0xffff0000)
639652ADDRESS_MAP_END
640653
641654
r32534r32535
909922   AM_RANGE(0x701d, 0x701d) AM_READ(dsp_math_projection_y_r)
910923   AM_RANGE(0x701f, 0x701f) AM_READ(dsp_math_projection_x_r)
911924   AM_RANGE(0x7022, 0x7022) AM_READ(dsp_math_unk_r)
912   AM_RANGE(0x7800, 0x7fff) AM_DEVREADWRITE8("mb8421", mb8421_device, right_r, right_w, 0x00ff)
913   AM_RANGE(0x7800, 0x7fff) AM_READWRITE8(dsp_shared_r, dsp_shared_w, 0xff00) // which chip is this?
925   AM_RANGE(0x7ffe, 0x7ffe) AM_WRITE(dsp_to_main_7fe_w)
926   AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("dsp_shared")
914927   AM_RANGE(0x8000, 0xffff) AM_RAM
915928ADDRESS_MAP_END
916929
r32534r32535
10901103   m_dsp_tex_offset = 0;
10911104   m_polygon_fifo_ptr = 0;
10921105
1093   memset(m_dsp_shared_ram_hi, 0, sizeof(m_dsp_shared_ram_hi));
10941106   memset(m_viewport_data, 0, sizeof(m_viewport_data));
10951107   memset(m_projection_data, 0, sizeof(m_projection_data));
10961108   memset(m_intersection_data, 0, sizeof(m_intersection_data));
r32534r32535
11081120   save_item(NAME(m_dsp_tex_address));
11091121   save_item(NAME(m_dsp_tex_offset));
11101122   save_item(NAME(m_first_dsp_reset));
1111   save_item(NAME(m_dsp_shared_ram_hi));
11121123   save_item(NAME(m_viewport_data));
11131124   save_item(NAME(m_projection_data));
11141125   save_item(NAME(m_intersection_data));
r32534r32535
11461157
11471158   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
11481159
1149   MCFG_DEVICE_ADD("mb8421", MB8421, 0)
1150   MCFG_MB8421_INTL_HANDLER(WRITELINE(taitojc_state, mb8421_intl))
1151   MCFG_MB8421_INTR_HANDLER(WRITELINE(taitojc_state, mb8421_intr))
1152
11531160   MCFG_DEVICE_ADD("tc0640fio", TC0640FIO, 0)
11541161   MCFG_TC0640FIO_READ_0_CB(IOPORT("SERVICE"))
11551162   MCFG_TC0640FIO_READ_1_CB(IOPORT("COINS"))
r32534r32535
12011208   if (space.device().safe_pc() == 0x404c)
12021209      space.device().execute().spin_until_time(attotime::from_usec(500));
12031210
1204   return m_dsp_shared_ram_hi[0x7f0] << 8 | m_mb8421->peek(0x7f0);
1211   return m_dsp_shared_ram[0x7f0];
12051212}
12061213
12071214READ16_MEMBER(taitojc_state::dendego2_dsp_idle_skip_r)
r32534r32535
12091216   if (space.device().safe_pc() == 0x402e)
12101217      space.device().execute().spin_until_time(attotime::from_usec(500));
12111218
1212   return m_dsp_shared_ram_hi[0x7f0] << 8 | m_mb8421->peek(0x7f0);
1219   return m_dsp_shared_ram[0x7f0];
12131220}
12141221
12151222

Previous 199869 Revisions Next


© 1997-2024 The MAME Team