mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
(MESS) nes: added Karaoke Studio inputs, mapped to keys Z, X, C. you can
now select songs and see the animation, even if I would not call playable the games this way. [Fabio Priuli] out of whatsnew: the expansion slot is currently hacked around at loading time. I will soon implement it as a subslot, but I still need to check a few details first.
This commit is contained in:
parent
9f802adc65
commit
ca090b8eec
9 changed files with 161 additions and 74 deletions
2
.gitattributes
vendored
2
.gitattributes
vendored
|
@ -8209,6 +8209,8 @@ src/mess/machine/nes_jy.c svneol=native#text/plain
|
|||
src/mess/machine/nes_jy.h svneol=native#text/plain
|
||||
src/mess/machine/nes_kaiser.c svneol=native#text/plain
|
||||
src/mess/machine/nes_kaiser.h svneol=native#text/plain
|
||||
src/mess/machine/nes_karastudio.c svneol=native#text/plain
|
||||
src/mess/machine/nes_karastudio.h svneol=native#text/plain
|
||||
src/mess/machine/nes_konami.c svneol=native#text/plain
|
||||
src/mess/machine/nes_konami.h svneol=native#text/plain
|
||||
src/mess/machine/nes_legacy.c svneol=native#text/plain
|
||||
|
|
16
hash/nes.xml
16
hash/nes.xml
|
@ -49856,15 +49856,14 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
|
|||
<feature name="slot" value="karastudio" />
|
||||
<feature name="pcb" value="BANDAI-KARAOKE" />
|
||||
<feature name="mirroring" value="horizontal" />
|
||||
<dataarea name="prg" size="131072">
|
||||
<dataarea name="prg" size="262144">
|
||||
<rom name="karaoke studio (japan).prg" size="131072" crc="adfad6b6" sha1="5ab1d9cd55978af770a87749bd375741a63cb3d8" offset="00000" status="baddump" />
|
||||
<!-- HACK!! (necessary until we support proper cart subslot for this board) -->
|
||||
<rom name="karaoke studio senyou cassette vol. 1 (japan).prg" size="131072" crc="7dda2982" sha1="4a5f9af0a810dba95a2ba82c4c23a07adbbe845f" offset="0x20000" status="baddump" />
|
||||
</dataarea>
|
||||
<!-- 8k VRAM on cartridge -->
|
||||
<dataarea name="vram" size="8192">
|
||||
</dataarea>
|
||||
<dataarea name="minicart" size="131072"> <!-- HACK!! (necessary until we support cart subslots) -->
|
||||
<rom name="karaoke studio senyou cassette vol. 1 (japan).prg" size="131072" crc="7dda2982" sha1="4a5f9af0a810dba95a2ba82c4c23a07adbbe845f" offset="00000" status="baddump" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
@ -49879,15 +49878,14 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
|
|||
<feature name="slot" value="karastudio" />
|
||||
<feature name="pcb" value="BANDAI-KARAOKE" />
|
||||
<feature name="mirroring" value="horizontal" />
|
||||
<dataarea name="prg" size="131072">
|
||||
<dataarea name="prg" size="262144">
|
||||
<rom name="karaoke studio (japan).prg" size="131072" crc="adfad6b6" sha1="5ab1d9cd55978af770a87749bd375741a63cb3d8" offset="00000" status="baddump" />
|
||||
<!-- HACK!! (necessary until we support proper cart subslot for this board) -->
|
||||
<rom name="karaoke studio senyou cassette vol. 2 (japan).prg" size="131072" crc="66473923" sha1="8a64ac421c82c8bc0c47e8fb28890ba13a086d56" offset="0x20000" status="baddump" />
|
||||
</dataarea>
|
||||
<!-- 8k VRAM on cartridge -->
|
||||
<dataarea name="vram" size="8192">
|
||||
</dataarea>
|
||||
<dataarea name="minicart" size="131072"> <!-- HACK!! (necessary until we support cart subslots) -->
|
||||
<rom name="karaoke studio senyou cassette vol. 2 (japan).prg" size="131072" crc="66473923" sha1="8a64ac421c82c8bc0c47e8fb28890ba13a086d56" offset="00000" status="baddump" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
@ -64356,7 +64354,7 @@ Also notice that VRAM & WRAM are probably incorrect for some of these sets, at t
|
|||
<feature name="pcb" value="BTL-SMB2C" />
|
||||
<feature name="mirroring" value="vertical" />
|
||||
<dataarea name="prg" size="81920">
|
||||
<rom name="super mario bros. 2 (j) (lf36).prg" size="81920" crc="756631b2" sha1="1a9f31844d0d2780ddcde06b6883f6138fa9daba" offset="00000" status="baddump" />
|
||||
<rom name="mr mary 2 (asia).prg" size="81920" crc="756631b2" sha1="1a9f31844d0d2780ddcde06b6883f6138fa9daba" offset="00000" status="baddump" />
|
||||
</dataarea>
|
||||
<!-- 8k VRAM on cartridge -->
|
||||
<dataarea name="vram" size="8192">
|
||||
|
|
|
@ -11,9 +11,11 @@
|
|||
<info name="alt_title" value="データック バトルラッシュ"/>
|
||||
<part name="cart" interface="datach_cart">
|
||||
<feature name="slot" value="datach_ep1" />
|
||||
<feature name="pcb" value="BANDAI-DATACH" />
|
||||
<feature name="pcb_model" value="MINI" />
|
||||
<feature name="ic1" value="B-AI '93 BATTLE-RUSH" />
|
||||
<feature name="ic2" value="X24C01" />
|
||||
<dataarea name="rom" size="262144">
|
||||
<rom name="datach - battle rush - build up robot tournament (japan).prg" size="262144" crc="983d8175" sha1="29cc759d5ca214eefc0cc1c6ce0f8b9111e58124" offset="00000" status="baddump" />
|
||||
<rom name="b-ai '93 battle-rush.ic1" size="262144" crc="983d8175" sha1="29cc759d5ca214eefc0cc1c6ce0f8b9111e58124" offset="00000" status="baddump" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
@ -75,9 +77,10 @@
|
|||
<info name="alt_title" value="データック SDガンダム ガンダムウォーズ"/>
|
||||
<part name="cart" interface="datach_cart">
|
||||
<feature name="slot" value="datach_rom" />
|
||||
<feature name="pcb" value="BANDAI-DATACH" />
|
||||
<feature name="pcb_model" value="MINI" />
|
||||
<feature name="ic1" value="DATACH GUNDAM" />
|
||||
<dataarea name="rom" size="262144">
|
||||
<rom name="datach - sd gundam - gundam wars (japan).prg" size="262144" crc="0be0a328" sha1="edd7a45a7f27e396b6d686f1861642d509863132" offset="00000" status="baddump" />
|
||||
<rom name="datach gundam.ic1" size="262144" crc="0be0a328" sha1="edd7a45a7f27e396b6d686f1861642d509863132" offset="00000" status="baddump" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include "machine/nes_event.h"
|
||||
#include "machine/nes_irem.h"
|
||||
#include "machine/nes_jaleco.h"
|
||||
#include "machine/nes_karastudio.h"
|
||||
#include "machine/nes_konami.h"
|
||||
#include "machine/nes_namcot.h"
|
||||
#include "machine/nes_pt554.h"
|
||||
|
|
|
@ -14,17 +14,18 @@
|
|||
* Bandai LZ93D50 + 24C01 EEPROM [mapper 159]
|
||||
* Bandai LZ93D50 + 24C02 EEPROM [mapper 16]
|
||||
* Bandai Famicom Jump 2 (aka LZ93D50 + SRAM) [mapper 153]
|
||||
* Bandai Karaoke Studio [mapper 188]
|
||||
* Bandai Oeka Kids [mapper 96]
|
||||
|
||||
* Bandai Datach Joint ROM System [mapper 157] is emulated in a separate source file
|
||||
to implement also the subslot, but the PCB is basically a Bandai LZ93D50 + 24C02 EEPROM
|
||||
pcb with added barcode reader and subslot
|
||||
|
||||
|
||||
* Bandai Karaoke Studio [mapper 188] is emulated in a separate source file
|
||||
to implement also the subslot and the mic inputs
|
||||
|
||||
|
||||
TODO:
|
||||
- investigate why EEPROM does not work
|
||||
- try to implement some sort of Karaoke emulation
|
||||
- add support to the PPU for the code necessary to Oeka Kids games (also needed by UNL-DANCE2000 PCB)
|
||||
- check the cause for the flickering in Famicom Jump 2
|
||||
|
||||
|
@ -50,7 +51,6 @@
|
|||
// constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
const device_type NES_KARAOKESTUDIO = &device_creator<nes_karaokestudio_device>;
|
||||
const device_type NES_OEKAKIDS = &device_creator<nes_oekakids_device>;
|
||||
const device_type NES_FCG = &device_creator<nes_fcg_device>;
|
||||
const device_type NES_LZ93D50 = &device_creator<nes_lz93d50_device>;
|
||||
|
@ -59,11 +59,6 @@ const device_type NES_LZ93D50_24C02 = &device_creator<nes_lz93d50_24c02_device>;
|
|||
const device_type NES_FJUMP2 = &device_creator<nes_fjump2_device>;
|
||||
|
||||
|
||||
nes_karaokestudio_device::nes_karaokestudio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: nes_nrom_device(mconfig, NES_KARAOKESTUDIO, "NES Cart Bandai Karaoke Studio PCB", tag, owner, clock, "nes_karaoke", __FILE__)
|
||||
{
|
||||
}
|
||||
|
||||
nes_oekakids_device::nes_oekakids_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: nes_nrom_device(mconfig, NES_OEKAKIDS, "NES Cart Bandai Oeka Kids PCB", tag, owner, clock, "nes_oeka", __FILE__)
|
||||
{
|
||||
|
@ -113,20 +108,6 @@ nes_fjump2_device::nes_fjump2_device(const machine_config &mconfig, const char *
|
|||
|
||||
|
||||
|
||||
|
||||
void nes_karaokestudio_device::device_start()
|
||||
{
|
||||
common_start();
|
||||
}
|
||||
|
||||
void nes_karaokestudio_device::pcb_reset()
|
||||
{
|
||||
m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
|
||||
prg16_89ab(0);
|
||||
prg16_cdef((m_prg_chunks - 1) ^ 0x08);
|
||||
chr8(0, m_chr_source);
|
||||
}
|
||||
|
||||
void nes_oekakids_device::device_start()
|
||||
{
|
||||
common_start();
|
||||
|
@ -210,25 +191,6 @@ void nes_fjump2_device::pcb_reset()
|
|||
mapper specific handlers
|
||||
-------------------------------------------------*/
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
Bandai Karaoke Studio board emulation
|
||||
|
||||
Games: Karaoke Studio
|
||||
|
||||
Note: we currently do not emulate the mic
|
||||
|
||||
iNES: mapper 188
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
WRITE8_MEMBER(nes_karaokestudio_device::write_h)
|
||||
{
|
||||
LOG_MMC(("karaoke studio write_h, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
prg16_89ab(data ^ 0x08);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
Bandai Oeka Kids board emulation
|
||||
|
|
|
@ -5,24 +5,6 @@
|
|||
#include "machine/i2cmem.h"
|
||||
|
||||
|
||||
// ======================> nes_karaokestudio_device
|
||||
|
||||
class nes_karaokestudio_device : public nes_nrom_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_karaokestudio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual DECLARE_WRITE8_MEMBER(write_h);
|
||||
|
||||
virtual void pcb_reset();
|
||||
|
||||
// TODO: add microphone I/O emulation
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_oekakids_device
|
||||
|
||||
class nes_oekakids_device : public nes_nrom_device
|
||||
|
@ -147,7 +129,6 @@ protected:
|
|||
|
||||
|
||||
// device type definition
|
||||
extern const device_type NES_KARAOKESTUDIO;
|
||||
extern const device_type NES_OEKAKIDS;
|
||||
extern const device_type NES_FCG;
|
||||
extern const device_type NES_LZ93D50;
|
||||
|
|
109
src/mess/machine/nes_karastudio.c
Normal file
109
src/mess/machine/nes_karastudio.c
Normal file
|
@ -0,0 +1,109 @@
|
|||
/***********************************************************************************************************
|
||||
|
||||
|
||||
NES/Famicom cartridge emulation for Bandai Karaoke Studio
|
||||
|
||||
Copyright MESS Team.
|
||||
Visit http://mamedev.org for licensing and usage restrictions.
|
||||
|
||||
|
||||
Here we emulate the following PCBs Bandai Karaoke Studio [mapper 188]
|
||||
|
||||
|
||||
TODO:
|
||||
- emulate the actual expansion slot for the Senyou Cassettes
|
||||
|
||||
***********************************************************************************************************/
|
||||
|
||||
|
||||
#include "emu.h"
|
||||
#include "machine/nes_karastudio.h"
|
||||
|
||||
#ifdef NES_PCB_DEBUG
|
||||
#define VERBOSE 1
|
||||
#else
|
||||
#define VERBOSE 0
|
||||
#endif
|
||||
|
||||
#define LOG_MMC(x) do { if (VERBOSE) logerror x; } while (0)
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
const device_type NES_KARAOKESTUDIO = &device_creator<nes_karaokestudio_device>;
|
||||
|
||||
|
||||
nes_karaokestudio_device::nes_karaokestudio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: nes_nrom_device(mconfig, NES_KARAOKESTUDIO, "NES Cart Bandai Karaoke Studio PCB", tag, owner, clock, "nes_karaoke", __FILE__),
|
||||
m_mic_ipt(*this, "MIC")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void nes_karaokestudio_device::device_start()
|
||||
{
|
||||
common_start();
|
||||
}
|
||||
|
||||
void nes_karaokestudio_device::pcb_reset()
|
||||
{
|
||||
m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
|
||||
prg16_89ab(0);
|
||||
prg16_cdef((m_prg_chunks - 1) ^ 0x08);
|
||||
chr8(0, m_chr_source);
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------
|
||||
mapper specific handlers
|
||||
-------------------------------------------------*/
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
Bandai Karaoke Studio board emulation
|
||||
|
||||
Games: Karaoke Studio + expansion carts with
|
||||
additional songs
|
||||
|
||||
Note: we currently do not emulate properly the
|
||||
expansion slot
|
||||
|
||||
iNES: mapper 188
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
READ8_MEMBER(nes_karaokestudio_device::read_m)
|
||||
{
|
||||
LOG_MMC(("karaoke studio read_m, offset: %04x\n", offset));
|
||||
return m_mic_ipt->read();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(nes_karaokestudio_device::write_h)
|
||||
{
|
||||
LOG_MMC(("karaoke studio write_h, offset: %04x, data: %02x\n", offset, data));
|
||||
// bit3 1 = M ROM (main unit), 0=E ROM (expansion)
|
||||
// HACK(?): currently it is not clear how the unit acknowledges the presence of the expansion
|
||||
// cart (when expansion is present, code keeps switching both from the expansion rom and from
|
||||
// the main ROM), so we load the expansion after the main PRG and handle banking as follows
|
||||
data ^= 8;
|
||||
|
||||
prg16_89ab(data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static INPUT_PORTS_START( karaoke_mic )
|
||||
PORT_START("MIC")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("A (Mic Select)") PORT_CODE(KEYCODE_X)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("B (Mic Start)") PORT_CODE(KEYCODE_Z)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Microphone (?)") PORT_CODE(KEYCODE_C)
|
||||
PORT_BIT( 0xf8, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
ioport_constructor nes_karaokestudio_device::device_input_ports() const
|
||||
{
|
||||
return INPUT_PORTS_NAME( karaoke_mic );
|
||||
}
|
30
src/mess/machine/nes_karastudio.h
Normal file
30
src/mess/machine/nes_karastudio.h
Normal file
|
@ -0,0 +1,30 @@
|
|||
#ifndef __NES_KARASTUDIO_H
|
||||
#define __NES_KARASTUDIO_H
|
||||
|
||||
#include "machine/nes_nxrom.h"
|
||||
|
||||
|
||||
// ======================> nes_karaokestudio_device
|
||||
|
||||
class nes_karaokestudio_device : public nes_nrom_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_karaokestudio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual ioport_constructor device_input_ports() const;
|
||||
virtual DECLARE_WRITE8_MEMBER(write_h);
|
||||
virtual DECLARE_READ8_MEMBER(read_m);
|
||||
|
||||
virtual void pcb_reset();
|
||||
|
||||
required_ioport m_mic_ipt;
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
extern const device_type NES_KARAOKESTUDIO;
|
||||
|
||||
#endif
|
|
@ -1554,6 +1554,7 @@ $(MESSOBJ)/nintendo.a: \
|
|||
$(MESS_MACHINE)/nes_jaleco.o \
|
||||
$(MESS_MACHINE)/nes_jy.o \
|
||||
$(MESS_MACHINE)/nes_kaiser.o \
|
||||
$(MESS_MACHINE)/nes_karastudio.o \
|
||||
$(MESS_MACHINE)/nes_konami.o \
|
||||
$(MESS_AUDIO)/vrc6.o \
|
||||
$(MESS_MACHINE)/nes_legacy.o \
|
||||
|
|
Loading…
Reference in a new issue