Previous 199869 Revisions Next

r23537 Saturday 8th June, 2013 at 12:31:19 UTC by O. Galibert
naomi: Better IRQ isolation [O. Galibert]
[src/mame/drivers]chihiro.c naomi.c triforce.c
[src/mame/includes]dc.h
[src/mame/machine]dc.c naomig1.c naomig1.h
[src/mame/video]powervr2.c powervr2.h
[src/mess/drivers]dccons.c

trunk/src/mame/drivers/triforce.c
r23536r23537
547547MACHINE_CONFIG_END
548548
549549static MACHINE_CONFIG_DERIVED( triforcegd, triforce_base )
550   MCFG_NAOMI_GDROM_BOARD_ADD("rom_board", ":gdrom", "picreturn", NULL, "maincpu", NULL)
550   MCFG_NAOMI_GDROM_BOARD_ADD("rom_board", ":gdrom", "picreturn", NULL, "maincpu", NOOP)
551551MACHINE_CONFIG_END
552552
553553
trunk/src/mame/drivers/naomi.c
r23536r23537
24982498   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
24992499   MCFG_SCREEN_UPDATE_DEVICE("powervr2", powervr2_device, screen_update)
25002500   MCFG_PALETTE_LENGTH(0x1000)
2501   MCFG_POWERVR2_ADD("powervr2")
2501   MCFG_POWERVR2_ADD("powervr2", WRITE8(dc_state, pvr_irq))
25022502
25032503
25042504   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
r23536r23537
25212521 */
25222522
25232523static MACHINE_CONFIG_DERIVED( naomi, naomi_base )
2524   MCFG_NAOMI_ROM_BOARD_ADD("rom_board", "naomibd_eeprom", "maincpu", naomi_g1_irq)
2524   MCFG_NAOMI_ROM_BOARD_ADD("rom_board", "naomibd_eeprom", "maincpu", WRITE8(dc_state, g1_irq))
25252525MACHINE_CONFIG_END
25262526
25272527/*
r23536r23537
25292529 */
25302530
25312531static MACHINE_CONFIG_DERIVED( naomigd, naomi_base )
2532   MCFG_NAOMI_GDROM_BOARD_ADD("rom_board", ":gdrom", ":pic", "naomibd_eeprom", "maincpu", naomi_g1_irq)
2532   MCFG_NAOMI_GDROM_BOARD_ADD("rom_board", ":gdrom", ":pic", "naomibd_eeprom", "maincpu", WRITE8(dc_state, g1_irq))
25332533MACHINE_CONFIG_END
25342534
25352535/*
r23536r23537
25372537 */
25382538
25392539static MACHINE_CONFIG_DERIVED( naomim1, naomi_base )
2540   MCFG_NAOMI_M1_BOARD_ADD("rom_board", ":rom_key", "naomibd_eeprom", "maincpu", naomi_g1_irq)
2540   MCFG_NAOMI_M1_BOARD_ADD("rom_board", ":rom_key", "naomibd_eeprom", "maincpu", WRITE8(dc_state, g1_irq))
25412541MACHINE_CONFIG_END
25422542
25432543/*
r23536r23537
25452545 */
25462546
25472547static MACHINE_CONFIG_DERIVED( naomim2, naomi_base )
2548   MCFG_NAOMI_M2_BOARD_ADD("rom_board", ":rom_key", "naomibd_eeprom", "maincpu", naomi_g1_irq)
2548   MCFG_NAOMI_M2_BOARD_ADD("rom_board", ":rom_key", "naomibd_eeprom", "maincpu", WRITE8(dc_state, g1_irq))
25492549MACHINE_CONFIG_END
25502550
25512551/*
r23536r23537
25532553 */
25542554
25552555static MACHINE_CONFIG_DERIVED( naomim4, naomi_base )
2556   MCFG_NAOMI_M4_BOARD_ADD("rom_board", ":rom_key", "naomibd_eeprom", "maincpu", naomi_g1_irq)
2556   MCFG_NAOMI_M4_BOARD_ADD("rom_board", ":rom_key", "naomibd_eeprom", "maincpu", WRITE8(dc_state, g1_irq))
25572557MACHINE_CONFIG_END
25582558
25592559/*
r23536r23537
26002600   MCFG_CPU_MODIFY("maincpu")
26012601   MCFG_CPU_PROGRAM_MAP(aw_map)
26022602   MCFG_MACRONIX_29L001MC_ADD("awflash")
2603   MCFG_AW_ROM_BOARD_ADD("rom_board", ":rom_key", "maincpu", naomi_g1_irq)
2603   MCFG_AW_ROM_BOARD_ADD("rom_board", ":rom_key", "maincpu", WRITE8(dc_state, g1_irq))
26042604MACHINE_CONFIG_END
26052605
26062606static MACHINE_CONFIG_DERIVED( aw1c, aw_base )
trunk/src/mame/drivers/chihiro.c
r23536r23537
30693069MACHINE_CONFIG_END
30703070
30713071static MACHINE_CONFIG_DERIVED( chihirogd, chihiro_base )
3072   MCFG_NAOMI_GDROM_BOARD_ADD("rom_board", ":gdrom", "pic", NULL, "maincpu", NULL)
3072   MCFG_NAOMI_GDROM_BOARD_ADD("rom_board", ":gdrom", "pic", NULL, "maincpu", NOOP)
30733073MACHINE_CONFIG_END
30743074
30753075#define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \
trunk/src/mame/machine/dc.c
r23536r23537
1010#include "cpu/sh4/sh4.h"
1111#include "sound/aica.h"
1212#include "machine/mie.h"
13#include "machine/naomig1.h"
14#include "video/powervr2.h"
1315
1416#define DEBUG_REGISTERS (1)
1517
r23536r23537
8183   dc_update_interrupt_status();
8284}
8385
84void naomi_g1_irq(running_machine &machine)
86WRITE8_MEMBER(dc_state::g1_irq)
8587{
86   dc_state *state = machine.driver_data<dc_state>();
88   switch(data) {
89   case naomi_g1_device::DMA_GDROM_IRQ:
90      dc_sysctrl_regs[SB_ISTNRM] |= IST_DMA_GDROM;
91      break;
92   }
93   dc_update_interrupt_status();
94}
8795
88   state->dc_sysctrl_regs[SB_ISTNRM] |= IST_DMA_GDROM;
89   state->dc_update_interrupt_status();
96WRITE8_MEMBER(dc_state::pvr_irq)
97{
98   switch(data) {
99   case powervr2_device::EOXFER_YUV_IRQ:
100      dc_sysctrl_regs[SB_ISTNRM] |= IST_EOXFER_YUV;
101      break;
102
103   case powervr2_device::EOXFER_OPLST_IRQ:
104      dc_sysctrl_regs[SB_ISTNRM] |= IST_EOXFER_OPLST;
105      break;
106
107   case powervr2_device::EOXFER_OPMV_IRQ:
108      dc_sysctrl_regs[SB_ISTNRM] |= IST_EOXFER_OPMV;
109      break;
110
111   case powervr2_device::EOXFER_TRLST_IRQ:
112      dc_sysctrl_regs[SB_ISTNRM] |= IST_EOXFER_TRLST;
113      break;
114
115   case powervr2_device::EOXFER_TRMV_IRQ:
116      dc_sysctrl_regs[SB_ISTNRM] |= IST_EOXFER_TRMV;
117      break;
118
119   case powervr2_device::EOXFER_PTLST_IRQ:
120      dc_sysctrl_regs[SB_ISTNRM] |= IST_EOXFER_PTLST;
121      break;
122
123   case powervr2_device::VBL_IN_IRQ:
124      dc_sysctrl_regs[SB_ISTNRM] |= IST_VBL_IN;
125      break;
126
127   case powervr2_device::VBL_OUT_IRQ:
128      dc_sysctrl_regs[SB_ISTNRM] |= IST_VBL_OUT;
129      break;
130
131   case powervr2_device::HBL_IN_IRQ:
132      dc_sysctrl_regs[SB_ISTNRM] |= IST_VBL_IN;
133      break;
134
135   case powervr2_device::EOR_VIDEO_IRQ:
136      dc_sysctrl_regs[SB_ISTNRM] |= IST_EOR_VIDEO;
137      break;
138
139   case powervr2_device::EOR_TSP_IRQ:
140      dc_sysctrl_regs[SB_ISTNRM] |= IST_EOR_TSP;
141      break;
142
143   case powervr2_device::EOR_ISP_IRQ:
144      dc_sysctrl_regs[SB_ISTNRM] |= IST_EOR_ISP;
145      break;
146
147   case powervr2_device::DMA_PVR_IRQ:
148      dc_sysctrl_regs[SB_ISTNRM] |= IST_DMA_PVR;
149      break;
150   }
151   dc_update_interrupt_status();
90152}
91153
92154void dc_maple_irq(running_machine &machine)
trunk/src/mame/machine/naomig1.c
r23536r23537
2424ADDRESS_MAP_END
2525
2626naomi_g1_device::naomi_g1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock)
27   : device_t(mconfig, type, name, tag, owner, clock)
27   : device_t(mconfig, type, name, tag, owner, clock),
28     irq_cb(*this)
2829{
2930   cpu = 0;
3031}
3132
32void naomi_g1_device::static_set_maincpu_tag(device_t &device, const char *maincpu_tag)
33void naomi_g1_device::set_maincpu_tag(const char *_maincpu_tag)
3334{
34   naomi_g1_device &naomi_g1 = downcast<naomi_g1_device &>(device);
35   naomi_g1.maincpu_tag = maincpu_tag;
35   maincpu_tag = _maincpu_tag;
3636}
3737
38void naomi_g1_device::static_set_irq_cb(device_t &device, void (*irq_cb)(running_machine &))
39{
40   naomi_g1_device &naomi_g1 = downcast<naomi_g1_device &>(device);
41   naomi_g1.irq_cb = irq_cb;
42}
43
4438void naomi_g1_device::device_start()
4539{
4640   cpu = machine().device<sh4_device>(maincpu_tag);
4741   timer = timer_alloc(G1_TIMER_ID);
42   irq_cb.resolve_safe();
4843
4944   save_item(NAME(gdstar));
5045   save_item(NAME(gdlen));
r23536r23537
6863   if(!gdst)
6964      return;
7065   gdst = 0;
71   if(irq_cb)
72      irq_cb(machine());
66   irq_cb(DMA_GDROM_IRQ);
7367}
7468
7569READ32_MEMBER(naomi_g1_device::sb_gdstar_r)
trunk/src/mame/machine/naomig1.h
r23536r23537
22#define _NAOMIG1_H_
33
44#include "cpu/sh4/sh4.h"
5#include "includes/dc.h"
56
67#define MCFG_NAOMI_G1_ADD(_tag, type, _maincpu_tag, _irq_cb)            \
78   MCFG_DEVICE_ADD(_tag, type, 0)                                      \
8   naomi_g1_device::static_set_maincpu_tag(*device, _maincpu_tag);     \
9   naomi_g1_device::static_set_irq_cb(*device, _irq_cb);
9   downcast<naomi_g1_device *>(device)->set_maincpu_tag(_maincpu_tag); \
10   downcast<naomi_g1_device *>(device)->set_irq_cb(DEVCB2_ ## _irq_cb);
1011
1112class naomi_g1_device : public device_t
1213{
1314public:
15   enum {
16      DMA_GDROM_IRQ
17   };
18
1419   naomi_g1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock);
15   static void static_set_maincpu_tag(device_t &device, const char *maincpu_tag);
16   static void static_set_irq_cb(device_t &device, void (*irq_cb)(running_machine &));
20   void set_maincpu_tag(const char *maincpu_tag);
21   template<class _cb> void set_irq_cb(_cb cb) { irq_cb.set_callback(cb); }
1722
1823   DECLARE_ADDRESS_MAP(amap, 32);
1924
r23536r23537
5964   sh4_device *cpu;
6065   const char *maincpu_tag;
6166   emu_timer *timer;
62   void (*irq_cb)(running_machine &);
67   devcb2_write8 irq_cb;
6368
6469   void dma(void *dma_ptr, UINT32 main_adr, UINT32 size, bool to_mainram);
6570};
trunk/src/mame/video/powervr2.c
r23536r23537
124124---- ---- ---- ---- ---x ---- ---- ---- hsync
125125---- ---- ---- ---- ---- x--- ---- ---- blank
126126---- ---- ---- ---- ---- -x-- ---- ---- field number
127---- ---- ---- ---- ---- --xx xxxx xxxx state->scanline
127---- ---- ---- ---- ---- --xx xxxx xxxx scanline
128128*/
129129
130130
r23536r23537
832832
833833      static const int mipmap_4_8_offset[8] = { 0x00018, 0x00058, 0x00158, 0x00558, 0x01558, 0x05558, 0x15558, 0x55558 };  // 4bpp (4bit offset) / 8bpp (8bit offset)
834834      static const int mipmap_np_offset[8] =  { 0x00030, 0x000B0, 0x002B0, 0x00AB0, 0x02AB0, 0x0AAB0, 0x2AAB0, 0xAAAB0 };  // nonpalette textures
835      static const int mipmap_vq_offset[8] =  { 0x00006, 0x00016, 0x00056, 0x00156, 0x00556, 0x01556, 0x05556, 0x15556 }; // vq textures
835      static const int mipmap_vq_offset[8] =  { 0x00006, 0x00016, 0x00056, 0x00156, 0x00556, 0x01556, 0x05556, 0x15556 }; // vq textures
836836
837837      switch (miptype)
838838      {
r23536r23537
11061106      printf("TA_YUV_TEX_BASE initialized to %08x\n", data);
11071107
11081108      // hack, this interrupt is generated after transfering a set amount of data
1109      //state->state->dc_sysctrl_regs[SB_ISTNRM] |= IST_EOXFER_YUV;
1110      //state->state->dc_update_interrupt_status();
1109      //irq_cb(EOXFER_YUV_IRQ);
11111110
11121111      break;
11131112   case TA_YUV_TEX_CTRL:
r23536r23537
11601159
11611160TIMER_CALLBACK_MEMBER(powervr2_device::transfer_opaque_list_irq)
11621161{
1163   dc_state *state = machine().driver_data<dc_state>();
1164   state->dc_sysctrl_regs[SB_ISTNRM] |= IST_EOXFER_OPLST;
1165   state->dc_update_interrupt_status();
1162   irq_cb(EOXFER_OPLST_IRQ);
11661163}
11671164
11681165TIMER_CALLBACK_MEMBER(powervr2_device::transfer_opaque_modifier_volume_list_irq)
11691166{
1170   dc_state *state = machine().driver_data<dc_state>();
1171   state->dc_sysctrl_regs[SB_ISTNRM] |= IST_EOXFER_OPMV;
1172   state->dc_update_interrupt_status();
1167   irq_cb(EOXFER_OPMV_IRQ);
11731168}
11741169
11751170TIMER_CALLBACK_MEMBER(powervr2_device::transfer_translucent_list_irq)
11761171{
1177   dc_state *state = machine().driver_data<dc_state>();
1178   state->dc_sysctrl_regs[SB_ISTNRM] |= IST_EOXFER_TRLST;
1179   state->dc_update_interrupt_status();
1172   irq_cb(EOXFER_TRLST_IRQ);
11801173}
11811174
11821175TIMER_CALLBACK_MEMBER(powervr2_device::transfer_translucent_modifier_volume_list_irq)
11831176{
1184   dc_state *state = machine().driver_data<dc_state>();
1185   state->dc_sysctrl_regs[SB_ISTNRM] |= IST_EOXFER_TRMV;
1186   state->dc_update_interrupt_status();
1177   irq_cb(EOXFER_TRMV_IRQ);
11871178}
11881179
11891180TIMER_CALLBACK_MEMBER(powervr2_device::transfer_punch_through_list_irq)
11901181{
1191   dc_state *state = machine().driver_data<dc_state>();
1192   state->dc_sysctrl_regs[SB_ISTNRM] |= (1 << 21);
1193   state->dc_update_interrupt_status();
1182   irq_cb(EOXFER_PTLST_IRQ);
11941183}
11951184
11961185void powervr2_device::process_ta_fifo()
r23536r23537
15111500
15121501WRITE64_MEMBER( powervr2_device::ta_fifo_yuv_w )
15131502{
1514   //dc_state *state = space.machine().driver_data<dc_state>();
1515
1516//  int reg;
1517//  UINT64 shift;
1518//  UINT32 dat;
1519
1520//  reg = decode_reg_64(offset, mem_mask, &shift);
1521//  dat = (UINT32)(data >> shift);
1522
1523//  printf("YUV FIFO: [%08x=%x] write %" I64FMT "x to %x, mask %" I64FMT "x %08x\n", 0x10800000+reg*4, dat, data, offset, mem_mask,test);
15241503}
15251504
15261505// SB_LMMODE0
r23536r23537
23762355
23772356TIMER_CALLBACK_MEMBER(powervr2_device::vbin)
23782357{
2379   dc_state *state = machine().driver_data<dc_state>();
2380   state->dc_sysctrl_regs[SB_ISTNRM] |= IST_VBL_IN; // V Blank-in interrupt
2381   state->dc_update_interrupt_status();
2358   irq_cb(VBL_IN_IRQ);
23822359
23832360   vbin_timer->adjust(machine().primary_screen->time_until_pos(spg_vblank_in_irq_line_num));
23842361}
23852362
23862363TIMER_CALLBACK_MEMBER(powervr2_device::vbout)
23872364{
2388   dc_state *state = machine().driver_data<dc_state>();
2389   state->dc_sysctrl_regs[SB_ISTNRM] |= IST_VBL_OUT; // V Blank-out interrupt
2390   state->dc_update_interrupt_status();
2365   irq_cb(VBL_OUT_IRQ);
23912366
23922367   vbout_timer->adjust(machine().primary_screen->time_until_pos(spg_vblank_out_irq_line_num));
23932368}
r23536r23537
23982373   {
23992374      if(scanline == next_y)
24002375      {
2401         dc_state *state = machine().driver_data<dc_state>();
2402         state->dc_sysctrl_regs[SB_ISTNRM] |= IST_HBL_IN; // H Blank-in interrupt
2403         state->dc_update_interrupt_status();
2376         irq_cb(HBL_IN_IRQ);
24042377         next_y+=spg_line_comp_val;
24052378      }
24062379   }
24072380   else if((scanline == spg_line_comp_val) || (spg_hblank_int_mode & 2))
24082381   {
2409      dc_state *state = machine().driver_data<dc_state>();
2410      state->dc_sysctrl_regs[SB_ISTNRM] |= IST_HBL_IN; // H Blank-in interrupt
2411      state->dc_update_interrupt_status();
2382      irq_cb(HBL_IN_IRQ);
24122383   }
24132384
24142385//  printf("hbin on scanline %d\n",scanline);
r23536r23537
24282399
24292400TIMER_CALLBACK_MEMBER(powervr2_device::endofrender_video)
24302401{
2431   dc_state *state = machine().driver_data<dc_state>();
2432   state->dc_sysctrl_regs[SB_ISTNRM] |= IST_EOR_VIDEO;// VIDEO end of render
2433   state->dc_update_interrupt_status();
2402   irq_cb(EOR_VIDEO_IRQ); // VIDEO end of render
24342403   endofrender_timer_video->adjust(attotime::never);
24352404}
24362405
24372406TIMER_CALLBACK_MEMBER(powervr2_device::endofrender_tsp)
2438{
2439   dc_state *state = machine().driver_data<dc_state>();
2440   state->dc_sysctrl_regs[SB_ISTNRM] |= IST_EOR_TSP;  // TSP end of render
2441   state->dc_update_interrupt_status();
2407{   
2408   irq_cb(EOR_TSP_IRQ); // TSP end of render
24422409
24432410   endofrender_timer_tsp->adjust(attotime::never);
24442411   endofrender_timer_video->adjust(attotime::from_usec(500) );
r23536r23537
24462413
24472414TIMER_CALLBACK_MEMBER(powervr2_device::endofrender_isp)
24482415{
2449   dc_state *state = machine().driver_data<dc_state>();
2450   state->dc_sysctrl_regs[SB_ISTNRM] |= IST_EOR_ISP;  // ISP end of render
2451   state->dc_update_interrupt_status();
2416   irq_cb(EOR_ISP_IRQ); // ISP end of render
24522417
24532418   endofrender_timer_isp->adjust(attotime::never);
24542419   endofrender_timer_tsp->adjust(attotime::from_usec(500) );
r23536r23537
25742539
25752540TIMER_CALLBACK_MEMBER(powervr2_device::pvr_dma_irq)
25762541{
2577   dc_state *state = machine().driver_data<dc_state>();
25782542   m_pvr_dma.start = pvrctrl_regs[SB_PDST] = 0;
2579   state->dc_sysctrl_regs[SB_ISTNRM] |= IST_DMA_PVR;
2580   state->dc_update_interrupt_status();
2543   irq_cb(DMA_PVR_IRQ);
25812544}
25822545
25832546READ32_MEMBER(powervr2_device::pvr_ctrl_r)
r23536r23537
26602623}
26612624
26622625powervr2_device::powervr2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
2663   : device_t(mconfig, POWERVR2, "PowerVR 2", tag, owner, clock)
2626   : device_t(mconfig, POWERVR2, "PowerVR 2", tag, owner, clock),
2627     irq_cb(*this)
26642628{
26652629}
26662630
26672631void powervr2_device::device_start()
26682632{
2633   irq_cb.resolve_safe();
2634
26692635   memset(pvrctrl_regs, 0, sizeof(pvrctrl_regs));
26702636   memset(pvrta_regs, 0, sizeof(pvrta_regs));
26712637   memset(grab, 0, sizeof(grab));
trunk/src/mame/video/powervr2.h
r23536r23537
11#ifndef __POWERVR2_H__
22#define __POWERVR2_H__
33
4#define MCFG_POWERVR2_ADD(_tag)  \
5   MCFG_DEVICE_ADD(_tag, POWERVR2, 0)
4#define MCFG_POWERVR2_ADD(_tag, _irq_cb)                            \
5   MCFG_DEVICE_ADD(_tag, POWERVR2, 0)                                  \
6   downcast<powervr2_device *>(device)->set_irq_cb(DEVCB2_ ## _irq_cb);
67
78class powervr2_device : public device_t
89{
910public:
1011   enum { NUM_BUFFERS = 4 };
12   enum {
13      EOXFER_YUV_IRQ,
14      EOXFER_OPLST_IRQ,
15      EOXFER_OPMV_IRQ,
16      EOXFER_TRLST_IRQ,
17      EOXFER_TRMV_IRQ,
18      EOXFER_PTLST_IRQ,
19      VBL_IN_IRQ,
20      VBL_OUT_IRQ,
21      HBL_IN_IRQ,
22      EOR_VIDEO_IRQ,
23      EOR_TSP_IRQ,
24      EOR_ISP_IRQ,
25      DMA_PVR_IRQ
26   };
1127
1228   struct {
1329      UINT32 pvr_addr;
r23536r23537
110126   int next_y;
111127
112128   powervr2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
129   template<class _cb> void set_irq_cb(_cb cb) { irq_cb.set_callback(cb); }
113130
114131   DECLARE_READ32_MEMBER( pvr_ctrl_r );
115132   DECLARE_WRITE32_MEMBER( pvr_ctrl_w );
r23536r23537
147164   virtual void device_reset();
148165
149166private:
167   devcb2_write8 irq_cb;
168
150169   static UINT32 (*const blend_functions[64])(UINT32 s, UINT32 d);
151170
152171   static inline INT32 clamp(INT32 in, INT32 min, INT32 max);
trunk/src/mame/includes/dc.h
r23536r23537
5252   virtual void machine_start();
5353   virtual void machine_reset();
5454   TIMER_CALLBACK_MEMBER(aica_dma_irq);
55   TIMER_CALLBACK_MEMBER(pvr_dma_irq);
5655   TIMER_CALLBACK_MEMBER(ch2_dma_irq);
5756   TIMER_CALLBACK_MEMBER(yuv_fifo_irq);
5857   TIMER_CALLBACK_MEMBER(dc_rtc_increment);
r23536r23537
7776   DECLARE_WRITE64_MEMBER( dc_modem_w );
7877   DECLARE_READ64_MEMBER( dc_rtc_r );
7978   DECLARE_WRITE64_MEMBER( dc_rtc_w );
79   DECLARE_WRITE8_MEMBER( g1_irq );
80   DECLARE_WRITE8_MEMBER( pvr_irq );
8081
8182   required_device<cpu_device> m_maincpu;
8283   required_device<cpu_device> m_soundcpu;
r23536r23537
318319/* 0x005f8600 - 0x005f8f5c TA_OL_POINTERS (read only) */
319320
320321/* ------------- normal interrupts ------------- */
321#define IST_EOR_VIDEO   0x00000001
322#define IST_EOR_ISP 0x00000002
323#define IST_EOR_TSP 0x00000004
324#define IST_VBL_IN  0x00000008
325#define IST_VBL_OUT 0x00000010
326#define IST_HBL_IN  0x00000020
327#define IST_EOXFER_YUV  0x00000040
322#define IST_EOR_VIDEO    0x00000001
323#define IST_EOR_ISP      0x00000002
324#define IST_EOR_TSP      0x00000004
325#define IST_VBL_IN       0x00000008
326#define IST_VBL_OUT      0x00000010
327#define IST_HBL_IN       0x00000020
328#define IST_EOXFER_YUV   0x00000040
328329#define IST_EOXFER_OPLST 0x00000080
329#define IST_EOXFER_OPMV 0x00000100
330#define IST_EOXFER_OPMV 0x00000100
330331#define IST_EOXFER_TRLST 0x00000200
331#define IST_EOXFER_TRMV 0x00000400
332#define IST_DMA_PVR 0x00000800
333#define IST_DMA_MAPLE   0x00001000
334#define IST_DMA_MAPLEVB 0x00002000
335#define IST_DMA_GDROM   0x00004000
336#define IST_DMA_AICA    0x00008000
337#define IST_DMA_EXT1    0x00010000
338#define IST_DMA_EXT2    0x00020000
339#define IST_DMA_DEV 0x00040000
340#define IST_DMA_CH2 0x00080000
341#define IST_DMA_SORT    0x00100000
342#define IST_G1G2EXTSTAT 0x40000000
343#define IST_ERROR   0x80000000
332#define IST_EOXFER_TRMV  0x00000400
333#define IST_DMA_PVR      0x00000800
334#define IST_DMA_MAPLE    0x00001000
335#define IST_DMA_MAPLEVB  0x00002000
336#define IST_DMA_GDROM    0x00004000
337#define IST_DMA_AICA     0x00008000
338#define IST_DMA_EXT1     0x00010000
339#define IST_DMA_EXT2     0x00020000
340#define IST_DMA_DEV      0x00040000
341#define IST_DMA_CH2      0x00080000
342#define IST_DMA_SORT     0x00100000
343#define IST_EOXFER_PTLST 0x00200000
344#define IST_G1G2EXTSTAT  0x40000000
345#define IST_ERROR        0x80000000
344346/* ------------ external interrupts ------------ */
345347#define IST_EXT_EXTERNAL    0x00000008
346348#define IST_EXT_MODEM   0x00000004
trunk/src/mess/drivers/dccons.c
r23536r23537
206206   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
207207   MCFG_SCREEN_UPDATE_DEVICE("powervr2", powervr2_device, screen_update)
208208   MCFG_PALETTE_LENGTH(0x1000)
209   MCFG_POWERVR2_ADD("powervr2")
209   MCFG_POWERVR2_ADD("powervr2", WRITE8(dc_state, pvr_irq))
210210
211211   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
212212   MCFG_SOUND_ADD("aica", AICA, 0)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team