Previous 15994 Revisions Next

r9336 Thursday 7th October, 2010 at 09:44:39 UTC by Angelo Salese
[Mega CD]: hooked up another register [David Haywood]
[src/mame/drivers]megadriv.c

src/mame/drivers/megadriv.c
r9335r9336
37983798*************************************************************************************************/
37993799
38003800static UINT16* segacd_4meg_prgram;  // pointer to SubCPU PrgRAM
3801static UINT16 segacd_hint_register;
38013802
3802
38033803static UINT16 a12000_halt_reset_reg = 0x0000;
38043804
38053805static WRITE16_HANDLER( scd_a12000_halt_reset_w )
r9335r9336
42354235   }
42364236}
42374237
4238static READ16_HANDLER( scd_hint_vector_r )
4239{
4240//   printf("read HINT offset %d\n", offset);
42384241
4242   switch (offset&1)
4243   {
4244      case 0x00:
4245         //return 0x00ff; // doesn't make much sense..
4246         return 0xffff;
4247      case 0x01:
4248         return segacd_hint_register;
4249   }
4250   
4251   return 0;
42394252
4253}
4254
4255static READ16_HANDLER( scd_a12006_hint_register_r )
4256{
4257   return segacd_hint_register;
4258}
4259
4260static WRITE16_HANDLER( scd_a12006_hint_register_w )
4261{
4262   COMBINE_DATA(&segacd_hint_register);
4263}
4264
4265
42404266/* main CPU map set up in INIT */
42414267void segacd_init_main_cpu( running_machine* machine )
42424268{
r9335r9336
42444270
42454271   segacd_4meg_prgbank = 0;
42464272
4273
4274   memory_unmap_readwrite(space, 0x20000,0x3fffff,0,0);
4275
42474276   memory_install_read_bank(space, 0x0020000, 0x003ffff, 0, 0, "scd_4m_prgbank");
42484277   memory_set_bankptr(space->machine,  "scd_4m_prgbank", segacd_4meg_prgram + segacd_4meg_prgbank * 0x20000 );
42494278   memory_install_write16_handler (space, 0x0020000, 0x003ffff, 0, 0, scd_4m_prgbank_ram_w );
r9335r9336
42534282   memory_install_readwrite16_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa12000, 0xa12001, 0, 0, scd_a12000_halt_reset_r, scd_a12000_halt_reset_w); // sub-cpu control
42544283   memory_install_readwrite16_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa12002, 0xa12003, 0, 0, scd_a12002_memory_mode_r, scd_a12002_memory_mode_w); // memory mode / write protect
42554284
4285   memory_install_readwrite16_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa12006, 0xa12007, 0, 0, scd_a12006_hint_register_r, scd_a12006_hint_register_w); // where HINT points on main CPU
4286
4287
42564288   memory_install_readwrite16_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa1200e, 0xa1200f, 0, 0, segacd_comms_flags_r, segacd_comms_flags_maincpu_w); // communication flags block
42574289
42584290   memory_install_readwrite16_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa12010, 0xa1201f, 0, 0, segacd_comms_main_part1_r, segacd_comms_main_part1_w);
r9335r9336
42614293
42624294   cpu_set_irq_callback(machine->device("segacd_68k"), segacd_sub_int_callback);
42634295
4296   memory_install_read16_handler (space, 0x0000070, 0x0000073, 0, 0, scd_hint_vector_r );
4297
4298
42644299}
42654300
42664301static MACHINE_RESET( segacd )
42674302{
42684303   cpu_set_input_line(_segacd_68k_cpu, INPUT_LINE_RESET, ASSERT_LINE);
42694304   cpu_set_input_line(_segacd_68k_cpu, INPUT_LINE_HALT, ASSERT_LINE);
4305   
4306   segacd_hint_register = 0xffff; // -1
42704307}
42714308
42724309

Previous 15994 Revisions Next


© 1998-2018 The MESS Team