(MESS) snes: better support for Korean Super 20 in 1. Now games 15-20 work. nw.

This commit is contained in:
Fabio Priuli 2013-03-13 15:30:59 +00:00
parent 5d93535c4d
commit b62b0f7ab1
2 changed files with 12 additions and 12 deletions

View File

@ -4337,7 +4337,6 @@ more investigation needed...
<description>Super 5 in 1 (Bad Dump)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="alt_title" value="슈퍼20합" />
<part name="cart" interface="snes_cart">
<feature name="slot" value="lorom_mcpir1" />
@ -4351,7 +4350,6 @@ more investigation needed...
<description>Super 6 in 1</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="alt_title" value="슈퍼20합" />
<part name="cart" interface="snes_cart">
<feature name="slot" value="lorom_mcpir1" />
@ -4366,7 +4364,6 @@ more investigation needed...
<description>1997 New 7 in 1 (Bad Dump)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="alt_title" value="슈퍼20합" />
<part name="cart" interface="snes_cart">
<feature name="slot" value="lorom_mcpir2" />
@ -4381,7 +4378,6 @@ more investigation needed...
<description>Super 7-in-1 1997 (Bad Dump)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="alt_title" value="슈퍼20합" />
<part name="cart" interface="snes_cart">
<feature name="slot" value="lorom_mcpir1" />
@ -4396,7 +4392,6 @@ more investigation needed...
<description>8 in 1 and 10 in 1 (Bad Dump)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="alt_title" value="슈퍼20합" />
<part name="cart" interface="snes_cart">
<feature name="slot" value="lorom_mcpir1" />
@ -4411,7 +4406,6 @@ more investigation needed...
<description>Super 11 in 1 (Bad Dump)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="alt_title" value="슈퍼20합" />
<part name="cart" interface="snes_cart">
<feature name="slot" value="lorom_mcpir1" />
@ -4421,9 +4415,9 @@ more investigation needed...
</part>
</software>
<software name="super20m" supported="partial">
<software name="sup20hab" supported="partial">
<!-- single cartridge source: d4s -->
<description>Super 20 Collection (Kor)</description>
<description>Super 20 Hab (Kor)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="alt_title" value="슈퍼20합" />

View File

@ -446,7 +446,12 @@ WRITE8_MEMBER( sns_rom_mcpirate2_device::chip_write )
}
// Korean 20 in 1 collection with NES games
// base bank is selected (in 32KB chunks) by bits 0-4 of data written at 0x808000
// - base bank is selected (in 32KB chunks) by bits 0-4 of data written at 0x808000
// - bits 6-7 seem related to prg size: 0x00 means 4*32KB, 0xc0 means 2*32KB, 0x80 means 1*32KB
// (they are used to setup how large is the ROM to be accessed, games 15-20 don't work well if
// accesses in [01-3f] don't go to the only 32KB bank)
// - bit 5 is always 0
// it's worth to notice that for FC games size of bank is twice the size of original FC PRG
READ8_MEMBER(sns_rom_20col_device::read_l)
{
return read_h(space, offset);
@ -454,8 +459,9 @@ READ8_MEMBER(sns_rom_20col_device::read_l)
READ8_MEMBER(sns_rom_20col_device::read_h)
{
int bank = (offset / 0x10000);
return m_rom[(rom_bank_map[bank] + m_base_bank) * 0x8000 + (offset & 0x7fff)];
int prg32k = (!BIT(m_base_bank, 6) && BIT(m_base_bank, 7));
int bank = prg32k ? 0 : (offset / 0x10000);
return m_rom[((m_base_bank & 0x1f) + bank) * 0x8000 + (offset & 0x7fff)];
}
WRITE8_MEMBER( sns_rom_20col_device::chip_write )
@ -481,7 +487,7 @@ WRITE8_MEMBER( sns_rom_20col_device::chip_write )
// [18] donkey kong jr - 9a
// [19] mario bros - 9b
// [20] popeye - 9c
m_base_bank = data & 0x1f;
m_base_bank = data & 0xdf;
// printf("offset %X data %X bank %X\n", offset, data, m_base_bank);
}