Fixes to default mapping as well as comment/information fixes for Mole Attack [M.A.S.H./Tafoid]

This commit is contained in:
Scott Stone 2009-11-05 19:05:44 +00:00
parent 448de6a3e9
commit 7b654c4d8d

View File

@ -1,51 +1,55 @@
// MOLE ATTACK YACHIYO 1982
// known clones: "Holy Moly"
//
// emulated by Jason Nelson, Phil Stroffolino
// known issues:
// some dips not mapped
// protection isn't fully understood, but game seems to be
// ok.
//
// buttons are laid out as follows:
// 7 8 9
// 4 5 6
// 1 2 3
//
// Working RAM notes:
// 0x2e0 number of credits
// 0x2F1 coin up trigger
// 0x2F2 round counter
// 0x2F3 flag value
// 0x2FD hammer aim for attract mode
// 0x2E1-E2 high score
// 0x2ED-EE score
// 0x301-309 presence and height of mole in each hole, from bottom left
// 0x30a
// 0x32E-336 if a hammer is above a mole. (Not the same as collision)
// 0x337 dip switch related
// 0x338 dip switch related
// 0x340 hammer control: manual=0; auto=1
// 0x34C round point 10s.
// 0x34D which bonus round pattern to use for moles.
// 0x349 button pressed (0..8 / 0xff)
// 0x350 number of players
// 0x351 irq-related
// 0x361
// 0x362
// 0x363
// 0x364
// 0x366 mirrors tile bank
// 0x36B controls which player is playing. (1 == player 2);
// 0x3DC affects mole popmessage
// 0x3E5 round point/passing point control?
// 0x3E7 round point/passing point control?
/* MOLE ATTACK by Yachiyo Electronics Co.,LTD. 1982
Known Clones:
"Holey Moley", from tai (Thomas Automatics, Inc.)
emulated by Jason Nelson, Phil Stroffolino
Known Issues:
- some dips not mapped
- protection isn't fully understood, but game seems to be ok.
- cpu speeds unverified
Buttons are laid out as follows:
7 8 9
4 5 6
1 2 3
Working RAM notes:
0x2e0 number of credits
0x2F1 coin up trigger
0x2F2 round counter
0x2F3 flag value
0x2FD hammer aim for attract mode
0x2E1-E2 high score
0x2ED-EE score
0x301-309 presence and height of mole in each hole, from bottom left
0x30a
0x32E-336 if a hammer is above a mole. (Not the same as collision)
0x337 dip switch related
0x338 dip switch related
0x340 hammer control: manual=0; auto=1
0x34C round point 10s.
0x34D which bonus round pattern to use for moles.
0x349 button pressed (0..8 / 0xff)
0x350 number of players
0x351 irq-related
0x361
0x362
0x363
0x364
0x366 mirrors tile bank
0x36B controls which player is playing. (1 == player 2);
0x3DC affects mole popmessage
0x3E5 round point/passing point control?
0x3E7 round point/passing point control?
*/
#include "driver.h"
#include "cpu/m6502/m6502.h"
#include "sound/ay8910.h"
WRITE8_HANDLER(mole_videoram_w);
WRITE8_HANDLER(mole_tilebank_w);
WRITE8_HANDLER(mole_flipscreen_w);
@ -57,6 +61,7 @@ VIDEO_UPDATE(mole);
static READ8_HANDLER( mole_protection_r )
{
/* Following are all known examples of Mole Attack
** code reading from the protection circuitry:
**
@ -99,6 +104,7 @@ static READ8_HANDLER( mole_protection_r )
** remaining reads have; for now we simply
** return 0x00
*/
return 0x00;
}
@ -143,20 +149,20 @@ static INPUT_PORTS_START( mole )
PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN0") /* 0x8d40 */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON5 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON6 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON7 )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON8 )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 1") PORT_CODE(KEYCODE_1_PAD)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 2") PORT_CODE(KEYCODE_2_PAD)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 3") PORT_CODE(KEYCODE_3_PAD)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 4") PORT_CODE(KEYCODE_4_PAD)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 5") PORT_CODE(KEYCODE_5_PAD)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 6") PORT_CODE(KEYCODE_6_PAD)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 7") PORT_CODE(KEYCODE_7_PAD)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 8") PORT_CODE(KEYCODE_8_PAD)
PORT_START("IN1") /* 0x8d80 */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON9 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_COCKTAIL
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 9") PORT_CODE(KEYCODE_9_PAD)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 1") PORT_CODE(KEYCODE_Q) PORT_COCKTAIL
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 2") PORT_CODE(KEYCODE_W) PORT_COCKTAIL
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 3") PORT_CODE(KEYCODE_E) PORT_COCKTAIL
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Cabinet ) )
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x10, DEF_STR( Cocktail ) )
@ -165,12 +171,12 @@ static INPUT_PORTS_START( mole )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_START("IN2") /* 0x8dc0 */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_COCKTAIL
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_COCKTAIL
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_COCKTAIL
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON9 ) PORT_COCKTAIL
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_COCKTAIL
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_COCKTAIL
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 8") PORT_CODE(KEYCODE_X) PORT_COCKTAIL
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 7") PORT_CODE(KEYCODE_Z) PORT_COCKTAIL
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 4") PORT_CODE(KEYCODE_A) PORT_COCKTAIL
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 9") PORT_CODE(KEYCODE_C) PORT_COCKTAIL
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 6") PORT_CODE(KEYCODE_D) PORT_COCKTAIL
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 5") PORT_CODE(KEYCODE_S) PORT_COCKTAIL
PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END