Skip to content

Commit

Permalink
bus/nes: Fixed Kaiser Metroid, promoted games to working. (#8204)
Browse files Browse the repository at this point in the history
* metroidk: Corrected fixed bank address that caused game to crash after title screen.
* metroidk: Corrected the nametable page mis-ordering that then becomes apparent when game is running.
* crimebst uses standard zapper on ctrl2 - works fine.

Software list items promoted to working
-----------------------
Crime Busters
Metroid - Jin Ji Zhi Ling (Asia, FDS conversion)
  • Loading branch information
0kmg authored Jul 9, 2021
1 parent 482e61a commit 5421709
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 17 deletions.
6 changes: 4 additions & 2 deletions hash/nes.xml
Original file line number Diff line number Diff line change
Expand Up @@ -51386,7 +51386,7 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx

<!-- ORIGINAL & HACK PIRATE CARTS -->

<software name="crimebst" supported="no">
<software name="crimebst">
<description>Crime Busters</description>
<year>1989</year>
<publisher>Gradiente ~ Bit Corp.</publisher>
Expand All @@ -51395,6 +51395,7 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<feature name="slot" value="bitcorp_dis" />
<feature name="pcb" value="BIT-CORP-74*161/138" />
<feature name="mirroring" value="vertical" />
<feature name="peripheral" value="zapper" />
<dataarea name="prg" size="131072">
<rom name="0.prg" size="131072" crc="1a8b558e" sha1="e881a8df5352cb21d49a5ab154ba59da2ffc0534" offset="00000" />
</dataarea>
Expand Down Expand Up @@ -66787,10 +66788,11 @@ Also notice that VRAM & WRAM are probably incorrect for some of these sets, at t
</part>
</software>

<software name="metroidk" supported="partial">
<software name="metroidk">
<description>Metroid - Jin Ji Zhi Ling (Asia, FDS conversion)</description>
<year>19??</year>
<publisher>Kaiser</publisher>
<info name="alt_title" value="緊急指令"/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="ks7037" />
<feature name="pcb" value="UNL-KS7037" />
Expand Down
3 changes: 0 additions & 3 deletions src/devices/bus/nes/discrete.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@
* PCB with IC 74x377 [mapper 11]
* PCB with IC 74x161x138 [mapper 38]
TODO:
- Investigating missing inputs in Crime Busters
***********************************************************************************************************/


Expand Down
22 changes: 10 additions & 12 deletions src/devices/bus/nes/kaiser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -309,12 +309,12 @@ void nes_ks7037_device::device_start()
void nes_ks7037_device::pcb_reset()
{
prg8_89(0);
prg8_ab(0x1e);
prg8_ab(0x0e);
prg8_cd(0);
prg8_ef(0x1f);
prg8_ef(0x0f);
chr8(0, CHRRAM);

memset(m_reg, 0, sizeof(m_reg));
std::fill(std::begin(m_reg), std::end(m_reg), 0x00);
m_latch = 0;
}

Expand Down Expand Up @@ -836,38 +836,36 @@ void nes_ks7016_device::write_h(offs_t offset, uint8_t data)
but with WRAM split between 0x6000-0x6fff
and 0xb000-0xbfff.
iNES:
NES 2.0: mapper 307
In MESS: Unsupported.
In MAME: Supported.
-------------------------------------------------*/

void nes_ks7037_device::update_prg()
{
prg8_89(m_reg[6]);
prg8_ab(0xfe);
prg8_cd(m_reg[7]);
prg8_ef(0xff);
set_nt_page(0, CIRAM, m_reg[2] & 1, 1);
set_nt_page(1, CIRAM, m_reg[3] & 1, 1);
set_nt_page(2, CIRAM, m_reg[4] & 1, 1);
set_nt_page(2, CIRAM, m_reg[3] & 1, 1);
set_nt_page(1, CIRAM, m_reg[4] & 1, 1);
set_nt_page(3, CIRAM, m_reg[5] & 1, 1);
}

uint8_t nes_ks7037_device::read_m(offs_t offset)
{
// LOG_MMC(("ks7037 read_m, offset: %04x\n", offset));
if (offset < 0x1000)
return m_prgram[offset & 0x0fff];
return m_prgram[offset];
else
return m_prg[(0x1e * 0x1000) + (offset & 0x0fff)];
return m_prg[0x0f * 0x1000 + (offset & 0x0fff)]; // 4k PRG bank 15 is fixed
}

void nes_ks7037_device::write_m(offs_t offset, uint8_t data)
{
LOG_MMC(("ks7037 write_m, offset: %04x, data: %02x\n", offset, data));
if (offset < 0x1000)
m_prgram[offset & 0x0fff] = data;
m_prgram[offset] = data;
}

uint8_t nes_ks7037_device::read_h(offs_t offset)
Expand Down

0 comments on commit 5421709

Please sign in to comment.