Previous 199869 Revisions Next

r34615 Monday 26th January, 2015 at 09:22:43 UTC by Fabio Priuli
temporary workaround for running gamate in automated tests
(= no cart inserted) without crashing the emulator. nw.
[src/mess/drivers]gamate.c

trunk/src/mess/drivers/gamate.c
r243126r243127
8585   emu_timer *timer1;
8686   emu_timer *timer2;
8787   UINT8 bank_multi; 
88   UINT8 *m_cart_ptr;
8889};
8990
9091WRITE8_MEMBER( gamate_state::gamate_cart_protection_w )
r243126r243127
9697      card_protection.failed= card_protection.failed || ((card_protection.cartridge_byte&0x80)!=0) != ((data&4)!=0);
9798      card_protection.bit_shifter++;
9899      if (card_protection.bit_shifter>=8) {
99         card_protection.cartridge_byte=m_cart->get_rom_base()[card_protection.address++];
100         card_protection.cartridge_byte=m_cart_ptr[card_protection.address++];
100101         card_protection.bit_shifter=0;
101102      }
102103      break;
r243126r243127
107108
108109  UINT8 ret=1;
109110  if (card_protection.bit_shifter==7 && card_protection.unprotected) {
110    ret=m_cart->get_rom_base()[bank_multi*0x4000];
111    ret=m_cart_ptr[bank_multi*0x4000];
111112  } else {
112113   card_protection.bit_shifter++;
113114   if (card_protection.bit_shifter==8) {
r243126r243127
132133  // writes 0x20
133134  card_protection.address=0x6005-0x6001;
134135  card_protection.bit_shifter=0;
135  card_protection.cartridge_byte=m_cart->get_rom_base()[card_protection.address++];//m_cart_rom[card_protection.address++];
136  card_protection.cartridge_byte=m_cart_ptr[card_protection.address++];//m_cart_rom[card_protection.address++];
136137  card_protection.failed=false;
137138  card_protection.unprotected=false;
138139}
r243126r243127
172173WRITE8_MEMBER( gamate_state::cart_bankswitchmulti_w )
173174{
174175  bank_multi=data;
175  membank("bankmulti")->set_base(m_cart->get_rom_base()+0x4000*data+1);
176  membank("bankmulti")->set_base(m_cart_ptr+0x4000*data+1);
176177}
177178
178179WRITE8_MEMBER( gamate_state::cart_bankswitch_w )
179180{
180   membank("bank")->set_base(m_cart->get_rom_base()+0x4000*data);
181   membank("bank")->set_base(m_cart_ptr+0x4000*data);
181182}
182183
183184READ8_MEMBER( gamate_state::gamate_video_r )
r243126r243127
329330
330331void gamate_state::machine_start()
331332{
333   m_cart_ptr = memregion("maincpu")->base() + 0x6000;
332334   if (m_cart->exists()) {
333335//      m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000, 0x6000, READ8_DELEGATE(gamate_state, gamate_cart_protection_r));
336      m_cart_ptr = m_cart->get_rom_base();
334337      membank("bankmulti")->set_base(m_cart->get_rom_base()+1);
335338      membank("bank")->set_base(m_cart->get_rom_base()+0x4000); // bankswitched games in reality no offset
336339   }


Previous 199869 Revisions Next


© 1997-2024 The MAME Team