summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author smf- <smf-@users.noreply.github.com>2011-06-02 14:28:41 +0000
committer smf- <smf-@users.noreply.github.com>2011-06-02 14:28:41 +0000
commit36f4054d6b34d7a9f2e20ab04f6d92cd2adc341b (patch)
treeef4f2c0b13e7d48f8c451a40844bf5b7f41bf500 /src
parent04490d67e902fb0990572fe13081c6c73f214945 (diff)
added MCFG_PSXGPU_ADD for adding the gpu device and hooking up the dma to the cpu.
Diffstat (limited to 'src')
-rw-r--r--src/emu/video/psx.c24
-rw-r--r--src/emu/video/psx.h11
-rw-r--r--src/mame/drivers/konamigq.c2
-rw-r--r--src/mame/drivers/konamigv.c2
-rw-r--r--src/mame/drivers/ksys573.c2
-rw-r--r--src/mame/drivers/namcos10.c2
-rw-r--r--src/mame/drivers/namcos11.c2
-rw-r--r--src/mame/drivers/namcos12.c2
-rw-r--r--src/mame/drivers/taitogn.c2
-rw-r--r--src/mame/drivers/twinkle.c2
-rw-r--r--src/mame/drivers/zn.c4
-rw-r--r--src/mame/includes/psx.h2
-rw-r--r--src/mame/machine/psx.c19
13 files changed, 39 insertions, 37 deletions
diff --git a/src/emu/video/psx.c b/src/emu/video/psx.c
index d4479889f90..b6082b67ee7 100644
--- a/src/emu/video/psx.c
+++ b/src/emu/video/psx.c
@@ -2924,7 +2924,15 @@ void psxgpu_device::MoveImage( void )
}
}
-void psxgpu_device::dma_write( UINT32 *p_ram, INT32 n_size )
+void psxgpu_device::dma_write( UINT32 n_address, INT32 n_size )
+{
+ psx_state *p_psx = machine().driver_data<psx_state>();
+ UINT32 *p_n_psxram = p_psx->m_p_n_psxram;
+
+ gpu_write( &p_n_psxram[ n_address / 4 ], n_size );
+}
+
+void psxgpu_device::gpu_write( UINT32 *p_ram, INT32 n_size )
{
while( n_size > 0 )
{
@@ -3418,7 +3426,7 @@ WRITE32_MEMBER( psxgpu_device::write )
switch( offset )
{
case 0x00:
- dma_write( &data, 1 );
+ gpu_write( &data, 1 );
break;
case 0x01:
switch( data >> 24 )
@@ -3556,7 +3564,15 @@ WRITE32_MEMBER( psxgpu_device::write )
}
-void psxgpu_device::dma_read( UINT32 *p_ram, INT32 n_size )
+void psxgpu_device::dma_read( UINT32 n_address, INT32 n_size )
+{
+ psx_state *p_psx = machine().driver_data<psx_state>();
+ UINT32 *p_n_psxram = p_psx->m_p_n_psxram;
+
+ gpu_read( &p_n_psxram[ n_address / 4 ], n_size );
+}
+
+void psxgpu_device::gpu_read( UINT32 *p_ram, INT32 n_size )
{
while( n_size > 0 )
{
@@ -3611,7 +3627,7 @@ READ32_MEMBER( psxgpu_device::read )
switch( offset )
{
case 0x00:
- dma_read( &data, 1 );
+ gpu_read( &data, 1 );
break;
case 0x01:
data = n_gpustatus;
diff --git a/src/emu/video/psx.h b/src/emu/video/psx.h
index 105c6d3994b..383bcbedf25 100644
--- a/src/emu/video/psx.h
+++ b/src/emu/video/psx.h
@@ -12,6 +12,11 @@
#include "emu.h"
+#define MCFG_PSXGPU_ADD( cputag, tag, type, clock ) \
+ MCFG_DEVICE_ADD( tag, type, clock ) \
+ MCFG_PSX_DMA_CHANNEL_READ( cputag, 2, psx_dma_write_delegate( FUNC( psxgpu_device::dma_read ), (psxgpu_device *) device ) ) \
+ MCFG_PSX_DMA_CHANNEL_WRITE( cputag, 2, psx_dma_read_delegate( FUNC( psxgpu_device::dma_write ), (psxgpu_device *) device ) )
+
extern const device_type CXD8514Q;
extern const device_type CXD8538Q;
extern const device_type CXD8561Q;
@@ -168,8 +173,8 @@ public:
void update_screen(bitmap_t *bitmap, const rectangle *cliprect);
WRITE32_MEMBER( write );
READ32_MEMBER( read );
- void dma_read( UINT32 *p_ram, INT32 n_size );
- void dma_write( UINT32 *p_ram, INT32 n_size );
+ void dma_read( UINT32 n_address, INT32 n_size );
+ void dma_write( UINT32 n_address, INT32 n_size );
void lightgun_set( int, int );
void vblank( void );
@@ -195,6 +200,8 @@ protected:
void MoveImage( void );
void psx_gpu_init( int n_gputype );
void gpu_reset();
+ void gpu_read( UINT32 *p_ram, INT32 n_size );
+ void gpu_write( UINT32 *p_ram, INT32 n_size );
#if defined( MAME_DEBUG )
void DebugMeshInit( void );
diff --git a/src/mame/drivers/konamigq.c b/src/mame/drivers/konamigq.c
index 126415240ca..cd5d59004b9 100644
--- a/src/mame/drivers/konamigq.c
+++ b/src/mame/drivers/konamigq.c
@@ -391,7 +391,7 @@ static MACHINE_CONFIG_START( konamigq, konamigq_state )
MCFG_PALETTE_LENGTH( 65536 )
MCFG_PALETTE_INIT( psx )
- MCFG_DEVICE_ADD( "gpu", CXD8538Q, 0 )
+ MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8538Q, 0 )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/konamigv.c b/src/mame/drivers/konamigv.c
index 2ac40c5f679..a5027337e92 100644
--- a/src/mame/drivers/konamigv.c
+++ b/src/mame/drivers/konamigv.c
@@ -350,7 +350,7 @@ static MACHINE_CONFIG_START( konamigv, konamigv_state )
MCFG_PALETTE_LENGTH( 65536 )
MCFG_PALETTE_INIT( psx )
- MCFG_DEVICE_ADD( "gpu", CXD8514Q, 0 )
+ MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8514Q, 0 )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/ksys573.c b/src/mame/drivers/ksys573.c
index 6f6babbcb0e..20c3cfb40af 100644
--- a/src/mame/drivers/ksys573.c
+++ b/src/mame/drivers/ksys573.c
@@ -2988,7 +2988,7 @@ static MACHINE_CONFIG_START( konami573, ksys573_state )
MCFG_PALETTE_LENGTH( 65536 )
MCFG_PALETTE_INIT( psx )
- MCFG_DEVICE_ADD( "gpu", CXD8561Q, 0 )
+ MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561Q, 0 )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/namcos10.c b/src/mame/drivers/namcos10.c
index 36abdc2e79d..6320770e91c 100644
--- a/src/mame/drivers/namcos10.c
+++ b/src/mame/drivers/namcos10.c
@@ -491,7 +491,7 @@ static MACHINE_CONFIG_START( namcos10, namcos10_state )
MCFG_PALETTE_LENGTH( 65536 )
MCFG_PALETTE_INIT( psx )
- MCFG_DEVICE_ADD( "gpu", CXD8561CQ, 0 )
+ MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561CQ, 0 )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/namcos11.c b/src/mame/drivers/namcos11.c
index 7266108e985..2e22fdad940 100644
--- a/src/mame/drivers/namcos11.c
+++ b/src/mame/drivers/namcos11.c
@@ -1006,7 +1006,7 @@ static MACHINE_CONFIG_START( coh100, namcos11_state )
MCFG_PALETTE_LENGTH( 65536 )
MCFG_PALETTE_INIT( psx )
- MCFG_DEVICE_ADD( "gpu", CXD8538Q, 0 )
+ MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8538Q, 0 )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("c352", C352, 16384000)
diff --git a/src/mame/drivers/namcos12.c b/src/mame/drivers/namcos12.c
index 110590c766f..3ab850f16f7 100644
--- a/src/mame/drivers/namcos12.c
+++ b/src/mame/drivers/namcos12.c
@@ -1670,7 +1670,7 @@ static MACHINE_CONFIG_START( coh700, namcos12_state )
MCFG_PALETTE_LENGTH( 65536 )
MCFG_PALETTE_INIT( psx )
- MCFG_DEVICE_ADD( "gpu", CXD8654Q, 0 )
+ MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8654Q, 0 )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/taitogn.c b/src/mame/drivers/taitogn.c
index acb76f51278..84cafac4453 100644
--- a/src/mame/drivers/taitogn.c
+++ b/src/mame/drivers/taitogn.c
@@ -975,7 +975,7 @@ static MACHINE_CONFIG_START( coh3002t, taitogn_state )
MCFG_PALETTE_LENGTH( 65536 )
MCFG_PALETTE_INIT( psx )
- MCFG_DEVICE_ADD( "gpu", CXD8654Q, 0 )
+ MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8654Q, 0 )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/twinkle.c b/src/mame/drivers/twinkle.c
index acfd8e23309..402deef5a2c 100644
--- a/src/mame/drivers/twinkle.c
+++ b/src/mame/drivers/twinkle.c
@@ -906,7 +906,7 @@ static MACHINE_CONFIG_START( twinkle, twinkle_state )
MCFG_PALETTE_LENGTH( 65536 )
MCFG_PALETTE_INIT( psx )
- MCFG_DEVICE_ADD( "gpu", CXD8561Q, 0 )
+ MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561Q, 0 )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("speakerleft", "speakerright")
diff --git a/src/mame/drivers/zn.c b/src/mame/drivers/zn.c
index 7707eef46d9..eabae5145c7 100644
--- a/src/mame/drivers/zn.c
+++ b/src/mame/drivers/zn.c
@@ -502,7 +502,7 @@ static MACHINE_CONFIG_START( zn1_1mb_vram, zn_state )
MCFG_PALETTE_LENGTH( 65536 )
MCFG_PALETTE_INIT( psx )
- MCFG_DEVICE_ADD( "gpu", CXD8561Q, 0 )
+ MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561Q, 0 )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -538,7 +538,7 @@ static MACHINE_CONFIG_START( zn2, zn_state )
MCFG_PALETTE_LENGTH( 65536 )
MCFG_PALETTE_INIT( psx )
- MCFG_DEVICE_ADD( "gpu", CXD8654Q, 0 )
+ MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8654Q, 0 )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/includes/psx.h b/src/mame/includes/psx.h
index cacf38119bb..7b1df1d569b 100644
--- a/src/mame/includes/psx.h
+++ b/src/mame/includes/psx.h
@@ -32,8 +32,6 @@ VIDEO_START( psx_type2 );
SCREEN_UPDATE( psx );
INTERRUPT_GEN( psx_vblank );
extern void psx_gpu_reset( running_machine &machine );
-extern void psx_gpu_read( running_machine &, UINT32 *p_ram, INT32 n_size );
-extern void psx_gpu_write( running_machine &, UINT32 *p_ram, INT32 n_size );
READ32_HANDLER( psx_gpu_r );
WRITE32_HANDLER( psx_gpu_w );
extern void psx_lightgun_set( running_machine &, int, int );
diff --git a/src/mame/machine/psx.c b/src/mame/machine/psx.c
index 40a0f521860..965033068b8 100644
--- a/src/mame/machine/psx.c
+++ b/src/mame/machine/psx.c
@@ -84,22 +84,6 @@ void psx_sio_input( running_machine &machine, int n_port, int n_mask, int n_data
psxcpu_device::sio_input( *machine.device("maincpu"), "maincpu", n_port, n_mask, n_data );
}
-static void gpu_read( psx_state *p_psx, UINT32 n_address, INT32 n_size )
-{
- psxgpu_device *gpu = downcast<psxgpu_device *>( p_psx->machine().device("gpu") );
- UINT32 *p_n_psxram = p_psx->m_p_n_psxram;
-
- gpu->dma_read( &p_n_psxram[ n_address / 4 ], n_size );
-}
-
-static void gpu_write( psx_state *p_psx, UINT32 n_address, INT32 n_size )
-{
- psxgpu_device *gpu = downcast<psxgpu_device *>( p_psx->machine().device("gpu") );
- UINT32 *p_n_psxram = p_psx->m_p_n_psxram;
-
- gpu->dma_write( &p_n_psxram[ n_address / 4 ], n_size );
-}
-
void psx_driver_init( running_machine &machine )
{
psx_state *p_psx = machine.driver_data<psx_state>();
@@ -107,9 +91,6 @@ void psx_driver_init( running_machine &machine )
p_psx->b_need_sianniv_vblank_hack = !strcmp(machine.system().name, "sianniv");
p_psx->m_p_n_psxram = (UINT32 *)memory_get_shared(machine, "share1", p_psx->m_n_psxramsize);
-
- psx_dma_install_read_handler( machine, 2, psx_dma_read_delegate( FUNC( gpu_read ), p_psx ) );
- psx_dma_install_write_handler( machine, 2, psx_dma_write_delegate( FUNC( gpu_write ), p_psx ) );
}
SCREEN_UPDATE( psx )