Previous 15994 Revisions Next

r2228 Thursday 3rd April, 2008 at 03:13:44 UTC by Cowering
[Genesis] Add handler for 'Squirrel King' (you have to reset twice until DEVICE is fixed up for custom Genesis mappers)
[src/mess/drivers]genesis.c

src/mess/drivers/genesis.c
r2227r2228
6060static int is_kof99 = 0;
6161static int is_soulb = 0;
6262static int is_mjlovr = 0;
63static int is_squir = 0;
64static int squirrel_king_extra = 0;
6365
6466static UINT8 *genesis_sram;
6567static int genesis_sram_start;
r2227r2228
185187   int ptr, x;
186188   unsigned char *ROM;
187189
190   printf("Entering DEVICE_IMAGE_LOAD()\n");
188191   genesis_sram = NULL;
189192   genesis_sram_start = genesis_sram_len = genesis_sram_active = genesis_sram_readonly = 0;
190   is_ssf2 = is_redcliff = is_radica = is_kof99 = is_soulb = is_mjlovr = 0;
193   is_ssf2 = is_redcliff = is_radica = is_kof99 = is_soulb = is_mjlovr = is_squir = 0;
191194
192195   rawROM = memory_region(REGION_CPU1);
193196        ROM = rawROM /*+ 512 */;
r2227r2228
244247   {
245248      relocate = 0x2000;
246249
247      if (!strncmp((char *)&ROM[0x0120+relocate], "SUPER STREET FIGHTER2", 20))
250      if (!strncmp((char *)&ROM[0x0120+relocate], "SUPER STREET FIGHTER2", 21))
248251      {
249252         is_ssf2 = 1;
250253      }
r2227r2228
305308            is_mjlovr = 1;
306309         }
307310      }
311      // detect Squirrel King unlicensed game
312      if (length == 0x100000)
313      {
314          static unsigned char squirsig[] = { 0x26, 0x79, 0x00, 0xff, 0x00, 0xfa};
308315
316          if (!memcmp(&ROM[0x03b4+relocate],&squirsig[0],sizeof(squirsig)))
317         {
318            is_squir = 1;
319         }
320      }
321
309322   }
310323
311324   ROM = memory_region(REGION_CPU1);   /* 68000 ROM region */
r2227r2228
522535   return 0;
523536}
524537
525// Red Cliff handler borrowed from HazeMD
538// Red Cliff handler from HazeMD
526539
527540READ16_HANDLER( redclif_prot_r )
528541{
r2227r2228
534547   return 0x55 << 8;
535548}
536549
550// Squirrel King handler from HazeMD, this does not give screen garbage like HazeMD compile If you reset it twice
551READ16_HANDLER( squirrel_king_extra_r )
552{
553   return squirrel_king_extra;
554
555}
556WRITE16_HANDLER( squirrel_king_extra_w )
557{
558   squirrel_king_extra = data;
559}
560
561
537562static WRITE16_HANDLER( genesis_TMSS_bank_w )
538563{
539564   /* this probably should do more, like make Genesis V2 'die' if the SEGA string is not written promptly */
r2227r2228
545570
546571static DRIVER_INIT( gencommon )
547572{
548        if (genesis_sram)
573   printf("Entering DRIVER_INIT()\n");
574if (genesis_sram)
549575   {
550576                add_exit_callback(machine, genesis_machine_stop);
551577   }
r2227r2228
584610      memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x401000, 0x401001, 0, 0, mjlovr_prot_2_r );
585611   }
586612
613   if (is_squir)
614   {
615      memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x400000, 0x400007, 0, 0, squirrel_king_extra_r);
616      memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x400000, 0x400007, 0, 0, squirrel_king_extra_w);
617   }
618
587619   /* install NOP handler for TMSS */
588620   memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0xA14000, 0xA14003, 0, 0, genesis_TMSS_bank_w);
589621

Previous 15994 Revisions Next


© 1998-2018 The MESS Team