Previous 199869 Revisions Next

r34044 Wednesday 24th December, 2014 at 08:19:16 UTC by Fabio Priuli
(MESS) tutor.c: added correct mapping for 32K carts, promoting
recent Baseball dump to working state. [Fabio Priuli]
[hash]tutor.xml
[src/mess/drivers]tutor.c

trunk/hash/tutor.xml
r242555r242556
8080
8181<softwarelist name="tutor" description="Tomy Tutor &amp; Pyuuta cartridges">
8282
83   <software name="baseball" supported="no">
83   <software name="baseball">
8484      <description>Baseball (Jpn)</description>
8585      <year>198?</year>
8686      <publisher>Tomy</publisher>
trunk/src/mess/drivers/tutor.c
r242555r242556
187187      m_cass(*this, "cassette"),
188188      m_centronics(*this, "centronics"),
189189      m_cent_data_out(*this, "cent_data_out"),
190      m_bank1(*this, "bank1")
190      m_bank1(*this, "bank1"),
191      m_bank2(*this, "bank2"),
192      m_bank1_switching(0)
191193   {
192194   }
193195
r242555r242556
197199   optional_device<centronics_device> m_centronics;
198200   optional_device<output_latch_device> m_cent_data_out;
199201   required_memory_bank m_bank1;
202   required_memory_bank m_bank2;
200203   memory_region *m_cart_rom;
201204
205   int m_bank1_switching;
202206   DECLARE_READ8_MEMBER(key_r);
203207   DECLARE_READ8_MEMBER(tutor_mapper_r);
204208   DECLARE_WRITE8_MEMBER(tutor_mapper_w);
r242555r242556
226230
227231   m_tape_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tutor_state::tape_interrupt_handler),this));
228232
229   m_bank1->configure_entry(0, memregion("maincpu")->base() + 0x8000);
233   m_bank1->configure_entry(0, memregion("maincpu")->base() + 0x4000);
230234   m_bank1->set_entry(0);
235   m_bank2->configure_entry(0, memregion("maincpu")->base() + 0x8000);
236   m_bank2->set_entry(0);
231237
232238   if (m_cart_rom)
233239   {
234      m_bank1->configure_entry(1, m_cart_rom->base());
235      m_bank1->set_entry(1);
240      if (m_cart_rom->bytes() > 0x4000)
241      {
242         m_bank1_switching = 1;
243         m_bank1->configure_entry(1, m_cart_rom->base());
244         m_bank1->set_entry(1);
245         m_bank2->configure_entry(1, m_cart_rom->base() + 0x4000);
246         m_bank2->set_entry(1);
247      }
248      else
249      {
250         m_bank2->configure_entry(1, m_cart_rom->base());
251         m_bank2->set_entry(1);
252      }
236253   }
237254}
238255
r242555r242556
323340   case 0x08:
324341      /* disable cartridge ROM, enable BASIC ROM at base >8000 */
325342      m_bank1->set_entry(0);
343      m_bank2->set_entry(0);
326344      break;
327345
328346   case 0x0c:
329347      /* enable cartridge ROM, disable BASIC ROM at base >8000 */
330348      if (m_cart_rom)
331         m_bank1->set_entry(1);
349      {
350         if (m_bank1_switching)
351            m_bank1->set_entry(1);
352         m_bank2->set_entry(1);
353      }
332354      break;
333355
334356   default:
r242555r242556
516538#endif
517539
518540static ADDRESS_MAP_START(tutor_memmap, AS_PROGRAM, 8, tutor_state)
519   AM_RANGE(0x0000, 0x7fff) AM_ROM /*system ROM*/
520   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_WRITENOP /*BASIC ROM & cartridge ROM*/
541   AM_RANGE(0x0000, 0x3fff) AM_ROM
542   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") AM_WRITENOP
543   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") AM_WRITENOP
521544   AM_RANGE(0xc000, 0xdfff) AM_NOP /*free for expansion, or cartridge ROM?*/
522545
523546   AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write)    /*VDP data*/
r242555r242556
531554ADDRESS_MAP_END
532555
533556static ADDRESS_MAP_START(pyuutajr_mem, AS_PROGRAM, 8, tutor_state)
534   AM_RANGE(0x0000, 0x7fff) AM_ROM /*system ROM*/
535   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_WRITENOP /*BASIC ROM & cartridge ROM*/
557   AM_RANGE(0x0000, 0x3fff) AM_ROM
558   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") AM_WRITENOP
559   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") AM_WRITENOP
536560   AM_RANGE(0xc000, 0xdfff) AM_NOP /*free for expansion, or cartridge ROM?*/
561
537562   AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write)    /*VDP data*/
538563   AM_RANGE(0xe002, 0xe002) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)/*VDP status*/
539564   AM_RANGE(0xe100, 0xe1ff) AM_READWRITE(tutor_mapper_r, tutor_mapper_w)   /*cartridge mapper*/
r242555r242556
542567   AM_RANGE(0xea00, 0xea00) AM_READ_PORT("LINE1")
543568   AM_RANGE(0xec00, 0xec00) AM_READ_PORT("LINE2")
544569   AM_RANGE(0xee00, 0xee00) AM_READ_PORT("LINE3")
570
545571   AM_RANGE(0xf000, 0xffff) AM_READ(tutor_highmem_r) AM_WRITENOP /*free for expansion (and internal processor RAM)*/
546572ADDRESS_MAP_END
547573


Previous 199869 Revisions Next


© 1997-2024 The MAME Team