Kuru Kuru Pyon Pyon: Added technical and general notes.

Added a brief 'how to play' and bookkeeping instructions.
Hooked the YM2149 output ports and logged the writes for
testing purposes. Defined any clock used. Cleaned up a
bit the driver. [Roberto Fresca]
This commit is contained in:
Roberto Fresca 2012-12-20 19:12:37 +00:00
parent 9986bf0f20
commit 886412243b

View File

@ -1,4 +1,4 @@
/************************************************************************** /******************************************************************************
KURU KURU PYON PYON KURU KURU PYON PYON
Taiyo Jidoki / Success Taiyo Jidoki / Success
@ -9,15 +9,11 @@
This hardware seems to be a derivative of MSX2 'on steroids'. This hardware seems to be a derivative of MSX2 'on steroids'.
Depending how complex is turning the emulation, this driver
could be merged later with tonton.c, since the platforms are
sharing the hardware base...
*******************************************************************************
*************************************************************************** Technical Notes....
KURU KURU PYON PYON
(c)SUCCESS / CABINET :TAIYO JIDOKI
CPU : 2x Sharp LH0080A Z80A CPU : 2x Sharp LH0080A Z80A
@ -42,8 +38,6 @@
1x PAL12L6 (IC32) 1x PAL12L6 (IC32)
***************************************************************************
PCB Layout... PCB Layout...
.--------------------------------------------------------------------------------------------------. .--------------------------------------------------------------------------------------------------.
@ -114,74 +108,94 @@
AB = NEC C1663C 8926B. AB = NEC C1663C 8926B.
*************************************************************************** *******************************************************************************
Notes.... General Notes....
The game name could be translated as "Croak Croak Hop Hop" The game name could be translated as "Croak Croak Hop Hop"
Kuru is the frog sound, and Pyon is the sound of jumps. Kuru is the frog sound, and Pyon is the sound of jumps.
The game is playable, even when you can't hear all sounds.
Coin 1 (key 5) is not working properly and could hang the system. Coin 1 (key 5) is not working properly and could hang the system.
Once pressed, the game spits a message that means "Jammed Medal". Once pressed, the game spits a message that means "Jammed Medal".
For now, use Coin 2 (key 6) and Service (key 8) for credits... For now, use Coin 2 (key 6) and Service (key 8) for credits...
If you pressed Coin 1 and the game is not responding anymore, press RESET If you pressed Coin 1 and the game is not responding anymore, press RESET
(key 0) and the game will reset to default values. (key 0), and the game will reset to default values (even all counters will
be cleared).
In the Book Keeping, you can find the statistics... *******************************************************************************
* How to play...
Insert tokens (medals)...
You can bet to any (or all) of the following 5 characters: Bote, Oume, Pyoko,
Kunio, and Pyon Pyon. Press start, and the reels start to roll. You'll win if
you can get 3 of the choosen character(s) in a row, column or diagonal.
The black tadpoles behave just like jokers... If you have 2 choosen characters
in a row and the remaining one is a black tadpole, it will transform into another
character to complete the 3 in a row, allowing you to win.
Red tadpoles are a bonus. Once you get one, it will go to the right panel,
revealing a number. This number represents the extra credits you won.
* Bookkeeping...
Pressing Bookkeeping key (key 9), you enter the Bookkeeping Mode. There are
2 screens with all the game information like DIP switches and statistics...
1st screen... 1st screen...
- OMAKE: Extra/Bonus. - [Left panel]: All the DIP switches parameters.
2nd screen... - [Right panel]: Bet and Win totals, 100Y/10Y/medal IN/OUT, total of games,
won, loss, won by paid range, and 'omake' (extra/bonus).
- TATE: Vertical. 2nd screen (press Bookkeeping key again)...
- YOKO: Horizontal.
- NANAME: Diagonal.
...for each character (BOTE, OUME, PYOKO, KUNIO & PP). - Tate (vertical), Yoko (horizontal) and Naname (diagonal),
for each character (Bote, Oume, Pyoko, Kunio and Pyon Pyon).
Also... Also Aka (red) and Kuro (black).
- AKA: Red. Pressing the Bookkeeping key once more, you exit the mode and go back to the game.
- KURO: Black.
*************************************************************************** *******************************************************************************
Samples.... ADPCM Samples....
There are 14 samples in the system. There are 14 samples in the system.
00: "boterin" (?) 00: "Boterin"
01: 01:
02: "hakase" ("professor") 02: "Hakase" ("professor")
03: "pyokorin" 03: "Pyokorin"
04: "kunio" 04: "Kunio"
05: "pyon pyon" 05: "Pyon Pyon"
06: 06:
07: 07:
08: "oume" 08: "Oume"
09: "haipaa" ("hyper") 09: "Haipaa" ("hyper")
10: "ichi ni tsuite" ("on your marks") 10: "Ichi ni tsuite" ("on your marks")
11: "youi" ("get ready") 11: "Youi" ("get ready")
12: bang sound for the tadpoles landing in the right panel 12: Bang sound for the tadpoles landing in the right panel.
13: sound for reels when running 13: Sound effect for reels when running.
*************************************************************************** *******************************************************************************
TODO: TODO:
- Hook up AY8910 output ports. Or unused? - Hopper emulation.
- Find why the use of coin 1 always jams. Hopper? - Find why the use of coin 1 / payout always jam. Hopper related?
- Default DIP Switches, once the hopper/coin jam issues were solved...
***************************************************************************/ ******************************************************************************/
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
@ -212,6 +226,8 @@ public:
DECLARE_WRITE8_MEMBER(kurukuru_adpcm_reset_w); DECLARE_WRITE8_MEMBER(kurukuru_adpcm_reset_w);
DECLARE_READ8_MEMBER(kurukuru_adpcm_timer_irqack_r); DECLARE_READ8_MEMBER(kurukuru_adpcm_timer_irqack_r);
DECLARE_WRITE8_MEMBER(kurukuru_adpcm_data_w); DECLARE_WRITE8_MEMBER(kurukuru_adpcm_data_w);
DECLARE_WRITE8_MEMBER(ym2149_aout_w);
DECLARE_WRITE8_MEMBER(ym2149_bout_w);
void update_sound_irq(UINT8 cause); void update_sound_irq(UINT8 cause);
virtual void machine_start(); virtual void machine_start();
@ -220,9 +236,11 @@ public:
}; };
#define MAIN_CLOCK XTAL_21_4772MHz #define MAIN_CLOCK XTAL_21_4772MHz
#define CPU_CLOCK MAIN_CLOCK/6
#define YM2149_CLOCK MAIN_CLOCK/12
#define M5205_CLOCK XTAL_384kHz #define M5205_CLOCK XTAL_384kHz
#define VDP_MEM 0x30000 #define VDP_MEM 0x30000
/* from MSX2 driver, may be not accurate for this HW */ /* from MSX2 driver, may be not accurate for this HW */
#define MSX2_XBORDER_PIXELS 16 #define MSX2_XBORDER_PIXELS 16
@ -323,9 +341,9 @@ static ADDRESS_MAP_START( kurukuru_io, AS_IO, 8, kurukuru_state )
AM_RANGE(0x90, 0x90) AM_WRITE(kurukuru_bankswitch_w) AM_RANGE(0x90, 0x90) AM_WRITE(kurukuru_bankswitch_w)
AM_RANGE(0xa0, 0xa0) AM_READ_PORT("IN0") AM_RANGE(0xa0, 0xa0) AM_READ_PORT("IN0")
AM_RANGE(0xb0, 0xb0) AM_READ_PORT("IN1") AM_RANGE(0xb0, 0xb0) AM_READ_PORT("IN1")
AM_RANGE(0xc0, 0xc0) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) AM_RANGE(0xc0, 0xc0) AM_DEVWRITE_LEGACY("ym2149", ay8910_address_w)
AM_RANGE(0xc8, 0xc8) AM_READ_PORT("DSW2") AM_RANGE(0xc8, 0xc8) AM_READ_PORT("DSW2")
AM_RANGE(0xd0, 0xd0) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) AM_RANGE(0xd0, 0xd0) AM_DEVWRITE_LEGACY("ym2149", ay8910_data_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -372,6 +390,18 @@ static ADDRESS_MAP_START( audio_io, AS_IO, 8, kurukuru_state )
ADDRESS_MAP_END ADDRESS_MAP_END
/* YM2149 ports */
WRITE8_MEMBER(kurukuru_state::ym2149_aout_w)
{
logerror("YM2149: Port A out: %02X\n", data);
}
WRITE8_MEMBER(kurukuru_state::ym2149_bout_w)
{
logerror("YM2149: Port B out: %02X\n", data);
}
/************************************************* /*************************************************
* Input Ports Definitions * * Input Ports Definitions *
*************************************************/ *************************************************/
@ -389,7 +419,7 @@ static INPUT_PORTS_START( kurukuru )
PORT_START("IN1") PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_9) PORT_NAME("Bookkeeping") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_9) PORT_NAME("Bookkeeping")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_8) PORT_NAME("Service") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_8) PORT_NAME("Service") // add credits without contabilize them
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_0) PORT_NAME("Reset Button") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_0) PORT_NAME("Reset Button")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) PORT_NAME("Unknown 1") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) PORT_NAME("Unknown 1")
@ -469,14 +499,14 @@ void kurukuru_state::machine_reset()
* Sound Interfaces * * Sound Interfaces *
*************************************************/ *************************************************/
static const ay8910_interface ay8910_intf = static const ay8910_interface ym2149_intf =
{ {
AY8910_LEGACY_OUTPUT, AY8910_LEGACY_OUTPUT,
AY8910_DEFAULT_LOADS, AY8910_DEFAULT_LOADS,
DEVCB_UNMAPPED, DEVCB_UNMAPPED,
DEVCB_UNMAPPED, DEVCB_UNMAPPED,
DEVCB_UNMAPPED, // some writes... DEVCB_DRIVER_MEMBER(kurukuru_state, ym2149_aout_w),
DEVCB_UNMAPPED // some writes... DEVCB_DRIVER_MEMBER(kurukuru_state, ym2149_bout_w)
}; };
static const msm5205_interface msm5205_config = static const msm5205_interface msm5205_config =
@ -493,12 +523,12 @@ static const msm5205_interface msm5205_config =
static MACHINE_CONFIG_START( kurukuru, kurukuru_state ) static MACHINE_CONFIG_START( kurukuru, kurukuru_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80,MAIN_CLOCK/6) MCFG_CPU_ADD("maincpu",Z80, CPU_CLOCK)
MCFG_CPU_PROGRAM_MAP(kurukuru_map) MCFG_CPU_PROGRAM_MAP(kurukuru_map)
MCFG_CPU_IO_MAP(kurukuru_io) MCFG_CPU_IO_MAP(kurukuru_io)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kurukuru_state, kurukuru_vdp_scanline, "screen", 0, 1) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kurukuru_state, kurukuru_vdp_scanline, "screen", 0, 1)
MCFG_CPU_ADD("audiocpu", Z80, MAIN_CLOCK/6) MCFG_CPU_ADD("audiocpu", Z80, CPU_CLOCK)
MCFG_CPU_PROGRAM_MAP(audio_map) MCFG_CPU_PROGRAM_MAP(audio_map)
MCFG_CPU_IO_MAP(audio_io) MCFG_CPU_IO_MAP(audio_io)
@ -523,11 +553,11 @@ static MACHINE_CONFIG_START( kurukuru, kurukuru_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("aysnd", YM2149, MAIN_CLOCK/12) MCFG_SOUND_ADD("ym2149", YM2149, YM2149_CLOCK)
MCFG_SOUND_CONFIG(ay8910_intf) MCFG_SOUND_CONFIG(ym2149_intf)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MCFG_SOUND_ADD("adpcm", MSM5205, XTAL_384kHz) MCFG_SOUND_ADD("adpcm", MSM5205, M5205_CLOCK)
MCFG_SOUND_CONFIG(msm5205_config) MCFG_SOUND_CONFIG(msm5205_config)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MACHINE_CONFIG_END MACHINE_CONFIG_END