mirror of
https://github.com/holub/mame
synced 2025-10-06 17:08:28 +03:00
epos.cpp: notes + found out the flip screen bit. flip screen still need work though (nw)
This commit is contained in:
parent
01ced8725f
commit
e3a81674d2
@ -28,6 +28,10 @@
|
|||||||
halfs of the palette are identical, this is not an issue. See $039c.
|
halfs of the palette are identical, this is not an issue. See $039c.
|
||||||
The other games have a different color test, not using the busy loop.
|
The other games have a different color test, not using the busy loop.
|
||||||
|
|
||||||
|
- Find out how Beastie Feastie's 2nd player inputs work.
|
||||||
|
|
||||||
|
- Fix flip screen support for The Dealer and Beastie Feastie.
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
@ -81,7 +85,7 @@ ADDRESS_MAP_END
|
|||||||
static ADDRESS_MAP_START( io_map, AS_IO, 8, epos_state )
|
static ADDRESS_MAP_START( io_map, AS_IO, 8, epos_state )
|
||||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
|
AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
|
||||||
AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE(epos_port_1_w)
|
AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE(port_1_w)
|
||||||
AM_RANGE(0x02, 0x02) AM_READ_PORT("INPUTS") AM_DEVWRITE("aysnd", ay8910_device, data_w)
|
AM_RANGE(0x02, 0x02) AM_READ_PORT("INPUTS") AM_DEVWRITE("aysnd", ay8910_device, data_w)
|
||||||
AM_RANGE(0x03, 0x03) AM_READ_PORT("UNK")
|
AM_RANGE(0x03, 0x03) AM_READ_PORT("UNK")
|
||||||
AM_RANGE(0x06, 0x06) AM_DEVWRITE("aysnd", ay8910_device, address_w)
|
AM_RANGE(0x06, 0x06) AM_DEVWRITE("aysnd", ay8910_device, address_w)
|
||||||
@ -93,7 +97,7 @@ static ADDRESS_MAP_START( dealer_io_map, AS_IO, 8, epos_state )
|
|||||||
AM_RANGE(0x20, 0x24) AM_WRITE(dealer_decrypt_rom)
|
AM_RANGE(0x20, 0x24) AM_WRITE(dealer_decrypt_rom)
|
||||||
AM_RANGE(0x34, 0x34) AM_DEVWRITE("aysnd", ay8910_device, data_w)
|
AM_RANGE(0x34, 0x34) AM_DEVWRITE("aysnd", ay8910_device, data_w)
|
||||||
AM_RANGE(0x38, 0x38) AM_READ_PORT("DSW")
|
AM_RANGE(0x38, 0x38) AM_READ_PORT("DSW")
|
||||||
AM_RANGE(0x3C, 0x3C) AM_DEVWRITE("aysnd", ay8910_device, address_w)
|
AM_RANGE(0x3c, 0x3c) AM_DEVWRITE("aysnd", ay8910_device, address_w)
|
||||||
AM_RANGE(0x40, 0x40) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
|
AM_RANGE(0x40, 0x40) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
@ -409,7 +413,7 @@ static MACHINE_CONFIG_START( epos, epos_state )
|
|||||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
||||||
MCFG_SCREEN_SIZE(272, 241)
|
MCFG_SCREEN_SIZE(272, 241)
|
||||||
MCFG_SCREEN_VISIBLE_AREA(0, 271, 0, 235)
|
MCFG_SCREEN_VISIBLE_AREA(0, 271, 0, 235)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(epos_state, screen_update_epos)
|
MCFG_SCREEN_UPDATE_DRIVER(epos_state, screen_update)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||||
@ -440,12 +444,14 @@ static MACHINE_CONFIG_START( dealer, epos_state )
|
|||||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
||||||
MCFG_SCREEN_SIZE(272, 241)
|
MCFG_SCREEN_SIZE(272, 241)
|
||||||
MCFG_SCREEN_VISIBLE_AREA(0, 271, 0, 235)
|
MCFG_SCREEN_VISIBLE_AREA(0, 271, 0, 235)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(epos_state, screen_update_epos)
|
MCFG_SCREEN_UPDATE_DRIVER(epos_state, screen_update)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||||
MCFG_SOUND_ADD("aysnd", AY8910, 11000000/4)
|
MCFG_SOUND_ADD("aysnd", AY8910, 11000000/4)
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||||
|
// port a writes?
|
||||||
|
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(epos_state, flip_screen_w))
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
@ -617,7 +623,7 @@ ROM_START( beastf )
|
|||||||
ROM_LOAD( "bf-b09084.u4", 0x6000, 0x2000, CRC(c8cd9640) SHA1(72da881b903ead873cc3f4df27646d1ffdd63c1c) )
|
ROM_LOAD( "bf-b09084.u4", 0x6000, 0x2000, CRC(c8cd9640) SHA1(72da881b903ead873cc3f4df27646d1ffdd63c1c) )
|
||||||
|
|
||||||
ROM_REGION( 0x0020, "proms", 0 )
|
ROM_REGION( 0x0020, "proms", 0 )
|
||||||
ROM_LOAD( "82s123.u66", 0x0000, 0x0020, CRC(f4f6ddc5) BAD_DUMP SHA1(cab915acbefb5f451f538dd538bf9b3dd14bb1f5) )
|
ROM_LOAD( "82s123.u66", 0x0000, 0x0020, CRC(f4f6ddc5) BAD_DUMP SHA1(cab915acbefb5f451f538dd538bf9b3dd14bb1f5) ) // not dumped, taken from suprglob
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
DRIVER_INIT_MEMBER(epos_state,dealer)
|
DRIVER_INIT_MEMBER(epos_state,dealer)
|
||||||
@ -674,6 +680,6 @@ GAME( 1983, theglob, suprglob, epos, suprglob, driver_device, 0, ROT270
|
|||||||
GAME( 1983, theglob2, suprglob, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "The Glob (earlier)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1983, theglob2, suprglob, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "The Glob (earlier)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1983, theglob3, suprglob, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "The Glob (set 3)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1983, theglob3, suprglob, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "The Glob (set 3)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1984, igmo, 0, epos, igmo, driver_device, 0, ROT270, "Epos Corporation", "IGMO", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
|
GAME( 1984, igmo, 0, epos, igmo, driver_device, 0, ROT270, "Epos Corporation", "IGMO", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1984, dealer, 0, dealer, dealer, epos_state, dealer, ROT270, "Epos Corporation", "The Dealer", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
|
GAME( 1984, dealer, 0, dealer, dealer, epos_state, dealer, ROT270, "Epos Corporation", "The Dealer", MACHINE_WRONG_COLORS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1984, revenger, 0, dealer, dealer, epos_state, dealer, ROT270, "Epos Corporation", "Revenger", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
GAME( 1984, revenger, 0, dealer, dealer, epos_state, dealer, ROT270, "Epos Corporation", "Revenger", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1984, beastf, 0, dealer, beastf, epos_state, dealer, ROT270, "Epos Corporation", "Beaste Feastie", MACHINE_SUPPORTS_SAVE )
|
GAME( 1984, beastf, 0, dealer, beastf, epos_state, dealer, ROT270, "Epos Corporation", "Beaste Feastie", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
|
||||||
|
@ -23,13 +23,14 @@ public:
|
|||||||
/* misc */
|
/* misc */
|
||||||
int m_counter;
|
int m_counter;
|
||||||
DECLARE_WRITE8_MEMBER(dealer_decrypt_rom);
|
DECLARE_WRITE8_MEMBER(dealer_decrypt_rom);
|
||||||
DECLARE_WRITE8_MEMBER(epos_port_1_w);
|
DECLARE_WRITE8_MEMBER(port_1_w);
|
||||||
DECLARE_WRITE8_MEMBER(write_prtc);
|
DECLARE_WRITE8_MEMBER(write_prtc);
|
||||||
|
DECLARE_WRITE8_MEMBER(flip_screen_w);
|
||||||
DECLARE_DRIVER_INIT(dealer);
|
DECLARE_DRIVER_INIT(dealer);
|
||||||
virtual void machine_reset() override;
|
virtual void machine_reset() override;
|
||||||
DECLARE_MACHINE_START(epos);
|
DECLARE_MACHINE_START(epos);
|
||||||
DECLARE_MACHINE_START(dealer);
|
DECLARE_MACHINE_START(dealer);
|
||||||
UINT32 screen_update_epos(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||||
void get_pens( pen_t *pens );
|
void get_pens( pen_t *pens );
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
};
|
};
|
||||||
|
@ -54,8 +54,12 @@ void epos_state::get_pens( pen_t *pens )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WRITE8_MEMBER(epos_state::flip_screen_w)
|
||||||
|
{
|
||||||
|
flip_screen_set(BIT(data, 7));
|
||||||
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(epos_state::epos_port_1_w)
|
WRITE8_MEMBER(epos_state::port_1_w)
|
||||||
{
|
{
|
||||||
/* D0 - start light #1
|
/* D0 - start light #1
|
||||||
D1 - start light #2
|
D1 - start light #2
|
||||||
@ -73,7 +77,7 @@ WRITE8_MEMBER(epos_state::epos_port_1_w)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
UINT32 epos_state::screen_update_epos(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
UINT32 epos_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
pen_t pens[0x20];
|
pen_t pens[0x20];
|
||||||
offs_t offs;
|
offs_t offs;
|
||||||
@ -87,6 +91,12 @@ UINT32 epos_state::screen_update_epos(screen_device &screen, bitmap_rgb32 &bitma
|
|||||||
int x = (offs % 136) * 2;
|
int x = (offs % 136) * 2;
|
||||||
int y = (offs / 136);
|
int y = (offs / 136);
|
||||||
|
|
||||||
|
if (flip_screen())
|
||||||
|
{
|
||||||
|
x = 270 - x; // wrong
|
||||||
|
y = 240 - y; // wrong
|
||||||
|
}
|
||||||
|
|
||||||
bitmap.pix32(y, x + 0) = pens[(m_palette << 4) | (data & 0x0f)];
|
bitmap.pix32(y, x + 0) = pens[(m_palette << 4) | (data & 0x0f)];
|
||||||
bitmap.pix32(y, x + 1) = pens[(m_palette << 4) | (data >> 4)];
|
bitmap.pix32(y, x + 1) = pens[(m_palette << 4) | (data >> 4)];
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user