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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
// license:BSD-3-Clause
// copyright-holders:Manuel Abadia, David Haywood
#ifndef MAME_INCLUDES_SPLASH_H
#define MAME_INCLUDES_SPLASH_H
#pragma once
#include "machine/eepromser.h"
#include "machine/gen_latch.h"
#include "machine/74259.h"
#include "sound/msm5205.h"
#include "emupal.h"
#include "tilemap.h"
class splash_state : public driver_device
{
public:
splash_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_msm(*this, "msm"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_outlatch(*this, "outlatch"),
m_pixelram(*this, "pixelram"),
m_videoram(*this, "videoram"),
m_vregs(*this, "vregs"),
m_spriteram(*this, "spriteram"),
m_bitmap_mode(*this, "bitmap_mode")
{ }
void roldfrog(machine_config &config);
void splash(machine_config &config);
void init_splash10();
void init_roldfrog();
void init_splash();
void init_rebus();
protected:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
optional_device<msm5205_device> m_msm;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
optional_device<ls259_device> m_outlatch;
required_shared_ptr<uint16_t> m_pixelram;
required_shared_ptr<uint16_t> m_videoram;
required_shared_ptr<uint16_t> m_vregs;
required_shared_ptr<uint16_t> m_spriteram;
optional_shared_ptr<uint16_t> m_bitmap_mode;
// driver init configuration
int m_bitmap_type = 0;
int m_sprite_attr2_shift = 0;
tilemap_t *m_bg_tilemap[2]{};
// splash specific
int m_adpcm_data = 0;
//roldfrog specific
int m_ret = 0;
int m_vblank_irq = 0;
int m_sound_irq = 0;
// common
void vram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
DECLARE_WRITE_LINE_MEMBER(coin1_lockout_w);
DECLARE_WRITE_LINE_MEMBER(coin2_lockout_w);
DECLARE_WRITE_LINE_MEMBER(coin1_counter_w);
DECLARE_WRITE_LINE_MEMBER(coin2_counter_w);
// splash specific
DECLARE_WRITE_LINE_MEMBER(splash_msm5205_int);
void splash_adpcm_data_w(uint8_t data);
void splash_adpcm_control_w(uint8_t data);
// roldfrog specific
uint16_t roldfrog_bombs_r();
void roldfrog_vblank_ack_w(uint8_t data);
uint8_t roldfrog_unk_r();
DECLARE_WRITE_LINE_MEMBER(ym_irq);
//roldfrog and funystrp specific
void sound_bank_w(uint8_t data);
virtual void video_start() override;
DECLARE_MACHINE_START(splash);
DECLARE_MACHINE_START(roldfrog);
DECLARE_MACHINE_RESET(splash);
TILE_GET_INFO_MEMBER(get_tile_info_tilemap0);
TILE_GET_INFO_MEMBER(get_tile_info_tilemap1);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(roldfrog_interrupt);
void roldfrog_update_irq( );
void funystrp_sound_map(address_map &map);
void roldfrog_map(address_map &map);
void roldfrog_sound_io_map(address_map &map);
void roldfrog_sound_map(address_map &map);
void splash_map(address_map &map);
void splash_sound_map(address_map &map);
};
class funystrp_state : public splash_state
{
public:
funystrp_state(const machine_config &mconfig, device_type type, const char *tag) :
splash_state(mconfig, type, tag),
m_msm1(*this, "msm1"),
m_msm2(*this, "msm2"),
m_eeprom(*this, "eeprom"),
m_funystrp_val(0),
m_funystrp_ff3cc7_val(0),
m_funystrp_ff3cc8_val(0)
{ }
void funystrp(machine_config &config);
void ringball(machine_config &config);
void init_funystrp();
void init_ringball();
protected:
virtual void machine_start() override;
private:
uint16_t spr_read(offs_t offset);
void spr_write(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
uint8_t int_source_r();
void msm1_data_w(uint8_t data);
void msm1_interrupt_w(uint8_t data);
void msm2_interrupt_w(uint8_t data);
void msm2_data_w(uint8_t data);
DECLARE_WRITE_LINE_MEMBER(adpcm_int1);
DECLARE_WRITE_LINE_MEMBER(adpcm_int2);
void protection_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
uint16_t protection_r(offs_t offset);
void eeprom_w(uint8_t data);
uint32_t screen_update_funystrp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void funystrp_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
void funystrp_map(address_map &map);
void funystrp_sound_io_map(address_map &map);
void ringball_map(address_map &map);
required_device<msm5205_device> m_msm1;
required_device<msm5205_device> m_msm2;
required_device<eeprom_serial_93cxx_device> m_eeprom;
uint8_t m_funystrp_val;
uint8_t m_funystrp_ff3cc7_val;
uint8_t m_funystrp_ff3cc8_val;
int m_msm_data1 = 0;
int m_msm_data2 = 0;
int m_msm_toggle1 = 0;
int m_msm_toggle2 = 0;
int m_msm_source = 0;
int m_snd_interrupt_enable1 = 0;
int m_snd_interrupt_enable2 = 0;
};
#endif // MAME_INCLUDES_SPLASH_H
|