summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes/segas16.h
blob: b78e47f83ef12bd86b8a3967b0b4713202854256 (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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
class segas1x_state : public driver_device
{
public:
	segas1x_state(const machine_config &mconfig, device_type type, const char *tag)
		: driver_device(mconfig, type, tag),
		  m_interrupt_timer(*this, "int_timer") { }

	/* memory pointers */
//  UINT16 *  m_workram;  // this is used in the nvram handler, hence it cannot be added here
//  UINT16 *  m_paletteram;   // this is used in the segaic16 mapper, hence it cannot be added here (yet)
//  UINT16 *  m_tileram_0;    // this is used in the segaic16 mapper, hence it cannot be added here (yet)
//  UINT16 *  m_textram_0;    // this is used in the segaic16 mapper, hence it cannot be added here (yet)
//  UINT16 *  m_spriteram_0;  // this is used in the segaic16 mapper, hence it cannot be added here (yet)

	/* misc video */
	UINT8 m_road_priority;		// segaxbd
	bitmap_t *m_tmp_bitmap;		// segaybd & segas18
	UINT8 m_grayscale_enable;		// segas18
	UINT8 m_vdp_enable;			// segas18
	UINT8 m_vdp_mixing;			// segas18

	/* misc common */
	UINT8 m_rom_board;			// segas16b
	UINT8 m_mj_input_num;		// segas16a & segas16b
	UINT8 m_mj_last_val;		// segas16b
	UINT8 m_adc_select;			// segahang & segaorun
	UINT8 m_timer_irq_state;		// segaxbd & segaybd
	UINT8 m_vblank_irq_state;		// segaorun, segaxbd & segaybd
	UINT8 m_misc_io_data[0x10];	// system18 & segaybd

	void (*m_i8751_vblank_hook)(running_machine &machine);
	const UINT8 *m_i8751_initial_config;

	read16_space_func m_custom_io_r;
	write16_space_func m_custom_io_w;

	/* misc system 16b */
	UINT8 m_atomicp_sound_divisor;
	UINT8 m_atomicp_sound_count;
	UINT8 m_disable_screen_blanking;
	UINT8 m_hwc_input_value;


	/* misc system 16a */
	UINT8 m_video_control;
	UINT8 m_mcu_control;
	UINT8 m_n7751_command;
	UINT32 m_n7751_rom_address;
	UINT8 m_last_buttons1;
	UINT8 m_last_buttons2;
	int m_read_port;

	void (*m_lamp_changed_w)(running_machine &machine, UINT8 changed, UINT8 newval);

	/* misc system 18 */
	UINT8 m_mcu_data;

	UINT8 m_wwally_last_x[3];
	UINT8 m_wwally_last_y[3];
	UINT8 m_lghost_value;
	UINT8 m_lghost_select;

	/* misc segaorun */
	UINT8 m_irq2_state;
	const UINT8 *m_custom_map;

	/* misc yboard */
	UINT8 m_analog_data[4];
	int m_irq2_scanline;

	/* misc xboard */
	UINT8 m_iochip_regs[2][8];
	UINT8 m_iochip_force_input;

	UINT8 (*m_iochip_custom_io_r[2])(offs_t offset, UINT8 portdata);	// currently unused
	void (*m_iochip_custom_io_w[2])(offs_t offset, UINT8 data);	// currently unused

	UINT8 m_adc_reverse[8];

	UINT8 m_gprider_hack;
	UINT16 *m_loffire_sync;


	/* devices */
	device_t *m_maincpu;
	device_t *m_soundcpu;
	device_t *m_subcpu;
	device_t *m_subx;
	device_t *m_suby;
	device_t *m_mcu;
	device_t *m_ymsnd;
	device_t *m_ppi8255;
	device_t *m_n7751;
	device_t *m_ppi8255_1;
	device_t *m_ppi8255_2;
	optional_device<timer_device> m_interrupt_timer;
	device_t *m_315_5248_1;
	device_t *m_315_5250_1;
	device_t *m_315_5250_2;
};


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

VIDEO_START( hangon );
VIDEO_START( sharrier );
SCREEN_UPDATE( hangon );

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

VIDEO_START( system16a );
SCREEN_UPDATE( system16a );

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

VIDEO_START( system16b );
VIDEO_START( timscanr );
SCREEN_UPDATE( system16b );

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

VIDEO_START( system18 );
SCREEN_UPDATE( system18 );

void system18_set_grayscale(running_machine &machine, int enable);
void system18_set_vdp_enable(running_machine &machine, int eanble);
void system18_set_vdp_mixing(running_machine &machine, int mixing);

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

VIDEO_START( outrun );
VIDEO_START( shangon );
SCREEN_UPDATE( outrun );
SCREEN_UPDATE( shangon );

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

VIDEO_START( xboard );
SCREEN_UPDATE( xboard );

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

VIDEO_START( yboard );
SCREEN_UPDATE( yboard );


/*----------- defined in machine/s16fd.c -----------*/

void *fd1094_get_decrypted_base(void);
void fd1094_machine_init(device_t *device);
void fd1094_driver_init(running_machine &machine, const char* tag, void (*set_decrypted)(running_machine &, UINT8 *));