Arrow Bingo: Fixed clocks to be more accurate, hooked principal inputs

to make the game playable, added technical notes and cleaned-up a bit
the driver. [Roberto Fresca]
This commit is contained in:
RobertoFresca 2017-01-31 22:04:21 -03:00
parent c6c6fb8cc0
commit 22afdaeeff

View File

@ -405,9 +405,9 @@
************************************************************************************************/
#define MASTER_CLOCK XTAL_10MHz /* unknown */
#define MASTER_CLOCK XTAL_16MHz /* unknown */
#define CPU_CLOCK MASTER_CLOCK/4 /* guess... seems accurate */
#define CRTC_CLOCK MASTER_CLOCK/16 /* it gives 59.410646 fps with current settings */
#define CRTC_CLOCK MASTER_CLOCK/24 /* it gives 63.371293 Hz. with current settings */
#include "emu.h"
#include "cpu/z80/z80.h"
@ -519,14 +519,14 @@ uint32_t avt_state::screen_update_avt(screen_device &screen, bitmap_ind16 &bitma
count = 0;
for(y=0;y<mc6845_v_display;y++)
for(y = 0; y < mc6845_v_display; y++)
{
for(x=0;x<mc6845_h_display;x++)
for(x = 0; x < mc6845_h_display; x++)
{
uint16_t tile = m_videoram[count] | ((m_colorram[count] & 1) << 8);
uint8_t color = (m_colorram[count] & 0xf0) >> 4;
gfx->opaque(bitmap,cliprect,tile,color,0,0,x*8,(y*8));
gfx->opaque(bitmap, cliprect, tile,color, 0, 0, x * 8, y * 8);
count++;
}
@ -597,6 +597,8 @@ PALETTE_INIT_MEMBER(avt_state, avt)
// popmessage("written : %02X", data);
//}
// [:crtc] M6845: Mode Control 10 is not supported!!!
WRITE8_MEMBER( avt_state::avt_6845_address_w )
{
m_crtc_index = data;
@ -631,9 +633,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( avt_portmap, AS_IO, 8, avt_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
// AM_RANGE(0x00, 0x03) unk, maybe IO
// AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
// AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1")
// AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW1")
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0")
// AM_RANGE(0x08, 0x0b) unk, maybe IO
// AM_RANGE(0x08, 0x08) AM_READ_PORT("IN2")
// AM_RANGE(0x09, 0x09) AM_READ_PORT("IN3")
@ -644,13 +646,63 @@ static ADDRESS_MAP_START( avt_portmap, AS_IO, 8, avt_state )
ADDRESS_MAP_END
/* I/O byte R/W
(from avtbingo)
inputs are throusg port 02h, masked with 0x3F & 0x40.
02C3: DB 02 in a,($02)
02C5: 2F cpl
02C6: E6 3F and $3F
02C8: C9 ret
02D1: DB 02 in a,($02)
02D3: 2F cpl
02D4: E6 3F and $3F
02D6: CD B2 02 call $02B2
02D9: C9 ret
0338: DB 02 in a,($02)
033A: E6 40 and $40
033C: 28 02 jr z,$0340
033E: AF xor a
033F: C9 ret
poll the port 00h and compare with 0x03
1379: 0E 00 ld c,$00
137B: ED 78 in a,(c)
137D: FE 03 cp $03
137F: 20 04 jr nz,$1385
...code continues...
-----------------
unknown writes:
[:maincpu] ':maincpu' (01D4): unmapped io memory write to 0001 = 0F & FF
[:maincpu] ':maincpu' (01D8): unmapped io memory write to 0009 = 4F & FF
[:maincpu] ':maincpu' (01DC): unmapped io memory write to 000B = CF & FF
[:maincpu] ':maincpu' (01E0): unmapped io memory write to 000B = C0 & FF
[:maincpu] ':maincpu' (01E4): unmapped io memory write to 000A = C0 & FF \
[:maincpu] ':maincpu' (02CD): unmapped io memory write to 000A = EE & FF \
[:maincpu] ':maincpu' (030E): unmapped io memory write to 000A = C0 & FF > Alternate these values too often... Mux selector?
[:maincpu] ':maincpu' (02CD): unmapped io memory write to 000A = EE & FF /
[:maincpu] ':maincpu' (030E): unmapped io memory write to 000A = C0 & FF /
[:maincpu] ':maincpu' (0321): unmapped io memory write to 0003 = 06 & FF \
[:maincpu] ':maincpu' (0325): unmapped io memory write to 0003 = CF & FF \
[:maincpu] ':maincpu' (0329): unmapped io memory write to 0003 = FF & FF > Unknown commands.
[:maincpu] ':maincpu' (032D): unmapped io memory write to 0003 = 97 & FF /
[:maincpu] ':maincpu' (0331): unmapped io memory write to 0003 = F7 & FF /
[:maincpu] ':maincpu' (0335): unmapped io memory write to 000A = C0 & FF \
[:maincpu] ':maincpu' (02CD): unmapped io memory write to 000A = EE & FF \
[:maincpu] ':maincpu' (030E): unmapped io memory write to 000A = C0 & FF > Same as above...
[:maincpu] ':maincpu' (02CD): unmapped io memory write to 000A = EE & FF /
[:maincpu] ':maincpu' (030E): unmapped io memory write to 000A = C0 & FF /
avtnfl and avtbingo have similarities.
@ -659,7 +711,6 @@ ADDRESS_MAP_END
all access a000/c000 with an offset of 0x800 for video.
avtnfl and avtbingo use 28/29 for CRTC.
*/
/*********************************************
@ -823,6 +874,20 @@ static INPUT_PORTS_START( symbols )
INPUT_PORTS_END
static INPUT_PORTS_START( avtbingo )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Column 3 UP")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Column 2 UP")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Column 1 UP")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Column 5 UP")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Column 4 UP")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
/*********************************************
* Graphics Layouts *
*********************************************/
@ -960,8 +1025,8 @@ ROM_END
* Game Drivers *
*********************************************/
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
GAME( 1985, avtsym14, 0, avt, symbols, driver_device, 0, ROT0, "Advanced Video Technology", "Symbols (ver 1.4)", MACHINE_NOT_WORKING )
GAME( 1985, avtsym25, avtsym14, avt, symbols, driver_device, 0, ROT0, "Advanced Video Technology", "Symbols (ver 2.5)", MACHINE_NOT_WORKING )
GAME( 1985, avtbingo, 0, avt, symbols, driver_device, 0, ROT0, "Advanced Video Technology", "Arrow Bingo", MACHINE_NOT_WORKING )
GAME( 1985, avtbingo, 0, avt, avtbingo, driver_device, 0, ROT0, "Advanced Video Technology", "Arrow Bingo", MACHINE_NOT_WORKING )
GAME( 1989, avtnfl, 0, avt, symbols, driver_device, 0, ROT0, "Advanced Video Technology", "NFL (ver 109)", MACHINE_NOT_WORKING )