mirror of
https://github.com/holub/mame
synced 2025-04-25 17:56:43 +03:00
dwarfd: fix graphics (nw)
This commit is contained in:
parent
cc05921cdb
commit
b38ca3b8e5
@ -10,9 +10,7 @@
|
||||
|
||||
TODO:
|
||||
|
||||
- convert driver to use i8275 CRT device emulation
|
||||
- fix gfx glitches and banking
|
||||
- correct colors
|
||||
- DIPs
|
||||
- layout(lamps)
|
||||
- NVRAM
|
||||
@ -24,6 +22,7 @@ Setting all dipswitches active and dipswitch 10 inactive allows game/gfx switchi
|
||||
are all corrupt/scrambled.
|
||||
Also the dipswitches are active low/inverted, since on the machine this was tested on dipswitches 2,3,5,6,8 were ON, and 1,4 and 7 were OFF.
|
||||
There are only 8 dipswitches populated on the Dwarf's den boards seen so far.
|
||||
Pokeresp must be reset once to get the correct graphics (Why?).
|
||||
|
||||
|
||||
|
||||
@ -341,6 +340,7 @@ public:
|
||||
virtual void machine_reset() override;
|
||||
DECLARE_PALETTE_INIT(dwarfd);
|
||||
I8275_DRAW_CHARACTER_MEMBER(display_pixels);
|
||||
I8275_DRAW_CHARACTER_MEMBER(pesp_display_pixels);
|
||||
I8275_DRAW_CHARACTER_MEMBER(qc_display_pixels);
|
||||
};
|
||||
|
||||
@ -575,6 +575,29 @@ static INPUT_PORTS_START( quarterh )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_POKER_CANCEL ) PORT_NAME("Unzap") //uz unzap
|
||||
INPUT_PORTS_END
|
||||
|
||||
I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::pesp_display_pixels)
|
||||
{
|
||||
int i;
|
||||
int bank = ((gpa & 2) ? 0 : 2) + (gpa & 1);
|
||||
const rgb_t *palette = m_palette->palette()->entry_list_raw();
|
||||
UINT16 pixels = m_charmap[(linecount & 7) + ((charcode + (bank * 128)) << 3)];
|
||||
if(!x)
|
||||
m_back_color = false;
|
||||
|
||||
//if(!linecount)
|
||||
// logerror("%d %d %02x %02x %02x %02x %02x %02x %02x\n", x/8, y/8, charcode, lineattr, lten, rvv, vsp, gpa, hlgt);
|
||||
|
||||
for(i=0;i<8;i+=2)
|
||||
{
|
||||
UINT8 pixel = (pixels >> (i * 2)) & 0xf;
|
||||
UINT8 value = (pixel >> 1) | (rvv << 4) | (vsp << 3);
|
||||
bitmap.pix32(y, x + i) = palette[value];
|
||||
bitmap.pix32(y, x + i + 1) = palette[(pixel & 1) ? 0 : value];
|
||||
if(m_back_color)
|
||||
bitmap.pix32(y, x + i - 1) = palette[value];
|
||||
m_back_color = pixel & 1;
|
||||
}
|
||||
}
|
||||
|
||||
I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::display_pixels)
|
||||
{
|
||||
@ -798,37 +821,13 @@ static MACHINE_CONFIG_START( dwarfd, dwarfd_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( pokeresp, dwarfd_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
/* FIXME: The 8085A had a max clock of 6MHz, internally divided by 2! */
|
||||
MCFG_CPU_ADD("maincpu", I8085A, 10595000/3*2) /* ? MHz */
|
||||
MCFG_I8085A_SOD(WRITELINE(dwarfd_state,dwarfd_sod_callback))
|
||||
static MACHINE_CONFIG_DERIVED( pokeresp, dwarfd )
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_PROGRAM_MAP(pokeresp_map)
|
||||
MCFG_CPU_IO_MAP(io_map)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_SIZE(272*2, 200+4*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 272*2-1, 0, 200-1)
|
||||
MCFG_SCREEN_UPDATE_DEVICE("i8275", i8275_device, screen_update)
|
||||
|
||||
MCFG_DEVICE_ADD("i8275", I8275, 10595000/3)
|
||||
MCFG_I8275_CHARACTER_WIDTH(8)
|
||||
MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(dwarfd_state, display_pixels)
|
||||
MCFG_I8275_IRQ_CALLBACK(INPUTLINE("maincpu", I8085_RST55_LINE))
|
||||
MCFG_I8275_DRQ_CALLBACK(WRITELINE(dwarfd_state, drq_w))
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", dwarfd)
|
||||
MCFG_PALETTE_ADD("palette", 32)
|
||||
MCFG_PALETTE_INIT_OWNER(dwarfd_state, dwarfd)
|
||||
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("aysnd", AY8910, 1500000)
|
||||
MCFG_AY8910_PORT_A_READ_CB(IOPORT("IN2"))
|
||||
MCFG_AY8910_PORT_B_READ_CB(IOPORT("IN1"))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MCFG_DEVICE_MODIFY("i8275")
|
||||
MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(dwarfd_state, pesp_display_pixels)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( qc, dwarfd )
|
||||
@ -1107,9 +1106,9 @@ DRIVER_INIT_MEMBER(dwarfd_state,qc)
|
||||
}
|
||||
|
||||
/* YEAR NAME PARENT MACHINE INPUT INIT ORENTATION, COMPANY FULLNAME FLAGS */
|
||||
GAME( 1979, pokeresp, 0, pokeresp, dwarfd, dwarfd_state, dwarfd, 0, "Electro-Sport", "Poker (Electro-Sport)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1981, dwarfd, 0, dwarfd, dwarfd, dwarfd_state, dwarfd, 0, "Electro-Sport", "Draw Poker III / Dwarfs Den (Dwarf Gfx)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1981, dwarfda, dwarfd, dwarfd, dwarfd, dwarfd_state, dwarfd, 0, "Electro-Sport", "Draw Poker III / Dwarfs Den (Card Gfx)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1979, pokeresp, 0, pokeresp, dwarfd, dwarfd_state, dwarfd, 0, "Electro-Sport", "Poker (Electro-Sport)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1981, dwarfd, 0, dwarfd, dwarfd, dwarfd_state, dwarfd, 0, "Electro-Sport", "Draw Poker III / Dwarfs Den (Dwarf Gfx)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1981, dwarfda, dwarfd, dwarfd, dwarfd, dwarfd_state, dwarfd, 0, "Electro-Sport", "Draw Poker III / Dwarfs Den (Card Gfx)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1983, quarterh, 0, dwarfd, quarterh, dwarfd_state, dwarfd, 0, "Electro-Sport", "Quarter Horse (set 1, Pioneer PR-8210)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
GAME( 1983, quarterha, quarterh, dwarfd, quarterh, dwarfd_state, dwarfd, 0, "Electro-Sport", "Quarter Horse (set 2, Pioneer PR-8210)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
GAME( 1983, quarterhb, quarterh, dwarfd, quarterh, dwarfd_state, dwarfd, 0, "Electro-Sport", "Quarter Horse (set 3, Pioneer LD-V2000)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
|
Loading…
Reference in New Issue
Block a user