Previous 199869 Revisions Next

r21740 Saturday 9th March, 2013 at 07:52:57 UTC by Fabio Priuli
more of the same. nw.
[src/mess/machine]snescart.c

trunk/src/mess/machine/snescart.c
r21739r21740
795795{
796796   int st_bios = 0, slot_id = 0;
797797   UINT32 offset;
798   UINT8 *ROM = machine().root_device().memregion(image.device().tag())->base();
799798
800799   if (strcmp(image.device().tag(), ":slot_a") == 0)
801800      slot_id = 0;
r21739r21740
808807   else
809808      m_cart_size = image.get_software_region_length("rom");
810809
811   /* Check for a header (512 bytes), and skip it if found */
810   // Check for a header (512 bytes), and skip it if found
812811   offset = snes_skip_header(image, m_cart_size);
813812
813   // Allocate rom pointer
814   m_cart[slot_id].m_rom_size = m_cart_size;
815   m_cart[slot_id].m_rom = auto_alloc_array_clear(machine(), UINT8, m_cart[0].m_rom_size);
816
814817   if (image.software_entry() == NULL)
815818   {
816819      image.fseek(offset, SEEK_SET);
817      image.fread(ROM, m_cart_size - offset);
820      image.fread(m_cart[slot_id].m_rom, m_cart_size - offset);
818821   }
819822   else
820      memcpy(ROM, image.get_software_region("rom") + offset, m_cart_size - offset);
823      memcpy(m_cart[slot_id].m_rom, image.get_software_region("rom") + offset, m_cart_size - offset);
821824
822825   if (SNES_CART_DEBUG) mame_printf_error("size %08X\n", m_cart_size - offset);
823826
824   /* Detect Sufami Turbo carts */
825   if (!memcmp(ROM, "BANDAI SFC-ADX", 14))
827   // Setup the bank map to handle mirroring of ROM
828   rom_map_setup(m_cart[slot_id].m_rom_size);
829
830   // Detect Sufami Turbo carts
831   if (!memcmp(m_cart[slot_id].m_rom, "BANDAI SFC-ADX", 14))
826832   {
827833      m_cart[slot_id].mode = SNES_MODE_ST;
828      if (!memcmp(ROM + 16, "SFC-ADX BACKUP", 14))
834      if (!memcmp(m_cart[slot_id].m_rom + 16, "SFC-ADX BACKUP", 14))
829835         st_bios = 1;
830836   }
831837   else
r21739r21740
842848      return IMAGE_INIT_FAIL;
843849   }
844850
845
846   m_cart[slot_id].m_rom_size = m_cart_size;
847   m_cart[slot_id].m_rom = auto_alloc_array_clear(machine(), UINT8, m_cart[0].m_rom_size);
848   memcpy(m_cart[slot_id].m_rom, ROM, m_cart[slot_id].m_rom_size - offset);
849   rom_map_setup(m_cart[slot_id].m_rom_size);
850
851851   m_cart[slot_id].m_nvram_size = 0x20000;
852852   m_cart[slot_id].m_nvram = auto_alloc_array_clear(machine(), UINT8, m_cart[slot_id].m_nvram_size);
853853
854854   sufami_load_sram(machine(), image.device().tag());
855855
856   m_cart[slot_id].slot_in_use = 1; // aknowledge the cart in this slot, for saving sram at exit
856   m_cart[slot_id].slot_in_use = 1; // acknowledge the cart in this slot
857857
858858   return IMAGE_INIT_PASS;
859859}

Previous 199869 Revisions Next


© 1997-2024 The MAME Team