some improvements to kothello:

- hooked up inputs
- promoted to working
dipswitcha are not implemented; for this reason are necessary 5 coins for 1 credit
This commit is contained in:
Roberto Zandona 2008-08-01 12:19:40 +00:00
parent 6ddfa127af
commit 6a2eccda3a

View File

@ -14,6 +14,15 @@ I'm not sure about the refresh rate, 60Hz makes time match the dip switch
settings, but music runs too fast.
* kothello
To Do: Find Dip Switches
Notes: Currently, the game needs 5 coins to give 1 credit. If you use the
Service Coin you can start the game after a single coin, but the credits
are updated on screen only once every 5 coins. Both these issues are
probably due to the game code reading some Coinage bit from Dips.
***************************************************************************/
#include "driver.h"
@ -759,17 +768,17 @@ static ADDRESS_MAP_START( shanghai_portmap, ADDRESS_SPACE_IO, 16 )
AM_RANGE(0x02, 0x03) AM_READWRITE(HD63484_data_r, HD63484_data_w)
AM_RANGE(0x20, 0x21) AM_READWRITE(YM2203_status_port_0_lsb_r, YM2203_control_port_0_lsb_w)
AM_RANGE(0x22, 0x23) AM_READWRITE(YM2203_read_port_0_lsb_r, YM2203_write_port_0_lsb_w)
AM_RANGE(0x40, 0x41) AM_READ(input_port_0_word_r)
AM_RANGE(0x44, 0x45) AM_READ(input_port_1_word_r)
AM_RANGE(0x48, 0x49) AM_READ(input_port_2_word_r)
AM_RANGE(0x40, 0x41) AM_READ_PORT("P1")
AM_RANGE(0x44, 0x45) AM_READ_PORT("P2")
AM_RANGE(0x48, 0x49) AM_READ_PORT("SYSTEM")
AM_RANGE(0x4c, 0x4d) AM_WRITE(shanghai_coin_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( shangha2_portmap, ADDRESS_SPACE_IO, 16 )
AM_RANGE(0x00, 0x01) AM_READ(input_port_0_word_r)
AM_RANGE(0x10, 0x11) AM_READ(input_port_1_word_r)
AM_RANGE(0x20, 0x21) AM_READ(input_port_2_word_r)
AM_RANGE(0x00, 0x01) AM_READ_PORT("P1")
AM_RANGE(0x10, 0x11) AM_READ_PORT("P2")
AM_RANGE(0x20, 0x21) AM_READ_PORT("SYSTEM")
AM_RANGE(0x30, 0x31) AM_READWRITE(HD63484_status_r, HD63484_address_w)
AM_RANGE(0x32, 0x33) AM_READWRITE(HD63484_data_r, HD63484_data_w)
AM_RANGE(0x40, 0x41) AM_READWRITE(YM2203_status_port_0_lsb_r, YM2203_control_port_0_lsb_w)
@ -777,25 +786,19 @@ static ADDRESS_MAP_START( shangha2_portmap, ADDRESS_SPACE_IO, 16 )
AM_RANGE(0x50, 0x51) AM_WRITE(shanghai_coin_w)
ADDRESS_MAP_END
static READ16_HANDLER(shanghai_rand_r)
{
return mame_rand(machine);
}
static READ16_HANDLER( kothello_HD63484_status_r )
{
return 0xff22; /* write FIFO ready + command end + read FIFO ready */
return 0xff22; /* write FIFO ready + command end + read FIFO ready */
}
static ADDRESS_MAP_START( kothello_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000, 0x07fff) AM_RAM
AM_RANGE(0x08010, 0x08011) AM_READWRITE(kothello_HD63484_status_r, HD63484_address_w)
AM_RANGE(0x08012, 0x08013) AM_READWRITE(HD63484_data_r, HD63484_data_w)
AM_RANGE(0x09010, 0x0901f) AM_READWRITE(shanghai_rand_r, SMH_NOP) // unknown, sub cpu communication ?
AM_RANGE(0x09010, 0x09011) AM_READ_PORT("P1")
AM_RANGE(0x09012, 0x09013) AM_READ_PORT("P2")
AM_RANGE(0x09014, 0x09015) AM_READ_PORT("SYSTEM")
AM_RANGE(0x09016, 0x0901f) AM_WRITENOP // 0x9016 is set to 0 at the boot
AM_RANGE(0x0a000, 0x0a1ff) AM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x0b010, 0x0b01f) AM_READWRITE(seibu_main_word_r, seibu_main_word_w)
AM_RANGE(0x80000, 0xfffff) AM_ROM
@ -803,11 +806,44 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( kothello )
SEIBU_COIN_INPUTS /* coin inputs read through sound cpu */
PORT_START_TAG("P1")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START_TAG("P2")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START_TAG("SYSTEM")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
static INPUT_PORTS_START( shanghai )
PORT_START /* IN0 */
PORT_START_TAG("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
@ -817,7 +853,7 @@ static INPUT_PORTS_START( shanghai )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START /* IN1 */
PORT_START_TAG("P2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
@ -827,7 +863,7 @@ static INPUT_PORTS_START( shanghai )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START /* IN2 */
PORT_START_TAG("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
@ -837,7 +873,7 @@ static INPUT_PORTS_START( shanghai )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START /* DSW0 */
PORT_START_TAG("DSW1")
PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Allow_Continue ) )
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
@ -861,7 +897,7 @@ static INPUT_PORTS_START( shanghai )
PORT_DIPSETTING( 0xa0, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x80, DEF_STR( 1C_4C ) )
PORT_START /* DSW1 */
PORT_START_TAG("DSW2")
PORT_DIPNAME( 0x01, 0x01, "Confirmation" )
PORT_DIPSETTING( 0x01, DEF_STR( No ) )
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
@ -886,7 +922,7 @@ static INPUT_PORTS_START( shanghai )
INPUT_PORTS_END
static INPUT_PORTS_START( shangha2 )
PORT_START /* IN0 */
PORT_START_TAG("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
@ -896,7 +932,7 @@ static INPUT_PORTS_START( shangha2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START /* IN1 */
PORT_START_TAG("P2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
@ -906,7 +942,7 @@ static INPUT_PORTS_START( shangha2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START /* IN2 */
PORT_START_TAG("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
@ -916,7 +952,7 @@ static INPUT_PORTS_START( shangha2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START /* DSW0 */
PORT_START_TAG("DSW1")
PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x06, 0x06, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x06, DEF_STR( Easy ) )
@ -937,7 +973,7 @@ static INPUT_PORTS_START( shangha2 )
PORT_DIPSETTING( 0x40, "90" )
PORT_DIPSETTING( 0x00, "120" )
PORT_START /* DSW1 */
PORT_START_TAG("DSW2")
PORT_DIPNAME( 0x03, 0x03, "Mystery Tiles" )
PORT_DIPSETTING( 0x03, "0" )
PORT_DIPSETTING( 0x02, "4" )
@ -1172,4 +1208,4 @@ ROM_END
GAME( 1988, shanghai, 0, shanghai, shanghai, 0, ROT0, "Sunsoft", "Shanghai (Japan)", GAME_IMPERFECT_GRAPHICS )
GAME( 1989, shangha2, 0, shangha2, shangha2, 0, ROT0, "Sunsoft", "Shanghai II (Japan)", 0 )
GAME( 1990, kothello, 0, kothello, kothello, 0, ROT0, "Success", "Kyuukyoku no Othello", GAME_NOT_WORKING )
GAME( 1990, kothello, 0, kothello, kothello, 0, ROT0, "Success", "Kyuukyoku no Othello", GAME_IMPERFECT_GRAPHICS )