Previous 199869 Revisions Next

r22560 Friday 26th April, 2013 at 16:51:38 UTC by smf
PSX CPU creates a ram device, this has exposed a problem with not removing the child devices from the hash map when removing replacing devices. At the moment I have changed device.c so that when any device is removed the hash maps are reset. [smf]
[src/emu]device.c
[src/emu/cpu/psx]psx.c psx.h
[src/mame/drivers]konamigq.c konamigv.c ksys573.c namcos10.c namcos11.c namcos12.c taitogn.c twinkle.c zn.c
[src/mess/drivers]psx.c

trunk/src/mame/drivers/ksys573.c
r22559r22560
535535      driver_device(mconfig, type, tag),
536536      m_psxirq(*this, ":maincpu:irq"),
537537      m_cr589(*this, ":cdrom"),
538      m_maincpu(*this, "maincpu") { }
538      m_maincpu(*this, "maincpu"),
539      m_ram(*this, "maincpu:ram")
540   {
541   }
539542
540543   required_device<psxirq_device> m_psxirq;
541544
r22559r22560
667670   void mamboagg_output_callback( int offset, int data );
668671   void punchmania_output_callback( int offset, int data );
669672   required_device<psxcpu_device> m_maincpu;
673   required_device<ram_device> m_ram;
670674};
671675
672676void ATTR_PRINTF(3,4)  ksys573_state::verboselog( int n_level, const char *s_fmt, ... )
r22559r22560
14621466   {
14631467      /* patch out security-plate error */
14641468
1465      UINT32 *p_n_psxram = m_maincpu->ram();
1469      UINT32 *p_n_psxram = (UINT32 *) m_ram->pointer();
14661470
14671471      /* install cd */
14681472
r22559r22560
14861490   {
14871491      /* patch out security-plate error */
14881492
1489      UINT32 *p_n_psxram = m_maincpu->ram();
1493      UINT32 *p_n_psxram = (UINT32 *) m_ram->pointer();
14901494
14911495      /* 8001f850: jal $8003221c */
14921496      if( p_n_psxram[ 0x1f850 / 4 ] == 0x0c00c887 )
r22559r22560
30563060static MACHINE_CONFIG_START( konami573, ksys573_state )
30573061   /* basic machine hardware */
30583062   MCFG_CPU_ADD( "maincpu", CXD8530CQ, XTAL_67_7376MHz )
3059   MCFG_PSX_RAM_SIZE( 0x400000 )
30603063   MCFG_CPU_PROGRAM_MAP( konami573_map )
30613064
3065   MCFG_RAM_MODIFY("maincpu:ram")
3066   MCFG_RAM_DEFAULT_SIZE("4M")
3067
30623068   MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psx_dma_read_delegate( FUNC( ksys573_state::cdrom_dma_read ), (ksys573_state *) owner ) )
30633069   MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psx_dma_write_delegate( FUNC( ksys573_state::cdrom_dma_write ), (ksys573_state *) owner ) )
30643070
trunk/src/mame/drivers/taitogn.c
r22559r22560
833833static MACHINE_CONFIG_START( coh3002t, taitogn_state )
834834   /* basic machine hardware */
835835   MCFG_CPU_ADD( "maincpu", CXD8661R, XTAL_100MHz )
836   MCFG_PSX_RAM_SIZE( 0x400000 )
837836   MCFG_CPU_PROGRAM_MAP(taitogn_map)
838837
838   MCFG_RAM_MODIFY("maincpu:ram")
839   MCFG_RAM_DEFAULT_SIZE("4M")
840
839841   MCFG_DEVICE_ADD("maincpu:sio0:znsec0", ZNSEC, 0)
840842   MCFG_DEVICE_ADD("maincpu:sio0:znsec1", ZNSEC, 0)
841843   MCFG_DEVICE_ADD("maincpu:sio0:zndip", ZNDIP, 0)
trunk/src/mame/drivers/namcos11.c
r22559r22560
10101010static MACHINE_CONFIG_START( coh100, namcos11_state )
10111011   /* basic machine hardware */
10121012   MCFG_CPU_ADD( "maincpu", CXD8530AQ, XTAL_67_7376MHz )
1013   MCFG_PSX_RAM_SIZE( 0x400000 )
10141013   MCFG_CPU_PROGRAM_MAP( namcos11_map )
10151014
1015   MCFG_RAM_MODIFY("maincpu:ram")
1016   MCFG_RAM_DEFAULT_SIZE("4M")
1017
10161018   MCFG_CPU_ADD("c76", M37702, 16934400)
10171019   MCFG_CPU_PROGRAM_MAP(c76_map)
10181020   MCFG_CPU_IO_MAP(c76_io_map)
r22559r22560
10381040
10391041static MACHINE_CONFIG_DERIVED( coh110, coh100 )
10401042   MCFG_CPU_REPLACE( "maincpu", CXD8530CQ, XTAL_67_7376MHz )
1041   MCFG_PSX_RAM_SIZE( 0x400000 )
10421043   MCFG_CPU_PROGRAM_MAP( namcos11_map )
10431044
1045   MCFG_RAM_MODIFY("maincpu:ram")
1046   MCFG_RAM_DEFAULT_SIZE("4M")
1047
10441048   MCFG_PSXGPU_REPLACE( "maincpu", "gpu", CXD8561Q, 0x200000, XTAL_53_693175MHz )
10451049MACHINE_CONFIG_END
10461050
trunk/src/mame/drivers/konamigv.c
r22559r22560
306306static MACHINE_CONFIG_START( konamigv, konamigv_state )
307307   /* basic machine hardware */
308308   MCFG_CPU_ADD( "maincpu", CXD8530BQ, XTAL_67_7376MHz )
309   MCFG_PSX_RAM_SIZE( 0x200000 )
310309   MCFG_CPU_PROGRAM_MAP( konamigv_map )
311310
311   MCFG_RAM_MODIFY("maincpu:ram")
312   MCFG_RAM_DEFAULT_SIZE("2M")
313
312314   MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psx_dma_read_delegate( FUNC( konamigv_state::scsi_dma_read ), (konamigv_state *) owner ) )
313315   MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psx_dma_write_delegate( FUNC( konamigv_state::scsi_dma_write ), (konamigv_state *) owner ) )
314316
trunk/src/mame/drivers/zn.c
r22559r22560
3939      m_znsec1(*this,"maincpu:sio0:znsec1"),
4040      m_zndip(*this,"maincpu:sio0:zndip"),
4141      m_maincpu(*this, "maincpu"),
42      m_audiocpu(*this, "audiocpu") {
42      m_audiocpu(*this, "audiocpu"),
43      m_ram(*this, "maincpu:ram")
44   {
4345   }
4446
4547   required_device<psxgpu_device> m_gpu;
r22559r22560
6668   DECLARE_READ32_MEMBER(znsecsel_r);
6769   DECLARE_WRITE32_MEMBER(znsecsel_w);
6870   DECLARE_READ32_MEMBER(boardconfig_r);
69   DECLARE_READ32_MEMBER(boardconfig_8M_r);
7071   DECLARE_READ32_MEMBER(unknown_r);
7172   DECLARE_WRITE32_MEMBER(coin_w);
7273   DECLARE_READ32_MEMBER(capcom_kickharness_r);
r22559r22560
136137   DECLARE_WRITE_LINE_MEMBER(irqhandler);
137138   required_device<cpu_device> m_maincpu;
138139   optional_device<cpu_device> m_audiocpu;
140   required_device<ram_device> m_ram;
139141};
140142
141143inline void ATTR_PRINTF(3,4) zn_state::verboselog( int n_level, const char *s_fmt, ... )
r22559r22560
360362   111----- rev=5
361363   */
362364
365   int boardconfig = 64 | 32;
366
363367   if( machine().primary_screen->height() == 1024 )
364368   {
365      return 64|32|8;
369      boardconfig |= 8;
366370   }
367   else
371
372   switch( m_ram->size() )
368373   {
369      return 64|32;
370   }
371}
374   case 0x400000:
375      boardconfig |= 1;
376      break;
372377
373READ32_MEMBER(zn_state::boardconfig_8M_r)
374{
375   /*
376   ------00 mem=4M
377   ------01 mem=4M
378   ------10 mem=8M
379   ------11 mem=16M
380   -----0-- smem=hM
381   -----1-- smem=2M
382   ----0--- vmem=1M
383   ----1--- vmem=2M
384   000----- rev=-2
385   001----- rev=-1
386   010----- rev=0
387   011----- rev=1
388   100----- rev=2
389   101----- rev=3
390   110----- rev=4
391   111----- rev=5
392   */
378   case 0x800000:
379      boardconfig |= 2;
380      break;
393381
394   if( machine().primary_screen->height() == 1024 )
395   {
396      return 64|32|8|2;
382   case 0x1000000:
383      boardconfig |= 3;
384      break;
397385   }
398   else
399   {
400      return 64|32|2;
401   }
386
387   return boardconfig;
402388}
403389
404390READ32_MEMBER(zn_state::unknown_r)
r22559r22560
441427   AM_RANGE(0xbfc00000, 0xbfc7ffff) AM_WRITENOP AM_ROM AM_SHARE("share2") /* bios mirror */
442428ADDRESS_MAP_END
443429
444static ADDRESS_MAP_START( zn_8M_map, AS_PROGRAM, 32, zn_state )
445   AM_RANGE(0x1fa10200, 0x1fa10203) AM_READ(boardconfig_8M_r)
446   AM_IMPORT_FROM(zn_map)
447ADDRESS_MAP_END
448
449430static ADDRESS_MAP_START( link_map, AS_PROGRAM, 8, zn_state )
450431ADDRESS_MAP_END
451432
r22559r22560
470451static MACHINE_CONFIG_START( zn1_1mb_vram, zn_state )
471452   /* basic machine hardware */
472453   MCFG_CPU_ADD( "maincpu", CXD8530CQ, XTAL_67_7376MHz )
473   MCFG_PSX_RAM_SIZE( 0x400000 )
474454   MCFG_CPU_PROGRAM_MAP( zn_map)
475455
456   MCFG_RAM_MODIFY("maincpu:ram")
457   MCFG_RAM_DEFAULT_SIZE("4M")
458
476459   MCFG_DEVICE_ADD("maincpu:sio0:znsec0", ZNSEC, 0)
477460   MCFG_DEVICE_ADD("maincpu:sio0:znsec1", ZNSEC, 0)
478461   MCFG_DEVICE_ADD("maincpu:sio0:zndip", ZNDIP, 0)
r22559r22560
498481static MACHINE_CONFIG_START( zn2, zn_state )
499482   /* basic machine hardware */
500483   MCFG_CPU_ADD( "maincpu", CXD8661R, XTAL_100MHz )
501   MCFG_PSX_RAM_SIZE( 0x400000 )
502484   MCFG_CPU_PROGRAM_MAP( zn_map)
503485
486   MCFG_RAM_MODIFY("maincpu:ram")
487   MCFG_RAM_DEFAULT_SIZE("4M")
488
504489   MCFG_DEVICE_ADD("maincpu:sio0:znsec0", ZNSEC, 0)
505490   MCFG_DEVICE_ADD("maincpu:sio0:znsec1", ZNSEC, 0)
506491   MCFG_DEVICE_ADD("maincpu:sio0:zndip", ZNDIP, 0)
r22559r22560
14471432}
14481433
14491434static MACHINE_CONFIG_DERIVED( coh1000w, zn1_2mb_vram )
1450   MCFG_CPU_MODIFY("maincpu")
1451   MCFG_PSX_RAM_SIZE( 0x800000 )
1452   MCFG_CPU_PROGRAM_MAP(zn_8M_map)
1435   MCFG_RAM_MODIFY("maincpu:ram")
1436   MCFG_RAM_DEFAULT_SIZE("8M")
14531437
14541438   MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1000w )
14551439
trunk/src/mame/drivers/namcos10.c
r22559r22560
595595static MACHINE_CONFIG_START( namcos10_memm, namcos10_state )
596596   /* basic machine hardware */
597597   MCFG_CPU_ADD( "maincpu", CXD8606BQ, XTAL_101_4912MHz )
598   MCFG_PSX_RAM_SIZE( 0x1000000 )
599598   MCFG_CPU_PROGRAM_MAP( namcos10_memm_map )
600599
600   MCFG_RAM_MODIFY("maincpu:ram")
601   MCFG_RAM_DEFAULT_SIZE("16M")
602
601603   MCFG_MACHINE_RESET_OVERRIDE(namcos10_state, namcos10 )
602604
603605   /* video hardware */
r22559r22560
610612static MACHINE_CONFIG_START( namcos10_memn, namcos10_state )
611613   /* basic machine hardware */
612614   MCFG_CPU_ADD( "maincpu", CXD8606BQ, XTAL_101_4912MHz )
613   MCFG_PSX_RAM_SIZE( 0x1000000 )
614615   MCFG_CPU_PROGRAM_MAP( namcos10_memn_map )
615616
617   MCFG_RAM_MODIFY("maincpu:ram")
618   MCFG_RAM_DEFAULT_SIZE("16M")
619
616620   MCFG_MACHINE_RESET_OVERRIDE(namcos10_state, namcos10 )
617621
618622   /* video hardware */
trunk/src/mame/drivers/namcos12.c
r22559r22560
10441044public:
10451045   namcos12_state(const machine_config &mconfig, device_type type, const char *tag)
10461046      : driver_device(mconfig, type, tag),
1047         m_rtc(*this, "rtc"),
1048         m_sharedram(*this, "sharedram") ,
1049      m_maincpu(*this, "maincpu") { }
1047      m_rtc(*this, "rtc"),
1048      m_sharedram(*this, "sharedram") ,
1049      m_maincpu(*this, "maincpu"),
1050      m_ram(*this, "maincpu:ram")
1051   {
1052   }
10501053
10511054   required_device<rtc4543_device> m_rtc;
10521055   required_shared_ptr<UINT32> m_sharedram;
r22559r22560
11021105   void namcos12_sub_irq( screen_device &screen, bool vblank_state );
11031106   void system11gun_install(  );
11041107   required_device<psxcpu_device> m_maincpu;
1108   required_device<ram_device> m_ram;
11051109};
11061110
11071111inline void ATTR_PRINTF(3,4) namcos12_state::verboselog( int n_level, const char *s_fmt, ... )
r22559r22560
11931197   INT32 n_ramleft;
11941198
11951199   // TODO: the check for going past the end of ram should be in dma.c
1196   UINT32 m_n_psxramsize = m_maincpu->ram_size();
1200   UINT32 m_n_psxramsize = m_ram->size();
11971201
11981202   if(m_has_tektagt_dma && !m_n_dmaoffset)
11991203   {
r22559r22560
16211625static MACHINE_CONFIG_START( coh700, namcos12_state )
16221626   /* basic machine hardware */
16231627   MCFG_CPU_ADD( "maincpu", CXD8661R, XTAL_100MHz )
1624   MCFG_PSX_RAM_SIZE( 0x400000 )
16251628   MCFG_CPU_PROGRAM_MAP( namcos12_map)
16261629
1630   MCFG_RAM_MODIFY("maincpu:ram")
1631   MCFG_RAM_DEFAULT_SIZE("4M")
1632
16271633   MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psx_dma_read_delegate( FUNC( namcos12_state::namcos12_rom_read ), (namcos12_state *) owner ) )
16281634
16291635   MCFG_CPU_ADD("sub", H83002, 16737350 )
trunk/src/mame/drivers/konamigq.c
r22559r22560
311311static MACHINE_CONFIG_START( konamigq, konamigq_state )
312312   /* basic machine hardware */
313313   MCFG_CPU_ADD( "maincpu", CXD8530BQ, XTAL_67_7376MHz )
314   MCFG_PSX_RAM_SIZE( 0x400000 )
315314   MCFG_CPU_PROGRAM_MAP( konamigq_map )
316315
316   MCFG_RAM_MODIFY("maincpu:ram")
317   MCFG_RAM_DEFAULT_SIZE("4M")
318
317319   MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psx_dma_read_delegate( FUNC( konamigq_state::scsi_dma_read ), (konamigq_state *) owner ) )
318320   MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psx_dma_write_delegate( FUNC( konamigq_state::scsi_dma_write ), (konamigq_state *) owner ) )
319321
trunk/src/mame/drivers/twinkle.c
r22559r22560
853853static MACHINE_CONFIG_START( twinkle, twinkle_state )
854854   /* basic machine hardware */
855855   MCFG_CPU_ADD( "maincpu", CXD8530CQ, XTAL_67_7376MHz )
856   MCFG_PSX_RAM_SIZE( 0x400000 )
857856   MCFG_CPU_PROGRAM_MAP( main_map )
858857
858   MCFG_RAM_MODIFY("maincpu:ram")
859   MCFG_RAM_DEFAULT_SIZE("4M")
860
859861   MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psx_dma_read_delegate( FUNC( scsi_dma_read ), (twinkle_state *) owner ) )
860862   MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psx_dma_write_delegate( FUNC( scsi_dma_write ), (twinkle_state *) owner ) )
861863
trunk/src/emu/cpu/psx/psx.c
r22559r22560
12941294      break;
12951295   }
12961296
1297   assert( m_ram_size != 0 );
1297   UINT32 ram_size = m_ram->size();
1298   UINT8 *pointer = m_ram->pointer();
1299
12981300   assert( window_size != 0 );
12991301
13001302   int start = 0;
13011303   while( start < window_size )
13021304   {
1303      m_program->install_ram( start + 0x00000000, start + 0x00000000 + m_ram_size - 1, m_ram );
1304      m_program->install_ram( start + 0x80000000, start + 0x80000000 + m_ram_size - 1, m_ram );
1305      m_program->install_ram( start + 0xa0000000, start + 0xa0000000 + m_ram_size - 1, m_ram );
1305      m_program->install_ram( start + 0x00000000, start + 0x00000000 + ram_size - 1, pointer );
1306      m_program->install_ram( start + 0x80000000, start + 0x80000000 + ram_size - 1, pointer );
1307      m_program->install_ram( start + 0xa0000000, start + 0xa0000000 + ram_size - 1, pointer );
13061308
1307      start += m_ram_size;
1309      start += ram_size;
13081310   }
13091311
13101312   m_program->install_readwrite_handler( 0x00000000 + window_size, 0x1effffff, read32_delegate( FUNC(psxcpu_device::berr_r), this ), write32_delegate( FUNC(psxcpu_device::berr_w), this ) );
r22559r22560
16251627   m_spu_write_handler(*this),
16261628   m_cd_read_handler(*this),
16271629   m_cd_write_handler(*this),
1628   m_ram_size(0)
1630   m_ram(*this, "ram")
16291631{
16301632}
16311633
r22559r22560
16601662}
16611663
16621664//-------------------------------------------------
1663//  set_ram_size - configuration helper
1664//  to set the ram size
1665//-------------------------------------------------
1666
1667void psxcpu_device::set_ram_size(device_t &device, UINT32 ram_size)
1668{
1669   downcast<psxcpu_device &>(device).m_ram_size = ram_size;
1670}
1671
1672
1673//-------------------------------------------------
1674//  ram_size - temporary kludge to allow
1675//  access to the current ram size
1676//-------------------------------------------------
1677
1678UINT32 psxcpu_device::ram_size()
1679{
1680   return m_ram_size;
1681}
1682
1683//-------------------------------------------------
1684//  ram - temporary kludge to allow
1685//  access to the current ram
1686//-------------------------------------------------
1687
1688UINT32 *psxcpu_device::ram()
1689{
1690   return m_ram;
1691}
1692
1693//-------------------------------------------------
16941665//  device_start - start up the device
16951666//-------------------------------------------------
16961667
r22559r22560
18471818   m_spu_write_handler.resolve_safe();
18481819   m_cd_read_handler.resolve_safe(0);
18491820   m_cd_write_handler.resolve_safe();
1850
1851   m_ram = global_alloc_array( UINT32, m_ram_size / 4 );
1852   save_pointer( NAME(m_ram), m_ram_size / 4 );
1853
1854   m_ram_config = 0x800;
1855   update_ram_config();
1856
1857   /// TODO: get dma to acess ram through the memory map?
1858   psxdma_device *psxdma = subdevice<psxdma_device>( "dma" );
1859   psxdma->m_ram = m_ram;
1860   psxdma->m_ramsize = m_ram_size;
18611821}
18621822
18631823
18641824//-------------------------------------------------
1865//  device_stop - stop the device
1866//-------------------------------------------------
1867
1868void psxcpu_device::device_stop()
1869{
1870   global_free( m_ram );
1871}
1872
1873
1874//-------------------------------------------------
18751825//  device_reset - reset the device
18761826//-------------------------------------------------
18771827
18781828void psxcpu_device::device_reset()
18791829{
1830   m_ram_config = 0x800;
1831   update_ram_config();
1832
1833   /// TODO: get dma to access ram through the memory map?
1834   psxdma_device *psxdma = subdevice<psxdma_device>( "dma" );
1835   psxdma->m_ram = (UINT32 *) m_ram->pointer();
1836   psxdma->m_ramsize = m_ram->size();
1837
18801838   m_delayr = 0;
18811839   m_delayv = 0;
18821840   m_berr = 0;
r22559r22560
33203278
33213279   MCFG_DEVICE_ADD("sio1", PSX_SIO1, 0)
33223280   MCFG_PSX_SIO_IRQ_HANDLER(DEVWRITELINE("irq", psxirq_device, intin8))
3281
3282   MCFG_RAM_ADD("ram")
33233283MACHINE_CONFIG_END
33243284
33253285//-------------------------------------------------
trunk/src/emu/cpu/psx/psx.h
r22559r22560
1010#ifndef __PSXCPU_H__
1111#define __PSXCPU_H__
1212
13#include "emu.h"
14#include "machine/ram.h"
1315#include "dma.h"
1416#include "gte.h"
1517#include "irq.h"
r22559r22560
125127#define MCFG_PSX_CD_WRITE_HANDLER(_devcb) \
126128   devcb = &psxcpu_device::set_cd_write_handler(*device, DEVCB2_##_devcb);
127129
128#define MCFG_PSX_RAM_SIZE( size ) \
129   psxcpu_device::set_ram_size( *device, size );
130
131130//**************************************************************************
132131//  TYPE DEFINITIONS
133132//**************************************************************************
r22559r22560
147146   template<class _Object> static devcb2_base &set_spu_write_handler(device_t &device, _Object object) { return downcast<psxcpu_device &>(device).m_spu_write_handler.set_callback(object); }
148147   template<class _Object> static devcb2_base &set_cd_read_handler(device_t &device, _Object object) { return downcast<psxcpu_device &>(device).m_cd_read_handler.set_callback(object); }
149148   template<class _Object> static devcb2_base &set_cd_write_handler(device_t &device, _Object object) { return downcast<psxcpu_device &>(device).m_cd_write_handler.set_callback(object); }
150   static void set_ram_size(device_t &device, UINT32 size);
151149
152150   // public interfaces
153151   DECLARE_WRITE32_MEMBER( berr_w );
r22559r22560
173171
174172   static psxcpu_device *getcpu( device_t &device, const char *cputag );
175173
176   UINT32 ram_size();
177   UINT32 *ram();
178
179174protected:
180175   psxcpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock);
181176
182177   // device-level overrides
183178   virtual void device_start();
184   virtual void device_stop();
185179   virtual void device_reset();
186180   virtual void device_post_load();
187181   virtual machine_config_constructor device_mconfig_additions() const;
r22559r22560
319313   devcb2_write16 m_spu_write_handler;
320314   devcb2_read8 m_cd_read_handler;
321315   devcb2_write8 m_cd_write_handler;
322   UINT32 *m_ram;
323   UINT32 m_ram_size;
316   required_device<ram_device> m_ram;
324317};
325318
326319class cxd8530aq_device : public psxcpu_device
trunk/src/emu/device.c
r22559r22560
817817   // iterate over all devices and remove any references to the old device
818818   device_iterator iter(mconfig().root_device());
819819   for (device_t *scan = iter.first(); scan != NULL; scan = iter.next())
820      scan->m_device_map.remove(&old);
820      scan->m_device_map.reset(); //remove(&old);
821821
822822   // create a new device, and substitute it for the old one
823823   device_t *device = (*type)(mconfig(), tag, this, clock);
r22559r22560
840840   // iterate over all devices and remove any references
841841   device_iterator iter(mconfig().root_device());
842842   for (device_t *scan = iter.first(); scan != NULL; scan = iter.next())
843      scan->m_device_map.remove(&device);
843      scan->m_device_map.reset(); //remove(&device);
844844
845845   // remove from our list
846846   m_subdevice_list.remove(device);
trunk/src/mess/drivers/psx.c
r22559r22560
2525public:
2626   psx1_state(const machine_config &mconfig, device_type type, const char *tag)
2727      : driver_device(mconfig, type, tag) ,
28      m_maincpu(*this, "maincpu") { }
28      m_maincpu(*this, "maincpu"),
29      m_ram(*this, "maincpu:ram")
30   {
31   }
2932
3033   UINT8 *m_exe_buffer;
3134   int m_exe_size;
r22559r22560
5255   void cd_dma_write( UINT32 *p_n_psxram, UINT32 n_address, INT32 n_size );
5356   DECLARE_QUICKLOAD_LOAD_MEMBER( psx_exe_load );
5457   required_device<psxcpu_device> m_maincpu;
58   required_device<ram_device> m_ram;
5559};
5660
5761
r22559r22560
113117   if( n_len >= sizeof( struct PSXEXE_HEADER ) &&
114118      memcmp( psxexe_header->id, "PS-X EXE", 8 ) == 0 )
115119   {
116      UINT8 *p_ram;
117      UINT8 *p_psxexe;
118      UINT32 n_stack;
119      UINT32 n_ram;
120      UINT32 n_address;
121      UINT32 n_size;
122
123120      psxexe_conv32( &psxexe_header->text );
124121      psxexe_conv32( &psxexe_header->data );
125122      psxexe_conv32( &psxexe_header->pc0 );
r22559r22560
146143      logerror( "psx_exe_load: sp    %08x\n", psxexe_header->s_addr );
147144      logerror( "psx_exe_load: len   %08x\n", psxexe_header->s_size );
148145
149      p_ram = (UINT8 *)m_maincpu->ram();
150      n_ram = m_maincpu->ram_size();
146      UINT8 *p_ram = m_ram->pointer();
147      UINT32 n_ram = m_ram->size();
151148
152      p_psxexe = p_n_file + sizeof( struct PSXEXE_HEADER );
149      UINT8 *p_psxexe = p_n_file + sizeof( struct PSXEXE_HEADER );
153150
154      n_address = psxexe_header->t_addr;
155      n_size = psxexe_header->t_size;
151      UINT32 n_address = psxexe_header->t_addr;
152      UINT32 n_size = psxexe_header->t_size;
156153      while( n_size != 0 )
157154      {
158155         p_ram[ BYTE4_XOR_LE( n_address ) % n_ram ] = *( p_psxexe );
r22559r22560
163160
164161      cpu->set_state_int( PSXCPU_PC, psxexe_header->pc0 );
165162      cpu->set_state_int( PSXCPU_R28, psxexe_header->gp0 );
166      n_stack = psxexe_header->s_addr + psxexe_header->s_size;
163      UINT32 n_stack = psxexe_header->s_addr + psxexe_header->s_size;
167164      if( n_stack != 0 )
168165      {
169166         cpu->set_state_int( PSXCPU_R29, n_stack );
r22559r22560
249246                  ( (int)p_n_file[ n_offset + 6 ] << 16 ) |
250247                  ( (int)p_n_file[ n_offset + 7 ] << 24 );
251248
252               UINT8 *p_ram = (UINT8 *)m_maincpu->ram();
253               UINT32 n_ram = m_maincpu->ram_size();
249               UINT8 *p_ram = m_ram->pointer();
250               UINT32 n_ram = m_ram->size();
254251
255252               n_offset += 8;
256253
r22559r22560
496493static MACHINE_CONFIG_START( psxntsc, psx1_state )
497494   /* basic machine hardware */
498495   MCFG_CPU_ADD( "maincpu", CXD8530CQ, XTAL_67_7376MHz )
499   MCFG_PSX_RAM_SIZE( 0x200000 )
500496   MCFG_CPU_PROGRAM_MAP( psx_map )
501497
498   MCFG_RAM_MODIFY("maincpu:ram")
499   MCFG_RAM_DEFAULT_SIZE("2M")
500
502501   MCFG_DEVICE_ADD("maincpu:sio0:controllers", PSXCONTROLLERPORTS, 0)
503502   MCFG_PSX_CTRL_PORT_ADD("port1", psx_controllers, "digital_pad", NULL)
504503   MCFG_PSX_CTRL_PORT_ADD("port2", psx_controllers, "digital_pad", NULL)
r22559r22560
530529static MACHINE_CONFIG_START( psxpal, psx1_state )
531530   /* basic machine hardware */
532531   MCFG_CPU_ADD( "maincpu", CXD8530AQ, XTAL_67_7376MHz )
533   MCFG_PSX_RAM_SIZE( 0x200000 )
534532   MCFG_CPU_PROGRAM_MAP( psx_map)
535533
534   MCFG_RAM_MODIFY("maincpu:ram")
535   MCFG_RAM_DEFAULT_SIZE("2M")
536
536537   MCFG_DEVICE_ADD("maincpu:sio0:controllers", PSXCONTROLLERPORTS, 0)
537538   MCFG_PSX_CTRL_PORT_ADD("port1", psx_controllers, "digital_pad", NULL)
538539   MCFG_PSX_CTRL_PORT_ADD("port2", psx_controllers, "digital_pad", NULL)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team