1 // license:BSD-3-Clause
2 // copyright-holders:R. Belmont, Acho A. Tang
3 /***************************************************************************
4
5 Wild West C.O.W.boys of Moo Mesa
6 Bucky O'Hare
7 (c) 1992 Konami
8 Driver by R. Belmont and Acho A. Tang based on xexex.cpp by Olivier Galibert.
9 Moo Mesa protection information thanks to ElSemi and OG.
10
11 These are the final Xexex hardware games before the pre-GX/Mystic Warriors
12 hardware took over.
13
14
15 Wild West C.O.W. Boys Of Moo Mesa
16 Konami 1992
17
18 PCB Layout
19 ----------
20 GX151 PWB353126
21 |--------------------------------------------------------|
22 |LA4705 151A11.A8 151A11.A10|
23 | 151A08.B6 151A10.B8 151A12.B10|
24 | 054986 |------| 62256 |------| |
25 | |054539| 62256 |053246A |
26 |S_OUT | | 054744 5168 | | |
27 | | | 5168 | | |
28 | |------| | | |
29 | YM2151 Z80E 151A07.F5 |------| |
30 | |
31 |J 051550 |------| |
32 |A |053247A |
33 |M 054573 |------| 2018 | | |
34 |M 054753 |054338| 2018 | | |
35 |A 054753 | | 2018 | | |
36 | 054754 | | |------| |------| |
37 | |------| 053252 |053251| 5168 |
38 | |------| | | 5168 |
39 | 18.432MHz |-----| |053990| |------| 5168 |
40 | 32MHz |68000| | | |------| |
41 | | | |------| |054157| |------| |
42 | ER5911.N2|-----| 055373 | | |054156| |
43 | | | | | |
44 |005273(X10) 151B01.Q5 151AAB02.Q6 | | | | |
45 |TEST_SW 62256 62256 |------| | | |
46 | 151A03.T5 151A04.T6 |------| |
47 |PL3 PL4 DSW(4) 151A05.T8 151A06.T10|
48 |--------------------------------------------------------|
49 Notes:
50 68000 - Clock 16.000MHz [32/2]
51 Z80E - Clock 8.000MHz [32/4]
52 YM2151 - Clock 4.000MHz [32/8]
53 62256 - KM62256 32kx8 SRAM (DIP28)
54 5168 - Sharp LH5168 8kx8 SRAM (DIP28)
55 ER5911 - EEPROM (128 bytes)
56 S_OUT - 4 pin connector for stereo sound output
57 PL3/PL4 - 15 pin connectors for player 3 & player 4 controls
58 151* - EPROM/mask ROM
59 LA4705 - Power AMP IC
60
61 Custom Chips
62 ------------
63 053990 - ? (Connected to 68000, main program ROMs and 2018 RAM)
64 053251 - Priority encoder
65 053252 - Timing/Interrupt controller. Clock input 32MHz
66 054157 \
67 054156 / Tilemap generators
68 053246A \
69 053247A / Sprite generators
70 054539 - 8-Channel ADPCM sound generator. Clock input 18.432MHz. Clock outputs 18.432/4 & 18.432/8
71 054573 - Video DAC (one for each R,G,B video signal)
72 054574 - Possibly RGB mixer/DAC/filter? (connected to 054573)
73 054338 - Color mixer for special effects/alpha blending etc (connected to 054573 & 054574 and 2018 RAM)
74 051550 - EMI filter for credit/coin counter
75 005273 - Resistor array for player 3 & player 4 controls
76 054986 - Audio DAC/filter
77 054744 - PAL16L8
78 055373 - PAL20L10
79
80 Sync Measurements
81 -----------------
82 HSync - 15.2036kHz
83 VSync - 59.1858Hz
84
85
86 ****************************************************************************
87
88 Bug Fixes and Outstanding Issues
89 --------------------------------
90 Moo:
91 - 54338 color blender support. Works fine with Bucky but needs a correct
92 enable/disable bit in Moo. (intro gfx missing and fog blocking view)
93 - Enemies coming out of the jail cells in the last stage have wrong priority.
94 Could be tile priority or the typical "small Z, big pri" sprite masking
95 trick currently not supported by k053247_sprites_draw().
96
97 Moo (bootleg):
98 - No sprites appear, and the game never enables '246 interrupts. Of course,
99 they're using some copy of a '246 on FPGAs, so who knows what's going on...
100
101 Bucky:
102 - Shadows sometimes have wrong priority. (unsupported priority modes)
103 - Gaps between zoomed sprites. (fraction round-off)
104 - Rogue sprites keep popping on screen after stage 2. They can usually be
105 found near 950000 with sprite code around 5e40 or f400. The GFX viewer
106 only shows blanks at 5e40, however. Are they invalid data from bad
107 sprite ROMs or markers that aren't supposed to be displayed? These
108 artifacts have one thing in common: they all have zero zcode. In fact
109 no other sprites in Bucky seems to have zero zcode.
110
111 Update: More garbages seen in later stages with a great variety.
112 There's enough indication to assume Bucky simply ignores sprites with
113 zero Z. I wonder why nobody reported this.
114
115 ***************************************************************************/
116
117 #include "emu.h"
118 #include "includes/moo.h"
119 #include "includes/konamipt.h"
120
121 #include "cpu/m68000/m68000.h"
122 #include "cpu/z80/z80.h"
123 #include "machine/eepromser.h"
124 #include "sound/ym2151.h"
125 #include "sound/okim6295.h"
126 #include "sound/k054539.h"
127 #include "speaker.h"
128
129 #define MOO_DEBUG 0
130 #define MOO_DMADELAY (100)
131
132
control2_r()133 uint16_t moo_state::control2_r()
134 {
135 return m_cur_control2;
136 }
137
control2_w(offs_t offset,uint16_t data,uint16_t mem_mask)138 void moo_state::control2_w(offs_t offset, uint16_t data, uint16_t mem_mask)
139 {
140 /* bit 0 is data */
141 /* bit 1 is cs (active low) */
142 /* bit 2 is clock (active high) */
143 /* bit 5 is enable irq 5 (unconfirmed) */
144 /* bit 8 is enable sprite ROM reading */
145 /* bit 10 is watchdog */
146 /* bit 11 is enable irq 4 (unconfirmed) */
147
148 COMBINE_DATA(&m_cur_control2);
149
150 ioport("EEPROMOUT")->write(m_cur_control2, 0xff);
151
152 if (data & 0x100)
153 m_k053246->k053246_set_objcha_line( ASSERT_LINE);
154 else
155 m_k053246->k053246_set_objcha_line( CLEAR_LINE);
156 }
157
158
moo_objdma()159 void moo_state::moo_objdma()
160 {
161 int num_inactive;
162 uint16_t *src, *dst;
163 int counter = m_k053246->k053247_get_dy();
164
165 m_k053246->k053247_get_ram( &dst);
166 src = m_spriteram;
167 num_inactive = counter = 256;
168
169 do
170 {
171 if ((*src & 0x8000) && (*src & m_zmask))
172 {
173 memcpy(dst, src, 0x10);
174 dst += 8;
175 num_inactive--;
176 }
177 src += 0x80;
178 }
179 while (--counter);
180
181 if (num_inactive)
182 {
183 do
184 {
185 *dst = 0;
186 dst += 8;
187 }
188 while (--num_inactive);
189 }
190 }
191
TIMER_CALLBACK_MEMBER(moo_state::dmaend_callback)192 TIMER_CALLBACK_MEMBER(moo_state::dmaend_callback)
193 {
194 if (m_cur_control2 & 0x800)
195 m_maincpu->set_input_line(4, HOLD_LINE);
196 }
197
INTERRUPT_GEN_MEMBER(moo_state::moo_interrupt)198 INTERRUPT_GEN_MEMBER(moo_state::moo_interrupt)
199 {
200 if (m_k053246->k053246_is_irq_enabled())
201 {
202 moo_objdma();
203
204 // schedule DMA end interrupt (delay shortened to catch up with V-blank)
205 m_dmaend_timer->adjust(attotime::from_usec(MOO_DMADELAY));
206 }
207
208 // trigger V-blank interrupt
209 if (m_cur_control2 & 0x20)
210 device.execute().set_input_line(5, HOLD_LINE);
211 }
212
INTERRUPT_GEN_MEMBER(moo_state::moobl_interrupt)213 INTERRUPT_GEN_MEMBER(moo_state::moobl_interrupt)
214 {
215 moo_objdma();
216
217 // schedule DMA end interrupt (delay shortened to catch up with V-blank)
218 m_dmaend_timer->adjust(attotime::from_usec(MOO_DMADELAY));
219
220 // trigger V-blank interrupt
221 device.execute().set_input_line(5, HOLD_LINE);
222 }
223
sound_irq_w(uint16_t data)224 void moo_state::sound_irq_w(uint16_t data)
225 {
226 m_soundcpu->set_input_line(0, HOLD_LINE);
227 }
228
sound_bankswitch_w(uint8_t data)229 void moo_state::sound_bankswitch_w(uint8_t data)
230 {
231 membank("bank1")->set_base(memregion("soundcpu")->base() + 0x10000 + (data&0xf)*0x4000);
232 }
233
234
235 #if 0 // (for reference; do not remove)
236
237 /* the interface with the 053247 is weird. The chip can address only 0x1000 bytes */
238 /* of RAM, but they put 0x10000 there. The CPU can access them all. */
239 uint16_t moo_state::k053247_scattered_word_r(offs_t offset, uint16_t mem_mask)
240 {
241 if (offset & 0x0078)
242 return m_spriteram[offset];
243 else
244 {
245 offset = (offset & 0x0007) | ((offset & 0x7f80) >> 4);
246 return k053247_word_r(m_k053246, offset, mem_mask);
247 }
248 }
249
250 void moo_state::k053247_scattered_word_w(offs_t offset, uint16_t data, uint16_t mem_mask)
251 {
252 if (offset & 0x0078)
253 COMBINE_DATA(m_spriteram + offset);
254 else
255 {
256 offset = (offset & 0x0007) | ((offset & 0x7f80) >> 4);
257
258 k053247_word_w(m_k053246, offset, data, mem_mask);
259 }
260 }
261
262 #endif
263
264
moo_prot_w(address_space & space,offs_t offset,uint16_t data,uint16_t mem_mask)265 void moo_state::moo_prot_w(address_space &space, offs_t offset, uint16_t data, uint16_t mem_mask)
266 {
267 uint32_t src1, src2, dst, length, a, b, res;
268
269 COMBINE_DATA(&m_protram[offset]);
270
271 if (offset == 0xc) // trigger operation
272 {
273 src1 = (m_protram[1] & 0xff) << 16 | m_protram[0];
274 src2 = (m_protram[3] & 0xff) << 16 | m_protram[2];
275 dst = (m_protram[5] & 0xff) << 16 | m_protram[4];
276 length = m_protram[0xf];
277
278 while (length)
279 {
280 a = space.read_word(src1);
281 b = space.read_word(src2);
282 res = a + 2 * b;
283
284 space.write_word(dst, res);
285
286 src1 += 2;
287 src2 += 2;
288 dst += 2;
289 length--;
290 }
291 }
292 }
293
294
moobl_oki_bank_w(uint16_t data)295 void moo_state::moobl_oki_bank_w(uint16_t data)
296 {
297 logerror("%x to OKI bank\n", data);
298
299 m_oki->set_rom_bank(data & 0x0f);
300 }
301
moo_map(address_map & map)302 void moo_state::moo_map(address_map &map)
303 {
304 map(0x000000, 0x07ffff).rom();
305 map(0x0c0000, 0x0c003f).w(m_k056832, FUNC(k056832_device::word_w));
306 map(0x0c2000, 0x0c2007).w(m_k053246, FUNC(k053247_device::k053246_w));
307
308 map(0x0c4000, 0x0c4001).r(m_k053246, FUNC(k053247_device::k053246_r));
309 map(0x0ca000, 0x0ca01f).w(m_k054338, FUNC(k054338_device::word_w)); /* K054338 alpha blending engine */
310 map(0x0cc000, 0x0cc01f).w(m_k053251, FUNC(k053251_device::write)).umask16(0x00ff);
311 map(0x0ce000, 0x0ce01f).w(FUNC(moo_state::moo_prot_w));
312 map(0x0d0000, 0x0d001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); /* CCU regs (ignored) */
313 map(0x0d4000, 0x0d4001).w(FUNC(moo_state::sound_irq_w));
314 map(0x0d6000, 0x0d601f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
315 map(0x0d8000, 0x0d8007).w(m_k056832, FUNC(k056832_device::b_word_w)); /* VSCCS regs */
316 map(0x0da000, 0x0da001).portr("P1_P3");
317 map(0x0da002, 0x0da003).portr("P2_P4");
318 map(0x0dc000, 0x0dc001).portr("IN0");
319 map(0x0dc002, 0x0dc003).portr("IN1");
320 map(0x0de000, 0x0de001).rw(FUNC(moo_state::control2_r), FUNC(moo_state::control2_w));
321 map(0x100000, 0x17ffff).rom();
322 map(0x180000, 0x18ffff).ram().share("workram"); /* Work RAM */
323 map(0x190000, 0x19ffff).ram().share("spriteram"); /* Sprite RAM */
324 map(0x1a0000, 0x1a1fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes */
325 map(0x1a2000, 0x1a3fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes mirror */
326 map(0x1b0000, 0x1b1fff).r(m_k056832, FUNC(k056832_device::rom_word_r)); /* Passthrough to tile roms */
327 map(0x1c0000, 0x1c1fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
328 #if MOO_DEBUG
329 map(0x0c0000, 0x0c003f).r(m_k056832, FUNC(k056832_device::word_r));
330 map(0x0c2000, 0x0c2007).r(m_k053246, FUNC(k053247_device::k053246_read_register));
331 map(0x0ca000, 0x0ca01f).r(m_k054338, FUNC(k054338_device::register_r));
332 map(0x0cc000, 0x0cc01f).r(m_k053251, FUNC(k053251_device::read)).umask16(0x00ff);
333 map(0x0d8000, 0x0d8007).r(m_k056832, FUNC(k056832_device::b_word_r));
334 #endif
335 }
336
moobl_map(address_map & map)337 void moo_state::moobl_map(address_map &map)
338 {
339 map(0x000000, 0x07ffff).rom();
340 map(0x0c0000, 0x0c003f).w(m_k056832, FUNC(k056832_device::word_w));
341 map(0x0c2000, 0x0c2007).w(m_k053246, FUNC(k053247_device::k053246_w));
342 map(0x0c2f00, 0x0c2f01).nopr(); /* heck if I know, but it's polled constantly */
343 map(0x0c4000, 0x0c4001).r(m_k053246, FUNC(k053247_device::k053246_r));
344 map(0x0ca000, 0x0ca01f).w(m_k054338, FUNC(k054338_device::word_w)); /* K054338 alpha blending engine */
345 map(0x0cc000, 0x0cc01f).w(m_k053251, FUNC(k053251_device::write)).umask16(0x00ff);
346 map(0x0d0000, 0x0d001f).writeonly(); /* CCU regs (ignored) */
347 map(0x0d6ffc, 0x0d6ffd).w(FUNC(moo_state::moobl_oki_bank_w));
348 map(0x0d6fff, 0x0d6fff).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
349 map(0x0d8000, 0x0d8007).w(m_k056832, FUNC(k056832_device::b_word_w)); /* VSCCS regs */
350 map(0x0da000, 0x0da001).portr("P1_P3");
351 map(0x0da002, 0x0da003).portr("P2_P4");
352 map(0x0dc000, 0x0dc001).portr("IN0");
353 map(0x0dc002, 0x0dc003).portr("IN1");
354 map(0x0de000, 0x0de001).rw(FUNC(moo_state::control2_r), FUNC(moo_state::control2_w));
355 map(0x100000, 0x17ffff).rom();
356 map(0x180000, 0x18ffff).ram().share("workram"); /* Work RAM */
357 map(0x190000, 0x19ffff).ram().share("spriteram"); /* Sprite RAM */
358 map(0x1a0000, 0x1a1fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes */
359 map(0x1a2000, 0x1a3fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes mirror */
360 map(0x1b0000, 0x1b1fff).r(m_k056832, FUNC(k056832_device::rom_word_r)); /* Passthrough to tile roms */
361 map(0x1c0000, 0x1c1fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
362 }
363
bucky_map(address_map & map)364 void moo_state::bucky_map(address_map &map)
365 {
366 map(0x000000, 0x07ffff).rom();
367 map(0x080000, 0x08ffff).ram();
368 map(0x090000, 0x09ffff).ram().share("spriteram"); /* Sprite RAM */
369 map(0x0a0000, 0x0affff).ram(); /* extra sprite RAM? */
370 map(0x0c0000, 0x0c003f).w(m_k056832, FUNC(k056832_device::word_w));
371 map(0x0c2000, 0x0c2007).w(m_k053246, FUNC(k053247_device::k053246_w));
372 map(0x0c4000, 0x0c4001).r(m_k053246, FUNC(k053247_device::k053246_r));
373 map(0x0ca000, 0x0ca01f).w(m_k054338, FUNC(k054338_device::word_w)); /* K054338 alpha blending engine */
374 map(0x0cc000, 0x0cc01f).w(m_k053251, FUNC(k053251_device::write)).umask16(0x00ff);
375 map(0x0ce000, 0x0ce01f).w(FUNC(moo_state::moo_prot_w));
376 map(0x0d0000, 0x0d001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); /* CCU regs (ignored) */
377 map(0x0d2000, 0x0d20ff).rw("k054000", FUNC(k054000_device::read), FUNC(k054000_device::write)).umask16(0x00ff);
378 map(0x0d4000, 0x0d4001).w(FUNC(moo_state::sound_irq_w));
379 map(0x0d6000, 0x0d601f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
380 map(0x0d8000, 0x0d8007).w(m_k056832, FUNC(k056832_device::b_word_w)); /* VSCCS regs */
381 map(0x0da000, 0x0da001).portr("P1_P3");
382 map(0x0da002, 0x0da003).portr("P2_P4");
383 map(0x0dc000, 0x0dc001).portr("IN0");
384 map(0x0dc002, 0x0dc003).portr("IN1");
385 map(0x0de000, 0x0de001).rw(FUNC(moo_state::control2_r), FUNC(moo_state::control2_w));
386 map(0x180000, 0x181fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes */
387 map(0x182000, 0x183fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes mirror */
388 map(0x184000, 0x187fff).ram(); /* extra tile RAM? */
389 map(0x190000, 0x191fff).r(m_k056832, FUNC(k056832_device::rom_word_r)); /* Passthrough to tile roms */
390 map(0x1b0000, 0x1b3fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
391 map(0x200000, 0x23ffff).rom(); /* data */
392 #if MOO_DEBUG
393 map(0x0c0000, 0x0c003f).r(m_k056832, FUNC(k056832_device::word_r));
394 map(0x0c2000, 0x0c2007).r(m_k053246, FUNC(k053247_device::k053246_read_register));
395 map(0x0ca000, 0x0ca01f).r(m_k054338, FUNC(k054338_device::register_r));
396 map(0x0cc000, 0x0cc01f).r(m_k053251, FUNC(k053251_device::read)).umask16(0x00ff);
397 map(0x0d8000, 0x0d8007).r(m_k056832, FUNC(k056832_device::b_word_r));
398 #endif
399 }
400
sound_map(address_map & map)401 void moo_state::sound_map(address_map &map)
402 {
403 map(0x0000, 0x7fff).rom();
404 map(0x8000, 0xbfff).bankr("bank1");
405 map(0xc000, 0xdfff).ram();
406 map(0xe000, 0xe22f).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write));
407 map(0xec00, 0xec01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
408 map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map));
409 map(0xf800, 0xf800).w(FUNC(moo_state::sound_bankswitch_w));
410 }
411
412 static INPUT_PORTS_START( moo )
413 PORT_START("IN0")
414 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
415 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
416 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
417 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 )
418 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
419 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 )
420 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE3 )
421 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE4 )
422
423 PORT_START("IN1")
424 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
425 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
426 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
427 PORT_SERVICE_NO_TOGGLE(0x08, IP_ACTIVE_LOW)
428 PORT_DIPNAME( 0x10, 0x00, "Sound Output") PORT_DIPLOCATION("SW1:1")
DEF_STR(Mono)429 PORT_DIPSETTING( 0x10, DEF_STR( Mono ) )
430 PORT_DIPSETTING( 0x00, DEF_STR( Stereo ) )
431 PORT_DIPNAME( 0x20, 0x20, "Coin Mechanism") PORT_DIPLOCATION("SW1:2")
432 PORT_DIPSETTING( 0x20, "Common")
433 PORT_DIPSETTING( 0x00, "Independent")
434 PORT_DIPNAME( 0xc0, 0x80, "Number of Players") PORT_DIPLOCATION("SW1:3,4")
435 PORT_DIPSETTING( 0xc0, "2")
436 PORT_DIPSETTING( 0x40, "3")
437 PORT_DIPSETTING( 0x80, "4")
438
439 PORT_START( "EEPROMOUT" )
440 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
441 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
442 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
443
444 PORT_START("P1_P3")
445 KONAMI16_LSB( 1, IPT_UNKNOWN, IPT_START1 )
446 KONAMI16_MSB( 3, IPT_UNKNOWN, IPT_START3 )
447
448 PORT_START("P2_P4")
449 KONAMI16_LSB( 2, IPT_UNKNOWN, IPT_START2 )
450 KONAMI16_MSB( 4, IPT_UNKNOWN, IPT_START4 )
451 INPUT_PORTS_END
452
453 /* Same as 'moo', but additional "Button 3" for all players */
454 static INPUT_PORTS_START( bucky )
455 PORT_INCLUDE( moo )
456
457 PORT_MODIFY("P1_P3")
458 KONAMI16_LSB( 1, IPT_BUTTON3, IPT_START1 )
459 KONAMI16_MSB( 3, IPT_BUTTON3, IPT_START3 )
460
461 PORT_MODIFY("P2_P4")
462 KONAMI16_LSB( 2, IPT_BUTTON3, IPT_START2 )
463 KONAMI16_MSB( 4, IPT_BUTTON3, IPT_START4 )
464 INPUT_PORTS_END
465
466
467 MACHINE_START_MEMBER(moo_state,moo)
468 {
469 save_item(NAME(m_cur_control2));
470 save_item(NAME(m_alpha_enabled));
471 save_item(NAME(m_sprite_colorbase));
472 save_item(NAME(m_layer_colorbase));
473 save_item(NAME(m_layerpri));
474 save_item(NAME(m_protram));
475
476 m_dmaend_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(moo_state::dmaend_callback),this));
477 }
478
MACHINE_RESET_MEMBER(moo_state,moo)479 MACHINE_RESET_MEMBER(moo_state,moo)
480 {
481 int i;
482
483 for (i = 0; i < 16; i++)
484 m_protram[i] = 0;
485
486 for (i = 0; i < 4; i++)
487 m_layer_colorbase[i] = 0;
488
489 for (i = 0; i < 3; i++)
490 m_layerpri[i] = 0;
491
492 m_cur_control2 = 0;
493 m_alpha_enabled = 0;
494 m_sprite_colorbase = 0;
495 }
496
moo(machine_config & config)497 void moo_state::moo(machine_config &config)
498 {
499 /* basic machine hardware */
500 M68000(config, m_maincpu, XTAL(32'000'000)/2); // 16MHz verified
501 m_maincpu->set_addrmap(AS_PROGRAM, &moo_state::moo_map);
502 m_maincpu->set_vblank_int("screen", FUNC(moo_state::moo_interrupt));
503
504 Z80(config, m_soundcpu, XTAL(32'000'000)/4); // 8MHz verified
505 m_soundcpu->set_addrmap(AS_PROGRAM, &moo_state::sound_map);
506
507 MCFG_MACHINE_START_OVERRIDE(moo_state,moo)
508 MCFG_MACHINE_RESET_OVERRIDE(moo_state,moo)
509
510 EEPROM_ER5911_8BIT(config, "eeprom");
511
512 K053252(config, m_k053252, XTAL(32'000'000)/4); // 8MHz
513 m_k053252->set_offsets(40, 16);
514
515 /* video hardware */
516 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
517 m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
518 m_screen->set_refresh_hz(60);
519 m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(1200)); // should give IRQ4 sufficient time to update scroll registers
520 m_screen->set_size(64*8, 32*8);
521 m_screen->set_visarea(40, 40+384-1, 16, 16+224-1);
522 m_screen->set_screen_update(FUNC(moo_state::screen_update_moo));
523
524 PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 2048);
525 m_palette->enable_shadows();
526 m_palette->enable_hilights();
527
528 MCFG_VIDEO_START_OVERRIDE(moo_state,moo)
529
530 K053246(config, m_k053246, 0);
531 m_k053246->set_sprite_callback(FUNC(moo_state::sprite_callback));
532 m_k053246->set_config(NORMAL_PLANE_ORDER, -48+1, 23);
533 m_k053246->set_palette("palette");
534
535 K056832(config, m_k056832, 0);
536 m_k056832->set_tile_callback(FUNC(moo_state::tile_callback));
537 m_k056832->set_config(K056832_BPP_4, 1, 0);
538 m_k056832->set_palette("palette");
539
540 K053251(config, m_k053251, 0);
541
542 K054338(config, m_k054338, 0);
543
544 /* sound hardware */
545 SPEAKER(config, "lspeaker").front_left();
546 SPEAKER(config, "rspeaker").front_right();
547
548 K054321(config, m_k054321, "lspeaker", "rspeaker");
549
550 YM2151(config, "ymsnd", XTAL(32'000'000)/8).add_route(0, "lspeaker", 0.50).add_route(1, "rspeaker", 0.50); // 4MHz verified
551
552 K054539(config, m_k054539, XTAL(18'432'000));
553 m_k054539->add_route(0, "rspeaker", 0.75);
554 m_k054539->add_route(1, "lspeaker", 0.75);
555 }
556
moobl(machine_config & config)557 void moo_state::moobl(machine_config &config)
558 {
559 /* basic machine hardware */
560 M68000(config, m_maincpu, 16100000);
561 m_maincpu->set_addrmap(AS_PROGRAM, &moo_state::moobl_map);
562 m_maincpu->set_vblank_int("screen", FUNC(moo_state::moobl_interrupt));
563
564 MCFG_MACHINE_START_OVERRIDE(moo_state,moo)
565 MCFG_MACHINE_RESET_OVERRIDE(moo_state,moo)
566
567 EEPROM_ER5911_8BIT(config, "eeprom");
568
569 /* video hardware */
570 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
571 m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
572 m_screen->set_refresh_hz(60);
573 m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(1200)); // should give IRQ4 sufficient time to update scroll registers
574 m_screen->set_size(64*8, 32*8);
575 m_screen->set_visarea(40, 40+384-1, 16, 16+224-1);
576 m_screen->set_screen_update(FUNC(moo_state::screen_update_moo));
577
578 PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 2048);
579 m_palette->enable_shadows();
580 m_palette->enable_hilights();
581
582 MCFG_VIDEO_START_OVERRIDE(moo_state,moo)
583
584 K053246(config, m_k053246, 0);
585 m_k053246->set_sprite_callback(FUNC(moo_state::sprite_callback));
586 m_k053246->set_config(NORMAL_PLANE_ORDER, -48+1, 23);
587 m_k053246->set_palette("palette");
588
589 K056832(config, m_k056832, 0);
590 m_k056832->set_tile_callback(FUNC(moo_state::tile_callback));
591 m_k056832->set_config(K056832_BPP_4, 1, 0);
592 m_k056832->set_palette("palette");
593
594 K053251(config, m_k053251, 0);
595
596 K054338(config, m_k054338, 0);
597
598 /* sound hardware */
599 SPEAKER(config, "lspeaker").front_left();
600 SPEAKER(config, "rspeaker").front_right();
601
602 OKIM6295(config, m_oki, 1056000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
603 m_oki->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
604 m_oki->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
605 }
606
bucky(machine_config & config)607 void moo_state::bucky(machine_config &config)
608 {
609 moo(config);
610
611 m_maincpu->set_addrmap(AS_PROGRAM, &moo_state::bucky_map);
612
613 K054000(config, "k054000", 0);
614
615 m_k053246->set_config(NORMAL_PLANE_ORDER, -48, 23);
616
617 /* video hardware */
618 m_palette->set_format(palette_device::xRGB_888, 4096);
619
620 MCFG_VIDEO_START_OVERRIDE(moo_state,bucky)
621 }
622
623
624 ROM_START( moomesa ) /* Version EA */
625 ROM_REGION( 0x180000, "maincpu", 0 )
626 /* main program */
627 ROM_LOAD16_BYTE( "151b01.q5", 0x000000, 0x40000, CRC(fb2fa298) SHA1(f03b24681a2b329ba797fd2780ac9a3cf862ebcb) ) /* B */
628 ROM_LOAD16_BYTE( "151eab02.q6", 0x000001, 0x40000, CRC(37b30c01) SHA1(cb91739097a4a36f8f8d92998d822ffc851e1279) ) /* EAB */
629
630 /* data */
631 ROM_LOAD16_BYTE( "151a03.t5", 0x100000, 0x40000, CRC(c896d3ea) SHA1(ea83c63e2c3dbc4f1e1d49f1852a78ffc1f0ea4b) )
632 ROM_LOAD16_BYTE( "151a04.t6", 0x100001, 0x40000, CRC(3b24706a) SHA1(c2a77944284e35ff57f0774fa7b67e53d3b63e1f) )
633
634 ROM_REGION( 0x050000, "soundcpu", 0 )
635 /* Z80 sound program */
636 ROM_LOAD( "151a07.f5", 0x000000, 0x040000, CRC(cde247fc) SHA1(cdee0228db55d53ae43d7cd2d9001dadd20c2c61) )
637 ROM_RELOAD( 0x010000, 0x040000 )
638
639 ROM_REGION( 0x200000, "k056832", 0 )
640 /* tilemaps */
641 ROM_LOAD32_WORD( "151a05.t8", 0x000000, 0x100000, CRC(bc616249) SHA1(58c1f1a03ce9bead8f79d12ce4b2d342432b24b5) )
642 ROM_LOAD32_WORD( "151a06.t10", 0x000002, 0x100000, CRC(38dbcac1) SHA1(c357779733921695b20ac586db5b475f5b2b8f4c) )
643
644 ROM_REGION( 0x800000, "k053246", 0 )
645 /* sprites */
646 ROM_LOAD64_WORD( "151a10.b8", 0x000000, 0x200000, CRC(376c64f1) SHA1(eb69c5a27f9795e28f04a503955132f0a9e4de12) )
647 ROM_LOAD64_WORD( "151a11.a8", 0x000002, 0x200000, CRC(e7f49225) SHA1(1255b214f29b6507540dad5892c60a7ae2aafc5c) )
648 ROM_LOAD64_WORD( "151a12.b10", 0x000004, 0x200000, CRC(4978555f) SHA1(d9871f21d0c8a512b408e137e2e80e9392c2bf6f) )
649 ROM_LOAD64_WORD( "151a13.a10", 0x000006, 0x200000, CRC(4771f525) SHA1(218d86b6230919b5db0304dac00513eb6b27ba9a) )
650
651 ROM_REGION( 0x200000, "k054539", 0 )
652 /* K054539 samples */
653 ROM_LOAD( "151a08.b6", 0x000000, 0x200000, CRC(962251d7) SHA1(32dccf515d2ca8eeffb45cada3dcc60089991b77) )
654
655 ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
656 ROM_LOAD( "moomesa.nv", 0x0000, 0x080, CRC(7bd904a8) SHA1(8747c5c62d1832e290be8ace73c61b1f228c0bec) )
657 ROM_END
658
659 ROM_START( moomesauac ) /* Version UA */
660 ROM_REGION( 0x180000, "maincpu", 0 )
661 /* main program */
662 ROM_LOAD16_BYTE( "151c01.q5", 0x000000, 0x40000, CRC(10555732) SHA1(b67cb756c250ddd6f3291683b3f3449e13a2ee83) ) /* C */
663 ROM_LOAD16_BYTE( "151uac02.q6", 0x000001, 0x40000, CRC(52ae87b0) SHA1(552d41a2ddd040f92c6a3cfdc07f9d6e751ac9c1) ) /* UAC */
664
665 /* data */
666 ROM_LOAD16_BYTE( "151a03.t5", 0x100000, 0x40000, CRC(c896d3ea) SHA1(ea83c63e2c3dbc4f1e1d49f1852a78ffc1f0ea4b) )
667 ROM_LOAD16_BYTE( "151a04.t6", 0x100001, 0x40000, CRC(3b24706a) SHA1(c2a77944284e35ff57f0774fa7b67e53d3b63e1f) )
668
669 ROM_REGION( 0x050000, "soundcpu", 0 )
670 /* Z80 sound program */
671 ROM_LOAD( "151a07.f5", 0x000000, 0x040000, CRC(cde247fc) SHA1(cdee0228db55d53ae43d7cd2d9001dadd20c2c61) )
672 ROM_RELOAD( 0x010000, 0x040000 )
673
674 ROM_REGION( 0x200000, "k056832", 0 )
675 /* tilemaps */
676 ROM_LOAD32_WORD( "151a05.t8", 0x000000, 0x100000, CRC(bc616249) SHA1(58c1f1a03ce9bead8f79d12ce4b2d342432b24b5) )
677 ROM_LOAD32_WORD( "151a06.t10", 0x000002, 0x100000, CRC(38dbcac1) SHA1(c357779733921695b20ac586db5b475f5b2b8f4c) )
678
679 ROM_REGION( 0x800000, "k053246", 0 )
680 /* sprites */
681 ROM_LOAD64_WORD( "151a10.b8", 0x000000, 0x200000, CRC(376c64f1) SHA1(eb69c5a27f9795e28f04a503955132f0a9e4de12) )
682 ROM_LOAD64_WORD( "151a11.a8", 0x000002, 0x200000, CRC(e7f49225) SHA1(1255b214f29b6507540dad5892c60a7ae2aafc5c) )
683 ROM_LOAD64_WORD( "151a12.b10", 0x000004, 0x200000, CRC(4978555f) SHA1(d9871f21d0c8a512b408e137e2e80e9392c2bf6f) )
684 ROM_LOAD64_WORD( "151a13.a10", 0x000006, 0x200000, CRC(4771f525) SHA1(218d86b6230919b5db0304dac00513eb6b27ba9a) )
685
686 ROM_REGION( 0x200000, "k054539", 0 )
687 /* K054539 samples */
688 ROM_LOAD( "151a08.b6", 0x000000, 0x200000, CRC(962251d7) SHA1(32dccf515d2ca8eeffb45cada3dcc60089991b77) )
689
690 ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
691 ROM_LOAD( "moomesauac.nv", 0x0000, 0x080, CRC(a5cb137a) SHA1(119df859d6b5c366481305b1433eea0deadc3fa9) )
692 ROM_END
693
694 ROM_START( moomesauab ) /* Version UA */
695 ROM_REGION( 0x180000, "maincpu", 0 )
696 /* main program */
697 ROM_LOAD16_BYTE( "151b01.q5", 0x000000, 0x40000, CRC(fb2fa298) SHA1(f03b24681a2b329ba797fd2780ac9a3cf862ebcb) ) /* B */
698 ROM_LOAD16_BYTE( "151uab02.q6", 0x000001, 0x40000, CRC(3d9f4d59) SHA1(db47044bd4935fce94ec659242c9819c30eb6d0f) ) /* UAB */
699
700 /* data */
701 ROM_LOAD16_BYTE( "151a03.t5", 0x100000, 0x40000, CRC(c896d3ea) SHA1(ea83c63e2c3dbc4f1e1d49f1852a78ffc1f0ea4b) )
702 ROM_LOAD16_BYTE( "151a04.t6", 0x100001, 0x40000, CRC(3b24706a) SHA1(c2a77944284e35ff57f0774fa7b67e53d3b63e1f) )
703
704 ROM_REGION( 0x050000, "soundcpu", 0 )
705 /* Z80 sound program */
706 ROM_LOAD( "151a07.f5", 0x000000, 0x040000, CRC(cde247fc) SHA1(cdee0228db55d53ae43d7cd2d9001dadd20c2c61) )
707 ROM_RELOAD( 0x010000, 0x040000 )
708
709 ROM_REGION( 0x200000, "k056832", 0 )
710 /* tilemaps */
711 ROM_LOAD32_WORD( "151a05.t8", 0x000000, 0x100000, CRC(bc616249) SHA1(58c1f1a03ce9bead8f79d12ce4b2d342432b24b5) )
712 ROM_LOAD32_WORD( "151a06.t10", 0x000002, 0x100000, CRC(38dbcac1) SHA1(c357779733921695b20ac586db5b475f5b2b8f4c) )
713
714 ROM_REGION( 0x800000, "k053246", 0 )
715 /* sprites */
716 ROM_LOAD64_WORD( "151a10.b8", 0x000000, 0x200000, CRC(376c64f1) SHA1(eb69c5a27f9795e28f04a503955132f0a9e4de12) )
717 ROM_LOAD64_WORD( "151a11.a8", 0x000002, 0x200000, CRC(e7f49225) SHA1(1255b214f29b6507540dad5892c60a7ae2aafc5c) )
718 ROM_LOAD64_WORD( "151a12.b10", 0x000004, 0x200000, CRC(4978555f) SHA1(d9871f21d0c8a512b408e137e2e80e9392c2bf6f) )
719 ROM_LOAD64_WORD( "151a13.a10", 0x000006, 0x200000, CRC(4771f525) SHA1(218d86b6230919b5db0304dac00513eb6b27ba9a) )
720
721 ROM_REGION( 0x200000, "k054539", 0 )
722 /* K054539 samples */
723 ROM_LOAD( "151a08.b6", 0x000000, 0x200000, CRC(962251d7) SHA1(32dccf515d2ca8eeffb45cada3dcc60089991b77) )
724
725 ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
726 ROM_LOAD( "moomesauab.nv", 0x0000, 0x080, CRC(a5cb137a) SHA1(119df859d6b5c366481305b1433eea0deadc3fa9) )
727 ROM_END
728
729 ROM_START( moomesaaab ) /* Version AA */
730 ROM_REGION( 0x180000, "maincpu", 0 )
731 /* main program */
732 ROM_LOAD16_BYTE( "151b01.q5", 0x000000, 0x40000, CRC(fb2fa298) SHA1(f03b24681a2b329ba797fd2780ac9a3cf862ebcb) ) /* B */
733 ROM_LOAD16_BYTE( "151aab02.q6", 0x000001, 0x40000, CRC(2162d593) SHA1(a6cfe4a57b3f22b2aa0f04f91acefe3b7bea9e76) ) /* AAB */
734
735 /* data */
736 ROM_LOAD16_BYTE( "151a03.t5", 0x100000, 0x40000, CRC(c896d3ea) SHA1(ea83c63e2c3dbc4f1e1d49f1852a78ffc1f0ea4b) )
737 ROM_LOAD16_BYTE( "151a04.t6", 0x100001, 0x40000, CRC(3b24706a) SHA1(c2a77944284e35ff57f0774fa7b67e53d3b63e1f) )
738
739 ROM_REGION( 0x050000, "soundcpu", 0 )
740 /* Z80 sound program */
741 ROM_LOAD( "151a07.f5", 0x000000, 0x040000, CRC(cde247fc) SHA1(cdee0228db55d53ae43d7cd2d9001dadd20c2c61) )
742 ROM_RELOAD( 0x010000, 0x040000 )
743
744 ROM_REGION( 0x200000, "k056832", 0 )
745 /* tilemaps */
746 ROM_LOAD32_WORD( "151a05.t8", 0x000000, 0x100000, CRC(bc616249) SHA1(58c1f1a03ce9bead8f79d12ce4b2d342432b24b5) )
747 ROM_LOAD32_WORD( "151a06.t10", 0x000002, 0x100000, CRC(38dbcac1) SHA1(c357779733921695b20ac586db5b475f5b2b8f4c) )
748
749 ROM_REGION( 0x800000, "k053246", 0 )
750 /* sprites */
751 ROM_LOAD64_WORD( "151a10.b8", 0x000000, 0x200000, CRC(376c64f1) SHA1(eb69c5a27f9795e28f04a503955132f0a9e4de12) )
752 ROM_LOAD64_WORD( "151a11.a8", 0x000002, 0x200000, CRC(e7f49225) SHA1(1255b214f29b6507540dad5892c60a7ae2aafc5c) )
753 ROM_LOAD64_WORD( "151a12.b10", 0x000004, 0x200000, CRC(4978555f) SHA1(d9871f21d0c8a512b408e137e2e80e9392c2bf6f) )
754 ROM_LOAD64_WORD( "151a13.a10", 0x000006, 0x200000, CRC(4771f525) SHA1(218d86b6230919b5db0304dac00513eb6b27ba9a) )
755
756 ROM_REGION( 0x200000, "k054539", 0 )
757 /* K054539 samples */
758 ROM_LOAD( "151a08.b6", 0x000000, 0x200000, CRC(962251d7) SHA1(32dccf515d2ca8eeffb45cada3dcc60089991b77) )
759
760 ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
761 ROM_LOAD( "moomesaaab.nv", 0x0000, 0x080, CRC(7bd904a8) SHA1(8747c5c62d1832e290be8ace73c61b1f228c0bec) )
762 ROM_END
763
764 ROM_START( bucky ) /* Version EA */
765 ROM_REGION( 0x240000, "maincpu", 0 )
766 /* main program */
767 ROM_LOAD16_BYTE( "173eab01.q5", 0x000000, 0x40000, CRC(7785ac8a) SHA1(ef78d14f54d3a0b724b9702a18c67891e2d366a7) ) /* EAB */
768 ROM_LOAD16_BYTE( "173eab02.q6", 0x000001, 0x40000, CRC(9b45f122) SHA1(325af1612e6f90ef9ae9353c43dc645be1f3465c) ) /* EAB */
769
770 /* data */
771 ROM_LOAD16_BYTE( "173a03.t5", 0x200000, 0x20000, CRC(cd724026) SHA1(525445499604b713da4d8bc0a88e428654ceab95) )
772 ROM_LOAD16_BYTE( "173a04.t6", 0x200001, 0x20000, CRC(7dd54d6f) SHA1(b0ee8ec445b92254bca881eefd4449972fed506a) )
773
774 ROM_REGION( 0x050000, "soundcpu", 0 )
775 /* Z80 sound program */
776 ROM_LOAD( "173a07.f5", 0x000000, 0x040000, CRC(4cdaee71) SHA1(bdc05d4475415f6fac65d7cdbc48df398e57845e) )
777 ROM_RELOAD( 0x010000, 0x040000 )
778
779 ROM_REGION( 0x200000, "k056832", 0 )
780 /* tilemaps */
781 ROM_LOAD32_WORD( "173a05.t8", 0x000000, 0x100000, CRC(d14333b4) SHA1(d1a15ead2d156e1fceca0bf202ab3962411caf11) )
782 ROM_LOAD32_WORD( "173a06.t10", 0x000002, 0x100000, CRC(6541a34f) SHA1(15cf481498e3b7e0b2f7bfe5434121cc3bd65662) )
783
784 ROM_REGION( 0x800000, "k053246", 0 )
785 /* sprites */
786 ROM_LOAD64_WORD( "173a10.b8", 0x000000, 0x200000, CRC(42fb0a0c) SHA1(d68c932cfabdec7896698b433525fe47ef4698d0) )
787 ROM_LOAD64_WORD( "173a11.a8", 0x000002, 0x200000, CRC(b0d747c4) SHA1(0cf1ee1b9a35ded31a81c321df2a076f7b588971) )
788 ROM_LOAD64_WORD( "173a12.b10", 0x000004, 0x200000, CRC(0fc2ad24) SHA1(6eda1043ee1266b8ba938a03a90bc7787210a936) )
789 ROM_LOAD64_WORD( "173a13.a10", 0x000006, 0x200000, CRC(4cf85439) SHA1(8c298bf0e659a830a1830a1180f4ce71215ade45) )
790
791 ROM_REGION( 0x400000, "k054539", 0 )
792 /* K054539 samples */
793 ROM_LOAD( "173a08.b6", 0x000000, 0x200000, CRC(dcdded95) SHA1(8eeb546a0b60a35a6dce36c5ee872e6c93c577c9) )
794 ROM_LOAD( "173a09.a6", 0x200000, 0x200000, CRC(c93697c4) SHA1(0528a604868267a30d281b822c187df118566691) )
795
796 ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
797 ROM_LOAD( "bucky.nv", 0x0000, 0x080, CRC(6a5986f3) SHA1(3efddeed261b09031c582e12318f00c2cbb214ea) )
798 ROM_END
799
800 ROM_START( buckyea ) /* Version EA */
801 ROM_REGION( 0x240000, "maincpu", 0 )
802 /* main program */
803 ROM_LOAD16_BYTE( "2.d5", 0x000000, 0x40000, CRC(e18518a6) SHA1(6b0bac8080032b7528b47e802c2f6a5264da5f55) ) /* EA */
804 ROM_LOAD16_BYTE( "3.d6", 0x000001, 0x40000, CRC(45ef9545) SHA1(370862e916410e7052e094033cc18ac727c75d8e) ) /* EA */
805
806 /* data */
807 ROM_LOAD16_BYTE( "173a03.t5", 0x200000, 0x20000, CRC(cd724026) SHA1(525445499604b713da4d8bc0a88e428654ceab95) )
808 ROM_LOAD16_BYTE( "173a04.t6", 0x200001, 0x20000, CRC(7dd54d6f) SHA1(b0ee8ec445b92254bca881eefd4449972fed506a) )
809
810 ROM_REGION( 0x050000, "soundcpu", 0 )
811 /* Z80 sound program */
812 ROM_LOAD( "173a07.f5", 0x000000, 0x040000, CRC(4cdaee71) SHA1(bdc05d4475415f6fac65d7cdbc48df398e57845e) )
813 ROM_RELOAD( 0x010000, 0x040000 )
814
815 ROM_REGION( 0x200000, "k056832", 0 )
816 /* tilemaps */
817 ROM_LOAD32_WORD( "173a05.t8", 0x000000, 0x100000, CRC(d14333b4) SHA1(d1a15ead2d156e1fceca0bf202ab3962411caf11) )
818 ROM_LOAD32_WORD( "173a06.t10", 0x000002, 0x100000, CRC(6541a34f) SHA1(15cf481498e3b7e0b2f7bfe5434121cc3bd65662) )
819
820 ROM_REGION( 0x800000, "k053246", 0 )
821 /* sprites */
822 ROM_LOAD64_WORD( "173a10.b8", 0x000000, 0x200000, CRC(42fb0a0c) SHA1(d68c932cfabdec7896698b433525fe47ef4698d0) )
823 ROM_LOAD64_WORD( "173a11.a8", 0x000002, 0x200000, CRC(b0d747c4) SHA1(0cf1ee1b9a35ded31a81c321df2a076f7b588971) )
824 ROM_LOAD64_WORD( "173a12.b10", 0x000004, 0x200000, CRC(0fc2ad24) SHA1(6eda1043ee1266b8ba938a03a90bc7787210a936) )
825 ROM_LOAD64_WORD( "173a13.a10", 0x000006, 0x200000, CRC(4cf85439) SHA1(8c298bf0e659a830a1830a1180f4ce71215ade45) )
826
827 ROM_REGION( 0x400000, "k054539", 0 )
828 /* K054539 samples */
829 ROM_LOAD( "173a08.b6", 0x000000, 0x200000, CRC(dcdded95) SHA1(8eeb546a0b60a35a6dce36c5ee872e6c93c577c9) )
830 ROM_LOAD( "173a09.a6", 0x200000, 0x200000, CRC(c93697c4) SHA1(0528a604868267a30d281b822c187df118566691) )
831
832 ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
833 ROM_LOAD( "bucky.nv", 0x0000, 0x080, CRC(6a5986f3) SHA1(3efddeed261b09031c582e12318f00c2cbb214ea) )
834 ROM_END
835
836 ROM_START( buckyjaa ) /* Version JA */
837 ROM_REGION( 0x240000, "maincpu", 0 )
838 /* main program */
839 ROM_LOAD16_BYTE( "173jaa01.05", 0x000000, 0x040000, CRC(0a32bde7) SHA1(17b7654fd69eb1b82e2949ef324ce599113360aa) ) /* JAA */
840 ROM_LOAD16_BYTE( "173jaa02.06", 0x000001, 0x040000, CRC(3e6f3955) SHA1(09ca39da8bdb37cb5517fe59cff5467c0623c380) ) /* JAA */
841
842 /* data */
843 ROM_LOAD16_BYTE( "173a03.t5", 0x200000, 0x20000, CRC(cd724026) SHA1(525445499604b713da4d8bc0a88e428654ceab95) )
844 ROM_LOAD16_BYTE( "173a04.t6", 0x200001, 0x20000, CRC(7dd54d6f) SHA1(b0ee8ec445b92254bca881eefd4449972fed506a) )
845
846 ROM_REGION( 0x050000, "soundcpu", 0 )
847 /* Z80 sound program */
848 ROM_LOAD( "173a07.f5", 0x000000, 0x040000, CRC(4cdaee71) SHA1(bdc05d4475415f6fac65d7cdbc48df398e57845e) )
849 ROM_RELOAD( 0x010000, 0x040000 )
850
851 ROM_REGION( 0x200000, "k056832", 0 )
852 /* tilemaps */
853 ROM_LOAD32_WORD( "173a05.t8", 0x000000, 0x100000, CRC(d14333b4) SHA1(d1a15ead2d156e1fceca0bf202ab3962411caf11) )
854 ROM_LOAD32_WORD( "173a06.t10", 0x000002, 0x100000, CRC(6541a34f) SHA1(15cf481498e3b7e0b2f7bfe5434121cc3bd65662) )
855
856 ROM_REGION( 0x800000, "k053246", 0 )
857 /* sprites */
858 ROM_LOAD64_WORD( "173a10.b8", 0x000000, 0x200000, CRC(42fb0a0c) SHA1(d68c932cfabdec7896698b433525fe47ef4698d0) )
859 ROM_LOAD64_WORD( "173a11.a8", 0x000002, 0x200000, CRC(b0d747c4) SHA1(0cf1ee1b9a35ded31a81c321df2a076f7b588971) )
860 ROM_LOAD64_WORD( "173a12.b10", 0x000004, 0x200000, CRC(0fc2ad24) SHA1(6eda1043ee1266b8ba938a03a90bc7787210a936) )
861 ROM_LOAD64_WORD( "173a13.a10", 0x000006, 0x200000, CRC(4cf85439) SHA1(8c298bf0e659a830a1830a1180f4ce71215ade45) )
862
863 ROM_REGION( 0x400000, "k054539", 0 )
864 /* K054539 samples */
865 ROM_LOAD( "173a08.b6", 0x000000, 0x200000, CRC(dcdded95) SHA1(8eeb546a0b60a35a6dce36c5ee872e6c93c577c9) )
866 ROM_LOAD( "173a09.a6", 0x200000, 0x200000, CRC(c93697c4) SHA1(0528a604868267a30d281b822c187df118566691) )
867
868 ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
869 ROM_LOAD( "buckyja.nv", 0x0000, 0x080, CRC(2f280a74) SHA1(c4b4472da57599587325bad6d9e7760916076816) )
870 ROM_END
871
872 ROM_START( buckyuab ) /* Version UA */
873 ROM_REGION( 0x240000, "maincpu", 0 )
874 /* main program */
875 ROM_LOAD16_BYTE( "173uab01.q5", 0x000000, 0x40000, CRC(dcaecca0) SHA1(c41847c9d89cdaf7cfa81ad9cc018c32592a882f) ) /* UAB */
876 ROM_LOAD16_BYTE( "173uab02.q6", 0x000001, 0x40000, CRC(e3c856a6) SHA1(33cc8a29643e44b31ee280015c0c994bed72a0e3) ) /* UAB */
877
878 /* data */
879 ROM_LOAD16_BYTE( "173a03.t5", 0x200000, 0x20000, CRC(cd724026) SHA1(525445499604b713da4d8bc0a88e428654ceab95) )
880 ROM_LOAD16_BYTE( "173a04.t6", 0x200001, 0x20000, CRC(7dd54d6f) SHA1(b0ee8ec445b92254bca881eefd4449972fed506a) )
881
882 ROM_REGION( 0x050000, "soundcpu", 0 )
883 /* Z80 sound program */
884 ROM_LOAD( "173a07.f5", 0x000000, 0x040000, CRC(4cdaee71) SHA1(bdc05d4475415f6fac65d7cdbc48df398e57845e) )
885 ROM_RELOAD( 0x010000, 0x040000 )
886
887 ROM_REGION( 0x200000, "k056832", 0 )
888 /* tilemaps */
889 ROM_LOAD32_WORD( "173a05.t8", 0x000000, 0x100000, CRC(d14333b4) SHA1(d1a15ead2d156e1fceca0bf202ab3962411caf11) )
890 ROM_LOAD32_WORD( "173a06.t10", 0x000002, 0x100000, CRC(6541a34f) SHA1(15cf481498e3b7e0b2f7bfe5434121cc3bd65662) )
891
892 ROM_REGION( 0x800000, "k053246", 0 )
893 /* sprites */
894 ROM_LOAD64_WORD( "173a10.b8", 0x000000, 0x200000, CRC(42fb0a0c) SHA1(d68c932cfabdec7896698b433525fe47ef4698d0) )
895 ROM_LOAD64_WORD( "173a11.a8", 0x000002, 0x200000, CRC(b0d747c4) SHA1(0cf1ee1b9a35ded31a81c321df2a076f7b588971) )
896 ROM_LOAD64_WORD( "173a12.b10", 0x000004, 0x200000, CRC(0fc2ad24) SHA1(6eda1043ee1266b8ba938a03a90bc7787210a936) )
897 ROM_LOAD64_WORD( "173a13.a10", 0x000006, 0x200000, CRC(4cf85439) SHA1(8c298bf0e659a830a1830a1180f4ce71215ade45) )
898
899 ROM_REGION( 0x400000, "k054539", 0 )
900 /* K054539 samples */
901 ROM_LOAD( "173a08.b6", 0x000000, 0x200000, CRC(dcdded95) SHA1(8eeb546a0b60a35a6dce36c5ee872e6c93c577c9) )
902 ROM_LOAD( "173a09.a6", 0x200000, 0x200000, CRC(c93697c4) SHA1(0528a604868267a30d281b822c187df118566691) )
903
904 ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
905 ROM_LOAD( "buckyuab.nv", 0x0000, 0x080, CRC(a5cb137a) SHA1(119df859d6b5c366481305b1433eea0deadc3fa9) )
906 ROM_END
907
908 ROM_START( buckyaab ) /* Version AA */
909 ROM_REGION( 0x240000, "maincpu", 0 )
910 /* main program */
911 ROM_LOAD16_BYTE( "173aab01.q5", 0x000000, 0x40000, CRC(9193e89f) SHA1(574d6eb4097cd10c3dea99060ee09f220d41f1dc) ) /* AAB */
912 ROM_LOAD16_BYTE( "173aab02.q6", 0x000001, 0x40000, CRC(2567f3eb) SHA1(ccdb2a4b3ad1464f70d1442df8a3a7a7e34f6cd7) ) /* AAB */
913
914 /* data */
915 ROM_LOAD16_BYTE( "173a03.t5", 0x200000, 0x20000, CRC(cd724026) SHA1(525445499604b713da4d8bc0a88e428654ceab95) )
916 ROM_LOAD16_BYTE( "173a04.t6", 0x200001, 0x20000, CRC(7dd54d6f) SHA1(b0ee8ec445b92254bca881eefd4449972fed506a) )
917
918 ROM_REGION( 0x050000, "soundcpu", 0 )
919 /* Z80 sound program */
920 ROM_LOAD( "173a07.f5", 0x000000, 0x040000, CRC(4cdaee71) SHA1(bdc05d4475415f6fac65d7cdbc48df398e57845e) )
921 ROM_RELOAD( 0x010000, 0x040000 )
922
923 ROM_REGION( 0x200000, "k056832", 0 )
924 /* tilemaps */
925 ROM_LOAD32_WORD( "173a05.t8", 0x000000, 0x100000, CRC(d14333b4) SHA1(d1a15ead2d156e1fceca0bf202ab3962411caf11) )
926 ROM_LOAD32_WORD( "173a06.t10", 0x000002, 0x100000, CRC(6541a34f) SHA1(15cf481498e3b7e0b2f7bfe5434121cc3bd65662) )
927
928 ROM_REGION( 0x800000, "k053246", 0 )
929 /* sprites */
930 ROM_LOAD64_WORD( "173a10.b8", 0x000000, 0x200000, CRC(42fb0a0c) SHA1(d68c932cfabdec7896698b433525fe47ef4698d0) )
931 ROM_LOAD64_WORD( "173a11.a8", 0x000002, 0x200000, CRC(b0d747c4) SHA1(0cf1ee1b9a35ded31a81c321df2a076f7b588971) )
932 ROM_LOAD64_WORD( "173a12.b10", 0x000004, 0x200000, CRC(0fc2ad24) SHA1(6eda1043ee1266b8ba938a03a90bc7787210a936) )
933 ROM_LOAD64_WORD( "173a13.a10", 0x000006, 0x200000, CRC(4cf85439) SHA1(8c298bf0e659a830a1830a1180f4ce71215ade45) )
934
935 ROM_REGION( 0x400000, "k054539", 0 )
936 /* K054539 samples */
937 ROM_LOAD( "173a08.b6", 0x000000, 0x200000, CRC(dcdded95) SHA1(8eeb546a0b60a35a6dce36c5ee872e6c93c577c9) )
938 ROM_LOAD( "173a09.a6", 0x200000, 0x200000, CRC(c93697c4) SHA1(0528a604868267a30d281b822c187df118566691) )
939
940 ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
941 ROM_LOAD( "buckyaab.nv", 0x0000, 0x080, CRC(6a5986f3) SHA1(3efddeed261b09031c582e12318f00c2cbb214ea) )
942 ROM_END
943
944 ROM_START( buckyaa ) /* Version AA */
945 ROM_REGION( 0x240000, "maincpu", 0 )
946 /* main program */
947 ROM_LOAD16_BYTE( "173aa01.q4", 0x000000, 0x40000, CRC(e18518a6) SHA1(6b0bac8080032b7528b47e802c2f6a5264da5f55) ) /* AA */
948 ROM_LOAD16_BYTE( "173aa02.q5", 0x000001, 0x40000, CRC(c888d0c7) SHA1(e11d270049ea8e2d9673224c990c8beecf7942be) ) /* AA */
949
950 /* data */
951 ROM_LOAD16_BYTE( "173a03.t5", 0x200000, 0x20000, CRC(cd724026) SHA1(525445499604b713da4d8bc0a88e428654ceab95) )
952 ROM_LOAD16_BYTE( "173a04.t6", 0x200001, 0x20000, CRC(7dd54d6f) SHA1(b0ee8ec445b92254bca881eefd4449972fed506a) )
953
954 ROM_REGION( 0x050000, "soundcpu", 0 )
955 /* Z80 sound program */
956 ROM_LOAD( "173a07.f5", 0x000000, 0x040000, CRC(4cdaee71) SHA1(bdc05d4475415f6fac65d7cdbc48df398e57845e) )
957 ROM_RELOAD( 0x010000, 0x040000 )
958
959 ROM_REGION( 0x200000, "k056832", 0 )
960 /* tilemaps */
961 ROM_LOAD32_WORD( "173a05.t8", 0x000000, 0x100000, CRC(d14333b4) SHA1(d1a15ead2d156e1fceca0bf202ab3962411caf11) )
962 ROM_LOAD32_WORD( "173a06.t10", 0x000002, 0x100000, CRC(6541a34f) SHA1(15cf481498e3b7e0b2f7bfe5434121cc3bd65662) )
963
964 ROM_REGION( 0x800000, "k053246", 0 )
965 /* sprites */
966 ROM_LOAD64_WORD( "173a10.b8", 0x000000, 0x200000, CRC(42fb0a0c) SHA1(d68c932cfabdec7896698b433525fe47ef4698d0) )
967 ROM_LOAD64_WORD( "173a11.a8", 0x000002, 0x200000, CRC(b0d747c4) SHA1(0cf1ee1b9a35ded31a81c321df2a076f7b588971) )
968 ROM_LOAD64_WORD( "173a12.b10", 0x000004, 0x200000, CRC(0fc2ad24) SHA1(6eda1043ee1266b8ba938a03a90bc7787210a936) )
969 ROM_LOAD64_WORD( "173a13.a10", 0x000006, 0x200000, CRC(4cf85439) SHA1(8c298bf0e659a830a1830a1180f4ce71215ade45) )
970
971 ROM_REGION( 0x400000, "k054539", 0 )
972 /* K054539 samples */
973 ROM_LOAD( "173a08.b6", 0x000000, 0x200000, CRC(dcdded95) SHA1(8eeb546a0b60a35a6dce36c5ee872e6c93c577c9) )
974 ROM_LOAD( "173a09.a6", 0x200000, 0x200000, CRC(c93697c4) SHA1(0528a604868267a30d281b822c187df118566691) )
975
976 ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
977 ROM_LOAD( "bucky.nv", 0x0000, 0x080, CRC(6a5986f3) SHA1(3efddeed261b09031c582e12318f00c2cbb214ea) )
978 ROM_END
979
980
981 ROM_START( moomesabl )
982 ROM_REGION( 0x180000, "maincpu", 0 )
983 ROM_LOAD16_WORD_SWAP( "moo03.rom", 0x000000, 0x80000, CRC(fed6a1cb) SHA1(be58e266973930d643b5e15dcc974a82e1a3ae35) )
984 ROM_LOAD16_WORD_SWAP( "moo04.rom", 0x100000, 0x80000, CRC(ec45892a) SHA1(594330cbbfbca87e61ddf519e565018b6eaf5a20) )
985
986 ROM_REGION( 0x100000, "user1", 0 )
987 ROM_LOAD16_WORD_SWAP( "moo03.rom", 0x000000, 0x80000, CRC(fed6a1cb) SHA1(be58e266973930d643b5e15dcc974a82e1a3ae35) )
988 ROM_LOAD16_WORD_SWAP( "moo04.rom", 0x080000, 0x80000, CRC(ec45892a) SHA1(594330cbbfbca87e61ddf519e565018b6eaf5a20) )
989
990 ROM_REGION( 0x200000, "k056832", 0 )
991 ROM_LOAD32_WORD( "moo05.rom", 0x000000, 0x080000, CRC(8c045f9c) SHA1(cde81a722a4bc2efac09a26d7e300664059ec7bb) )
992 ROM_LOAD32_WORD( "moo07.rom", 0x000002, 0x080000, CRC(b9e29f50) SHA1(c2af095df0af45064d49210085370425b319b82b) )
993 ROM_LOAD32_WORD( "moo06.rom", 0x100000, 0x080000, CRC(1261aa89) SHA1(b600916911bc0d8b6348e2ad4a16ed1a1c528261) )
994 ROM_LOAD32_WORD( "moo08.rom", 0x100002, 0x080000, CRC(e6937229) SHA1(089b3d4af33e8d8fbc1f3abb81e047a7a590567c) )
995
996 // sprites from bootleg not included in dump, taken from original game
997 ROM_REGION( 0x800000, "k053246", 0 )
998 ROM_LOAD64_WORD( "151a10", 0x000000, 0x200000, CRC(376c64f1) SHA1(eb69c5a27f9795e28f04a503955132f0a9e4de12) )
999 ROM_LOAD64_WORD( "151a11", 0x000002, 0x200000, CRC(e7f49225) SHA1(1255b214f29b6507540dad5892c60a7ae2aafc5c) )
1000 ROM_LOAD64_WORD( "151a12", 0x000004, 0x200000, CRC(4978555f) SHA1(d9871f21d0c8a512b408e137e2e80e9392c2bf6f) )
1001 ROM_LOAD64_WORD( "151a13", 0x000006, 0x200000, CRC(4771f525) SHA1(218d86b6230919b5db0304dac00513eb6b27ba9a) )
1002
1003 ROM_REGION( 0x340000, "oki", 0 )
1004 ROM_LOAD( "moo01.rom", 0x000000, 0x040000, CRC(3311338a) SHA1(c0b5cd16f0275b5b93a2ea4fc64013c848c5fa43) )//bank 0 lo & hi
1005 ROM_CONTINUE( 0x040000+0x30000, 0x010000)//bank 1 hi
1006 ROM_CONTINUE( 0x080000+0x30000, 0x010000)//bank 2 hi
1007 ROM_CONTINUE( 0x0c0000+0x30000, 0x010000)//bank 3 hi
1008 ROM_CONTINUE( 0x100000+0x30000, 0x010000)//bank 4 hi
1009 ROM_RELOAD( 0x040000, 0x30000 )//bank 1 lo
1010 ROM_RELOAD( 0x080000, 0x30000 )//bank 2 lo
1011 ROM_RELOAD( 0x0c0000, 0x30000 )//bank 3 lo
1012 ROM_RELOAD( 0x100000, 0x30000 )//bank 4 lo
1013 ROM_RELOAD( 0x140000, 0x30000 )//bank 5 lo
1014 ROM_RELOAD( 0x180000, 0x30000 )//bank 6 lo
1015 ROM_RELOAD( 0x1c0000, 0x30000 )//bank 7 lo
1016 ROM_RELOAD( 0x200000, 0x30000 )//bank 8 lo
1017 ROM_RELOAD( 0x240000, 0x30000 )//bank 9 lo
1018 ROM_RELOAD( 0x280000, 0x30000 )//bank a lo
1019 ROM_RELOAD( 0x2c0000, 0x30000 )//bank b lo
1020 ROM_RELOAD( 0x300000, 0x30000 )//bank c lo
1021
1022 ROM_LOAD( "moo02.rom", 0x140000+0x30000, 0x010000, CRC(2cf3a7c6) SHA1(06f495ba8250b34c32569d49c8b84e6edef562d3) )//bank 5 hi
1023 ROM_CONTINUE( 0x180000+0x30000, 0x010000)//bank 6 hi
1024 ROM_CONTINUE( 0x1c0000+0x30000, 0x010000)//bank 7 hi
1025 ROM_CONTINUE( 0x200000+0x30000, 0x010000)//bank 8 hi
1026 ROM_CONTINUE( 0x240000+0x30000, 0x010000)//bank 9 hi
1027 ROM_CONTINUE( 0x280000+0x30000, 0x010000)//bank a hi
1028 ROM_CONTINUE( 0x2c0000+0x30000, 0x010000)//bank b hi
1029 ROM_CONTINUE( 0x300000+0x30000, 0x010000)//bank c hi
1030
1031 ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
1032 ROM_LOAD( "moo.nv", 0x0000, 0x080, CRC(7bd904a8) SHA1(8747c5c62d1832e290be8ace73c61b1f228c0bec) )
1033 ROM_END
1034
1035
1036 GAME( 1992, moomesa, 0, moo, moo, moo_state, empty_init, ROT0, "Konami", "Wild West C.O.W.-Boys of Moo Mesa (ver EAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
1037 GAME( 1992, moomesauac, moomesa, moo, moo, moo_state, empty_init, ROT0, "Konami", "Wild West C.O.W.-Boys of Moo Mesa (ver UAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
1038 GAME( 1992, moomesauab, moomesa, moo, moo, moo_state, empty_init, ROT0, "Konami", "Wild West C.O.W.-Boys of Moo Mesa (ver UAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
1039 GAME( 1992, moomesaaab, moomesa, moo, moo, moo_state, empty_init, ROT0, "Konami", "Wild West C.O.W.-Boys of Moo Mesa (ver AAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
1040 GAME( 1992, moomesabl, moomesa, moobl, moo, moo_state, empty_init, ROT0, "bootleg", "Wild West C.O.W.-Boys of Moo Mesa (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // based on Version AA
1041 GAME( 1992, bucky, 0, bucky, bucky, moo_state, empty_init, ROT0, "Konami", "Bucky O'Hare (ver EAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
1042 GAME( 1992, buckyea, bucky, bucky, bucky, moo_state, empty_init, ROT0, "Konami", "Bucky O'Hare (ver EA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
1043 GAME( 1992, buckyjaa, bucky, bucky, bucky, moo_state, empty_init, ROT0, "Konami", "Bucky O'Hare (ver JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
1044 GAME( 1992, buckyuab, bucky, bucky, bucky, moo_state, empty_init, ROT0, "Konami", "Bucky O'Hare (ver UAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
1045 GAME( 1992, buckyaab, bucky, bucky, bucky, moo_state, empty_init, ROT0, "Konami", "Bucky O'Hare (ver AAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
1046 GAME( 1992, buckyaa, bucky, bucky, bucky, moo_state, empty_init, ROT0, "Konami", "Bucky O'Hare (ver AA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
1047