Previous 199869 Revisions Next

r19396 Friday 7th December, 2012 at 16:57:41 UTC by David Haywood
workaround for raster problems in neocdz, let's call it working for now, I only know of one game which fails to load, although the whole lot still needs some polish (nw)

NeoGeo CDZ [FinalBurn Alpha / Barry Harris, David Haywood]
[src/mess]mess.lst
[src/mess/drivers]ng_aes.c

trunk/src/mess/mess.lst
r19395r19396
328328aes      // NeoGeo AES
329329neocd    // NeoGeo CD
330330neocdz   // NeoGeo CDZ
331neocdzj   //
331332
332333// Philips
333334cdimono1  // Philips CD-i (Mono-I board)
trunk/src/mess/drivers/ng_aes.c
r19395r19396
3939      - NeoCDZ runs, the original NeoCD does not
4040         - Might think the tray is open? (check)
4141      - Some unknown / unhandled CD commands, code is still a bit messy
42      - Games using Raster Effects are broken, even non-IRQ based ones like mosyougi
43         - Are we overloading the CPU with interrupts from the CDC, incorrect masking? or something else?
42         - CDDA continues to play during loading, should stop it
43      - Games using Raster Effects are broken without a kludge
44         - CPU gets overloaded with IRQs from the timer callback...
4445      - Double Dragon doesn't load, it erases the IRQ table
4546         - might need better handling of the Vector Table Mapping, or better interrupts (see point above)
4647      - Softlist are based on an old Tosec set and should be updated to the TruRip set once we can convert CCD
r19395r19396
133134   DECLARE_READ16_MEMBER(aes_in0_r);
134135   DECLARE_READ16_MEMBER(aes_in1_r);
135136   DECLARE_READ16_MEMBER(aes_in2_r);
136   DECLARE_DRIVER_INIT(neogeo);
137
137138   DECLARE_MACHINE_START(neocd);
138139   DECLARE_MACHINE_START(neogeo);
139140   DECLARE_MACHINE_RESET(neogeo);
r19395r19396
171172
172173   UINT8 nTransferWriteEnable;
173174
174   address_space* curr_space;
175   bool prohibit_cdc_irq; // hack?
176
177   DECLARE_DRIVER_INIT(neogeo);
178
179   DECLARE_DRIVER_INIT(neocdz);
180   DECLARE_DRIVER_INIT(neocdzj);
181
175182};
176183
177184
r19395r19396
472479            {
473480            // not a good idea, causes hangs
474481            //   m_tempcdc->NeoCDCommsReset();
482               
483               // I doubt this is correct either, but we need something to stop
484               // the interrupts during gameplay and I'm not sure what...
485               prohibit_cdc_irq = true;
475486            }
487            else
488            {
489               prohibit_cdc_irq = false;
490            }
476491         }
477492         break;
478493      }
r19395r19396
10731088
10741089MACHINE_START_MEMBER(ng_aes_state,neocd)
10751090{
1076//   UINT8* ROM = machine().root_device().memregion("mainbios")->base();
1077//   UINT8* RAM = machine().root_device().memregion("maincpu")->base();
1078//   UINT8* Z80bios = machine().root_device().memregion("audiobios")->base();
1079//   int x;
10801091   m_has_audio_banking = false;
10811092   m_is_cartsys = false;
10821093
r19395r19396
10931104   m_memcard_data = auto_alloc_array_clear(machine(), UINT8, 0x2000);
10941105   save_pointer(NAME(m_memcard_data), 0x2000);
10951106
1096   // copy initial 68k vectors into RAM
1097   // memcpy(RAM,ROM,0x80);
1098
1099
1100
1101
11021107   // for custom vectors
11031108   machine().device("maincpu")->execute().set_irq_acknowledge_callback(neocd_int_callback);
11041109
11051110   neogeo_set_main_cpu_vector_table_source(machine(), 0); // default to the BIOS vectors
11061111
11071112   m_tempcdc->reset_cd();
1108   
11091113}
11101114
11111115
r19395r19396
15641568
15651569   nIRQAcknowledge |= (byteValue & 0x38);
15661570
1567   if ((nIRQAcknowledge & 0x08) == 0) {
1568      nNeoCDIRQVector = 0x17;
1569      nNeoCDIRQVectorAck = 1;
1570      machine().device("maincpu")->execute().set_input_line(4, HOLD_LINE);
1571      return;
1571   if (!prohibit_cdc_irq)
1572   {
1573      if ((nIRQAcknowledge & 0x08) == 0) {
1574         nNeoCDIRQVector = 0x17;
1575         nNeoCDIRQVectorAck = 1;
1576         machine().device("maincpu")->execute().set_input_line(4, HOLD_LINE);
1577         return;
1578      }
1579      if ((nIRQAcknowledge & 0x10) == 0) {
1580         nNeoCDIRQVector = 0x16;
1581         nNeoCDIRQVectorAck = 1;
1582         machine().device("maincpu")->execute().set_input_line(4, HOLD_LINE);
1583         return;
1584      }
1585      if ((nIRQAcknowledge & 0x20) == 0) {
1586         nNeoCDIRQVector = 0x15;
1587         nNeoCDIRQVectorAck = 1;
1588         machine().device("maincpu")->execute().set_input_line(4, HOLD_LINE);
1589         return;
1590      }
15721591   }
1573   if ((nIRQAcknowledge & 0x10) == 0) {
1574      nNeoCDIRQVector = 0x16;
1575      nNeoCDIRQVectorAck = 1;
1576      machine().device("maincpu")->execute().set_input_line(4, HOLD_LINE);
1577      return;
1578   }
1579   if ((nIRQAcknowledge & 0x20) == 0) {
1580      nNeoCDIRQVector = 0x15;
1581      nNeoCDIRQVectorAck = 1;
1582      machine().device("maincpu")->execute().set_input_line(4, HOLD_LINE);
1583      return;
1584   }
15851592}
15861593
15871594struct cdrom_interface neocd_cdrom =
r19395r19396
16221629 *
16231630 *************************************/
16241631
1625DRIVER_INIT_MEMBER(ng_aes_state,neogeo)
1626{
1627}
16281632
1629
16301633ROM_START( aes )
16311634   ROM_REGION16_BE( 0x80000, "mainbios", 0 )
16321635   ROM_SYSTEM_BIOS( 0, "jap-aes",   "Japan AES" )
r19395r19396
17071710   ROM_REGION( 0x20000, "fixed", ROMREGION_ERASEFF )
17081711   /* 128KB of Text Tile RAM */
17091712
1710
1711
1712
17131713   ROM_REGION( 0x20000, "audiobios", ROMREGION_ERASEFF )
17141714   ROM_REGION( 0x20000, "fixedbios", ROMREGION_ERASEFF )
17151715
r19395r19396
17171717   ROM_LOAD( "000-lo.lo", 0x00000, 0x20000, CRC(5a86cff2) SHA1(5992277debadeb64d1c1c64b0a92d9293eaf7e4a) )
17181718ROM_END
17191719
1720#define rom_neocdzj    rom_neocdz
1721
1722DRIVER_INIT_MEMBER(ng_aes_state,neogeo)
1723{
1724}
1725
1726
17201727/*    YEAR  NAME  PARENT COMPAT MACHINE INPUT  INIT     COMPANY      FULLNAME            FLAGS */
17211728CONS( 1990, aes,    0,      0,   aes,      aes, ng_aes_state,   neogeo,  "SNK", "Neo-Geo AES", 0)
17221729
1723CONS( 1996, neocdz, 0,       0,   neocd,    aes, ng_aes_state,   neogeo,  "SNK", "Neo-Geo CDZ", GAME_NOT_WORKING ) // the CDZ is the newer slot-loading model, faster drive etc.
1724CONS( 1994, neocd,  neocdz,   0,   neocd,    aes, ng_aes_state,   neogeo,  "SNK", "Neo-Geo CD", GAME_NOT_WORKING ) // older Top Loading model, ignores disc protections?
1730DRIVER_INIT_MEMBER(ng_aes_state,neocdz)
1731{
1732   NeoSystem = NEOCD_REGION_US;
1733}
1734
1735DRIVER_INIT_MEMBER(ng_aes_state,neocdzj)
1736{
1737   NeoSystem = NEOCD_REGION_JAPAN;
1738}
1739
1740
1741CONS( 1996, neocdz,  0,        0,   neocd,    aes, ng_aes_state,   neocdz,  "SNK", "Neo-Geo CDZ (US)", 0 ) // the CDZ is the newer model
1742CONS( 1996, neocdzj, neocdz, 0,   neocd,    aes, ng_aes_state,   neocdzj,  "SNK", "Neo-Geo CDZ (Japan)", 0 )
1743
1744
1745CONS( 1994, neocd,  neocdz,   0,   neocd,    aes, ng_aes_state,   neogeo,  "SNK", "Neo-Geo CD", GAME_NOT_WORKING ) // older  model, ignores disc protections?

Previous 199869 Revisions Next


© 1997-2024 The MAME Team