Previous 199869 Revisions Next

r18337 Sunday 7th October, 2012 at 19:34:19 UTC by Wilbert Pol
(MESS) a2600.c: Added support for 8in1.  (Wilbert Pol)
[hash]a2600.xml
[src/mess/drivers]a2600.c

trunk/src/mess/drivers/a2600.c
r18336r18337
22
33  Atari VCS 2600 driver
44
5TODO:
6- Move the 2 32-in-1 rom dumps into their own driver
7- Add 128-in-1 driver
8
59***************************************************************************/
610
711#include "emu.h"
r18336r18337
193197   modeFV,
194198   modeDPC,
195199   mode32in1,
196   modeJVP
200   modeJVP,
201   mode8in1
197202};
198203
199204static const UINT16 supported_screen_heights[4] = { 262, 312, 328, 342 };
r18336r18337
591596   state->m_current_bank = 0;
592597
593598   if (image.software_entry() == NULL)
599   {
594600      image.fread(cart, state->m_cart_size);
601   }
595602   else
603   {
596604      memcpy(cart, image.get_software_region("rom"), state->m_cart_size);
597605
606      const char *mapper = software_part_get_feature((software_part*)image.part_entry(), "mapper");
607
608      if ( mapper != NULL )
609      {
610         static const struct { const char *mapper_name; int mapper_type; } mapper_types[] =
611         {
612             { "8in1", mode8in1 },
613         };
614
615         for (int i = 0; i < ARRAY_LENGTH(mapper_types) && state->m_banking_mode == 0xff; i++)
616         {
617            if (!mame_stricmp(mapper, mapper_types[i].mapper_name))
618            {
619               state->m_banking_mode = mapper_types[i].mapper_type;
620            }
621         }
622      }
623   }
624
598625   if (!(state->m_cart_size == 0x4000 && detect_modef6(image.device().machine())))
599626   {
600627      while (state->m_cart_size > 0x00800)
r18336r18337
616643
617644void a2600_state::modeF8_switch(UINT16 offset, UINT8 data)
618645{
619   m_bank_base[1] = m_cart + 0x1000 * offset;
646   m_bank_base[1] = m_cart + 0x2000 * m_current_reset_bank_counter + 0x1000 * offset;
620647   membank("bank1")->set_base(m_bank_base[1]);
621648}
622649
r18336r18337
18791906      install_banks(1, 0x0000);
18801907      break;
18811908
1909   case mode8in1:
1910      m_current_reset_bank_counter = m_current_reset_bank_counter & 0x07;
1911      if ( m_current_reset_bank_counter == 7 )
1912      {
1913         /* Special case for Yar's Revenge */
1914         install_banks(1, 0x2000 * m_current_reset_bank_counter + 0x0000);
1915      }
1916      else
1917      {
1918         install_banks(1, 0x2000 * m_current_reset_bank_counter + 0x1000);
1919      }
1920      break;
1921
18821922   case modeF8:
1923      m_current_reset_bank_counter = 0;
18831924      if (!memcmp(&CART_MEMBER[0x1ffc],snowwhite,sizeof(snowwhite)))
18841925      {
18851926         install_banks(1, 0x0000);
r18336r18337
19762017   switch (m_banking_mode)
19772018   {
19782019   case modeF8:
2020   case mode8in1:
19792021      space.install_write_handler(0x1ff8, 0x1ff9, write8_delegate(FUNC(a2600_state::modeF8_switch_w),this));
19802022      space.install_read_handler(0x1ff8, 0x1ff9, read8_delegate(FUNC(a2600_state::modeF8_switch_r),this));
19812023      break;
trunk/hash/a2600.xml
r18336r18337
247247      </part>
248248   </software>
249249
250   <software name="8in1" supported="no">
250   <!-- Known 'feature': Centipede doesn't work -->
251   <software name="8in1">
251252      <description>8 in 1 - Asteroids + Centipede + BattleZone + SwordQuest - EarthWorld + SwordQuest - FireWorld + RealSports Soccer + RealSports Tennis + Yars' Revenge (Prototype 19920116)</description>
252253      <year>1988</year>
253254      <publisher>Atari</publisher>
254255      <info name="serial" value="CX26193" />
255256      <part name="cart" interface="a2600_cart">
257         <feature name="mapper" value="8in1" />
256258         <dataarea name="rom" size="65536">
257259            <rom name="8 in 1 (prototype).bin" size="65536" crc="5ddf79f5" sha1="c066942446c3fc7075ee8430a381d5da4adaec41" offset="0" />
258260         </dataarea>
r18336r18337
1693816940         </dataarea>
1693916941      </part>
1694016942   </software>
16941</softwarelist>
No newline at end of file
16943</softwarelist>

Previous 199869 Revisions Next


© 1997-2024 The MAME Team