summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes/metro.h
blob: 3aad966cbd2e1790790a8072ca5fdc427d01601c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*************************************************************************

    Metro Games

*************************************************************************/

class metro_state
{
public:
	static void *alloc(running_machine &machine) { return auto_alloc_clear(&machine, metro_state(machine)); }

	metro_state(running_machine &machine) { }

	/* memory pointers */
	UINT16 *    vram_0;
	UINT16 *    vram_1;
	UINT16 *    vram_2;
	UINT16 *    spriteram;
	UINT16 *    tiletable;
	UINT16 *    tiletable_old;
	UINT16 *    blitter_regs;
	UINT16 *    scroll;
	UINT16 *    window;
	UINT16 *    irq_enable;
	UINT16 *    irq_levels;
	UINT16 *    irq_vectors;
	UINT16 *    rombank;
	UINT16 *    videoregs;
	UINT16 *    screenctrl;
	UINT16 *    input_sel;
	UINT16 *    k053936_ram;
	UINT8 *     dirtyindex;
	UINT8 *     empty_tiles;

	size_t      spriteram_size;
	size_t      tiletable_size;

	int			flip_screen;
//	UINT16 *    paletteram;    // currently this uses generic palette handling

	/* video-related */
	tilemap_t   *k053936_tilemap;
	tilemap_t   *bg_tilemap[3];
	tilemap_t   *bg_tilemap_16x16[3];


	int         support_8bpp, support_16x16;
	int         has_zoom;
	int         sprite_xoffs, sprite_yoffs;

	/* blitter */
	int         blitter_bit;

	/* irq_related */
	int         irq_line;
	UINT8       requested_int[8];
	emu_timer   *mouja_irq_timer;

	/* sound related */
	UINT16      soundstatus;
	int         porta, portb, busy_sndcpu;

	/* misc */
	int         gakusai_oki_bank_lo, gakusai_oki_bank_hi;

	/* used by vmetal.c */
	UINT16 *vmetal_texttileram;
	UINT16 *vmetal_mid1tileram;
	UINT16 *vmetal_mid2tileram;
	UINT16 *vmetal_tlookup;
	UINT16 *vmetal_videoregs;

	tilemap_t *vmetal_texttilemap;
	tilemap_t *vmetal_mid1tilemap;
	tilemap_t *vmetal_mid2tilemap;

	/* devices */
	running_device *maincpu;
	running_device *audiocpu;
	running_device *oki;
	running_device *ymsnd;
	running_device *k053936;
};


/*----------- defined in video/metro.c -----------*/

WRITE16_HANDLER( metro_window_w );
WRITE16_HANDLER( metro_vram_0_w );
WRITE16_HANDLER( metro_vram_1_w );
WRITE16_HANDLER( metro_vram_2_w );
WRITE16_HANDLER( metro_k053936_w );

VIDEO_START( metro_14100 );
VIDEO_START( metro_14220 );
VIDEO_START( metro_14300 );
VIDEO_START( blzntrnd );
VIDEO_START( gstrik2 );

VIDEO_UPDATE( metro );

void metro_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect);