mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
namcona1.cpp: improved encapsulation [Angelo Salese]
This commit is contained in:
parent
9c5516bceb
commit
1acb9f2733
@ -27,15 +27,16 @@ To Do:
|
||||
area is uninitialized, the game software automatically writes these values there,
|
||||
but then hangs.
|
||||
*cgangpzl, cgangpzlj, exvania, exvaniaj, knckheadjp, quiztou
|
||||
|
||||
- xday2: unemulated printer and RTC devices (check test mode game options), also battery always returns NG
|
||||
|
||||
- X-Day 2:
|
||||
Rom board M112
|
||||
Rom board custom Key chip i.d. C394
|
||||
Game uses a small cash-register type printer (connects to rom board)
|
||||
Game also has a large L.E.D. type score board with several
|
||||
displays for various scores. (connects to rom board)
|
||||
Game also has a large L.E.D. type score board with several displays for various scores. (connects to rom board)
|
||||
Game uses coin-type battery on rom board. (not suicide)
|
||||
Game won't startup unless printer is connected and with paper.
|
||||
|
||||
|
||||
The board has a 28c16 EEPROM
|
||||
|
||||
@ -229,7 +230,7 @@ READ16_MEMBER(namcona1_state::custom_key_r)
|
||||
if( offset==4 ) return m_count;
|
||||
break;
|
||||
|
||||
case NAMCO_EXBANIA:
|
||||
case NAMCO_EXVANIA:
|
||||
if( offset==2 ) return 0x015e;
|
||||
break;
|
||||
|
||||
@ -347,7 +348,7 @@ int namcona1_state::transfer_dword( uint32_t dest, uint32_t source )
|
||||
return 0;
|
||||
} /* transfer_dword */
|
||||
|
||||
static void blit_setup( int format, int *bytes_per_row, int *pitch, int mode )
|
||||
void namcona1_state::blit_setup( int format, int *bytes_per_row, int *pitch, int mode )
|
||||
{
|
||||
if( mode == 3 )
|
||||
{ /* TILE DATA */
|
||||
@ -999,20 +1000,22 @@ MACHINE_CONFIG_DERIVED(namcona1_state::namcona2w, namcona2)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 38*8-1-0, 4*8, 32*8-1)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
/* NA-1 Hardware */
|
||||
DRIVER_INIT_MEMBER(namcona1_state,bkrtmaq) { m_gametype = NAMCO_BKRTMAQ; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,cgangpzl) { m_gametype = NAMCO_CGANGPZL; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,emeraldj) { m_gametype = NAMCO_EMERALDA; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,exvania) { m_gametype = NAMCO_EXVANIA; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,fa) { m_gametype = NAMCO_FA; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,swcourt) { m_gametype = NAMCO_SWCOURT; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,swcourtb) { m_gametype = NAMCO_SWCOURTB; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,tinklpit) { m_gametype = NAMCO_TINKLPIT; save_item(NAME(m_keyval)); }
|
||||
|
||||
DRIVER_INIT_MEMBER(namcona1_state,bkrtmaq) { m_gametype = NAMCO_BKRTMAQ; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,cgangpzl) { m_gametype = NAMCO_CGANGPZL; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,emeralda) { m_gametype = NAMCO_EMERALDA; } /* NA-2 Hardware */
|
||||
DRIVER_INIT_MEMBER(namcona1_state,emeraldj) { m_gametype = NAMCO_EMERALDA; } /* NA-1 Hardware */
|
||||
DRIVER_INIT_MEMBER(namcona1_state,exbania) { m_gametype = NAMCO_EXBANIA; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,fa) { m_gametype = NAMCO_FA; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,knckhead) { m_gametype = NAMCO_KNCKHEAD; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,numanath) { m_gametype = NAMCO_NUMANATH; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,quiztou) { m_gametype = NAMCO_QUIZTOU; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,swcourt) { m_gametype = NAMCO_SWCOURT; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,swcourtb) { m_gametype = NAMCO_SWCOURTB; }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,tinklpit) { m_gametype = NAMCO_TINKLPIT; save_item(NAME(m_keyval)); }
|
||||
DRIVER_INIT_MEMBER(namcona1_state,xday2) { m_gametype = NAMCO_XDAY2; }
|
||||
/* NA-2 Hardware */
|
||||
DRIVER_INIT_MEMBER(namcona2_state,emeralda) { m_gametype = NAMCO_EMERALDA; }
|
||||
DRIVER_INIT_MEMBER(namcona2_state,knckhead) { m_gametype = NAMCO_KNCKHEAD; }
|
||||
DRIVER_INIT_MEMBER(namcona2_state,numanath) { m_gametype = NAMCO_NUMANATH; }
|
||||
DRIVER_INIT_MEMBER(namcona2_state,quiztou) { m_gametype = NAMCO_QUIZTOU; }
|
||||
DRIVER_INIT_MEMBER(xday2_namcona2_state,xday2) { m_gametype = NAMCO_XDAY2; }
|
||||
|
||||
ROM_START( bkrtmaq )
|
||||
ROM_REGION( 0x200000, "maincpu", 0 )
|
||||
@ -1358,8 +1361,8 @@ ROM_END
|
||||
GAME( 1992, bkrtmaq, 0, namcona1w, namcona1_quiz, namcona1_state, bkrtmaq, ROT0, "Namco", "Bakuretsu Quiz Ma-Q Dai Bouken (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, cgangpzl, 0, namcona1w, namcona1_joy, namcona1_state, cgangpzl, ROT0, "Namco", "Cosmo Gang the Puzzle (US)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, cgangpzlj, cgangpzl, namcona1w, namcona1_joy, namcona1_state, cgangpzl, ROT0, "Namco", "Cosmo Gang the Puzzle (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, exvania, 0, namcona1, namcona1_joy, namcona1_state, exbania, ROT0, "Namco", "Exvania (World)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, exvaniaj, exvania, namcona1, namcona1_joy, namcona1_state, exbania, ROT0, "Namco", "Exvania (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, exvania, 0, namcona1, namcona1_joy, namcona1_state, exvania, ROT0, "Namco", "Exvania (World)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, exvaniaj, exvania, namcona1, namcona1_joy, namcona1_state, exvania, ROT0, "Namco", "Exvania (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, fghtatck, 0, namcona1, namcona1_joy, namcona1_state, fa, ROT90,"Namco", "Fighter & Attacker (US)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, fa, fghtatck, namcona1, namcona1_joy, namcona1_state, fa, ROT90,"Namco", "F/A (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, swcourt, 0, namcona1w, namcona1_joy, namcona1_state, swcourt, ROT0, "Namco", "Super World Court (World)", MACHINE_SUPPORTS_SAVE )
|
||||
@ -1370,11 +1373,11 @@ GAME( 1993, emeraldaja, emeralda, namcona1w, namcona1_joy, namcona1_state, emer
|
||||
GAME( 1993, tinklpit, 0, namcona1w, namcona1_joy, namcona1_state, tinklpit, ROT0, "Namco", "Tinkle Pit (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
// NA-2 (C70 MCU)
|
||||
GAME( 1992, knckhead, 0, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (World)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, knckheadj, knckhead, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, knckheadjp, knckhead, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (Japan, Prototype?)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1993, emeralda, 0, namcona2w, namcona1_joy, namcona1_state, emeralda, ROT0, "Namco", "Emeraldia (World)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1993, numanath, 0, namcona2, namcona1_joy, namcona1_state, numanath, ROT0, "Namco", "Numan Athletics (World)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1993, numanathj, numanath, namcona2, namcona1_joy, namcona1_state, numanath, ROT0, "Namco", "Numan Athletics (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1993, quiztou, 0, namcona2, namcona1_quiz, namcona1_state, quiztou, ROT0, "Namco", "Nettou! Gekitou! Quiztou!! (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1995, xday2, 0, namcona2, namcona1_joy, namcona1_state, xday2, ROT0, "Namco", "X-Day 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, knckhead, 0, namcona2, namcona1_joy, namcona2_state, knckhead, ROT0, "Namco", "Knuckle Heads (World)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, knckheadj, knckhead, namcona2, namcona1_joy, namcona2_state, knckhead, ROT0, "Namco", "Knuckle Heads (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, knckheadjp, knckhead, namcona2, namcona1_joy, namcona2_state, knckhead, ROT0, "Namco", "Knuckle Heads (Japan, Prototype?)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1993, emeralda, 0, namcona2w, namcona1_joy, namcona2_state, emeralda, ROT0, "Namco", "Emeraldia (World)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1993, numanath, 0, namcona2, namcona1_joy, namcona2_state, numanath, ROT0, "Namco", "Numan Athletics (World)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1993, numanathj, numanath, namcona2, namcona1_joy, namcona2_state, numanath, ROT0, "Namco", "Numan Athletics (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1993, quiztou, 0, namcona2, namcona1_quiz, namcona2_state, quiztou, ROT0, "Namco", "Nettou! Gekitou! Quiztou!! (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1995, xday2, 0, namcona2, namcona1_joy, xday2_namcona2_state, xday2, ROT0, "Namco", "X-Day 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
||||
|
@ -63,19 +63,14 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(snd_w);
|
||||
|
||||
DECLARE_DRIVER_INIT(bkrtmaq);
|
||||
DECLARE_DRIVER_INIT(quiztou);
|
||||
DECLARE_DRIVER_INIT(emeralda);
|
||||
DECLARE_DRIVER_INIT(numanath);
|
||||
DECLARE_DRIVER_INIT(fa);
|
||||
DECLARE_DRIVER_INIT(cgangpzl);
|
||||
DECLARE_DRIVER_INIT(tinklpit);
|
||||
DECLARE_DRIVER_INIT(swcourt);
|
||||
DECLARE_DRIVER_INIT(knckhead);
|
||||
DECLARE_DRIVER_INIT(xday2);
|
||||
DECLARE_DRIVER_INIT(exbania);
|
||||
DECLARE_DRIVER_INIT(exvania);
|
||||
DECLARE_DRIVER_INIT(emeraldj);
|
||||
DECLARE_DRIVER_INIT(swcourtb);
|
||||
|
||||
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(interrupt);
|
||||
@ -84,19 +79,19 @@ public:
|
||||
void namcona1w(machine_config &config);
|
||||
void namcona2w(machine_config &config);
|
||||
void namcona1(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
|
||||
private:
|
||||
enum
|
||||
{
|
||||
NAMCO_CGANGPZL,
|
||||
NAMCO_EMERALDA,
|
||||
NAMCO_KNCKHEAD,
|
||||
NAMCO_BKRTMAQ,
|
||||
NAMCO_EXBANIA,
|
||||
NAMCO_EXVANIA,
|
||||
NAMCO_QUIZTOU,
|
||||
NAMCO_SWCOURT,
|
||||
NAMCO_TINKLPIT,
|
||||
@ -106,6 +101,10 @@ private:
|
||||
NAMCO_SWCOURTB
|
||||
};
|
||||
|
||||
int m_gametype;
|
||||
|
||||
private:
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_mcu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
@ -131,7 +130,6 @@ private:
|
||||
std::vector<uint8_t> m_shaperam;
|
||||
|
||||
int m_mEnableInterrupts;
|
||||
int m_gametype;
|
||||
uint16_t m_count;
|
||||
uint32_t m_keyval;
|
||||
uint16_t m_mcu_mailbox[8];
|
||||
@ -153,6 +151,7 @@ private:
|
||||
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_background(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int primask );
|
||||
void tilemap_get_info(tile_data &tileinfo, int tile_index, const uint16_t *tilemap_videoram, bool use_4bpp_gfx);
|
||||
void blit_setup( int format, int *bytes_per_row, int *pitch, int mode );
|
||||
TILE_GET_INFO_MEMBER(tilemap_get_info0);
|
||||
TILE_GET_INFO_MEMBER(tilemap_get_info1);
|
||||
TILE_GET_INFO_MEMBER(tilemap_get_info2);
|
||||
@ -161,3 +160,28 @@ private:
|
||||
|
||||
void postload();
|
||||
};
|
||||
|
||||
class namcona2_state : public namcona1_state
|
||||
{
|
||||
public:
|
||||
namcona2_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: namcona1_state(mconfig, type, tag)
|
||||
{}
|
||||
|
||||
DECLARE_DRIVER_INIT(knckhead);
|
||||
DECLARE_DRIVER_INIT(emeralda);
|
||||
DECLARE_DRIVER_INIT(numanath);
|
||||
DECLARE_DRIVER_INIT(quiztou);
|
||||
};
|
||||
|
||||
class xday2_namcona2_state : public namcona2_state
|
||||
{
|
||||
public:
|
||||
xday2_namcona2_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: namcona2_state(mconfig, type, tag)
|
||||
{}
|
||||
|
||||
static constexpr feature_type unemulated_features() { return feature::PRINTER; }
|
||||
|
||||
DECLARE_DRIVER_INIT(xday2);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user