mirror of
https://github.com/holub/mame
synced 2025-07-03 17:08:39 +03:00
New working clones
------------------ Circus / Acrobat TV (bootleg) [f205v, caius]
This commit is contained in:
parent
46e3402b35
commit
41a009484f
@ -149,7 +149,7 @@ DISCRETE_SOUND_END
|
|||||||
/* and also is used to enable the amplifier and trigger the */
|
/* and also is used to enable the amplifier and trigger the */
|
||||||
/* discrete circuitry that produces sound effects and music */
|
/* discrete circuitry that produces sound effects and music */
|
||||||
|
|
||||||
WRITE8_MEMBER(circus_state::circus_clown_z_w)
|
void circus_state::circus_clown_z_w(uint8_t data)
|
||||||
{
|
{
|
||||||
m_clown_z = (data & 0x0f);
|
m_clown_z = (data & 0x0f);
|
||||||
*(memregion("maincpu")->base() + 0x8000) = data; logerror("Z:%02x\n",data); //DEBUG
|
*(memregion("maincpu")->base() + 0x8000) = data; logerror("Z:%02x\n",data); //DEBUG
|
||||||
|
@ -35,7 +35,7 @@ C000 Option Switches
|
|||||||
D000 Paddle Position and Interrupt Reset (where applicable)
|
D000 Paddle Position and Interrupt Reset (where applicable)
|
||||||
|
|
||||||
NOTES:
|
NOTES:
|
||||||
- Circus: Taito licensed and releasd the game as "Acrobat TV"
|
- Circus: Taito licensed and released the game as "Acrobat TV"
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- generic video timing (vsync, vblank, # of scanlines)
|
- generic video timing (vsync, vblank, # of scanlines)
|
||||||
@ -56,7 +56,7 @@ D000 Paddle Position and Interrupt Reset (where applicable)
|
|||||||
#include "crash.lh"
|
#include "crash.lh"
|
||||||
|
|
||||||
|
|
||||||
READ8_MEMBER(circus_state::circus_paddle_r)
|
uint8_t circus_state::circus_paddle_r()
|
||||||
{
|
{
|
||||||
// also clears irq
|
// also clears irq
|
||||||
m_maincpu->set_input_line(0, CLEAR_LINE);
|
m_maincpu->set_input_line(0, CLEAR_LINE);
|
||||||
@ -441,6 +441,10 @@ ROM_START( circus )
|
|||||||
|
|
||||||
ROM_REGION( 0x0200, "gfx2", 0 ) // clown sprite
|
ROM_REGION( 0x0200, "gfx2", 0 ) // clown sprite
|
||||||
ROM_LOAD( "9012.14d", 0x0000, 0x0200, CRC(2fde3930) SHA1(a21e2d342f16a39a07edf4bea8d698a52216ecba) )
|
ROM_LOAD( "9012.14d", 0x0000, 0x0200, CRC(2fde3930) SHA1(a21e2d342f16a39a07edf4bea8d698a52216ecba) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x400, "extra_proms", 0 ) // timing? not used by the emulation, dumped for the circusb bootleg but should match
|
||||||
|
ROM_LOAD( "dm74s570-d4.4d", 0x000, 0x200, BAD_DUMP CRC(aad8da33) SHA1(1d60a6b75b94f5be5bad190ef56e9e3da20bf81a) )
|
||||||
|
ROM_LOAD( "dm74s570-d5.5d", 0x200, 0x200, BAD_DUMP CRC(ed2493fa) SHA1(57ee357b68383b0880bfa385820605bede500747) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( springbd )
|
ROM_START( springbd )
|
||||||
@ -463,6 +467,36 @@ ROM_START( springbd )
|
|||||||
|
|
||||||
ROM_REGION( 0x0200, "gfx2", 0 ) // clown sprite
|
ROM_REGION( 0x0200, "gfx2", 0 ) // clown sprite
|
||||||
ROM_LOAD( "93448.14d", 0x0000, 0x0200, CRC(2fde3930) SHA1(a21e2d342f16a39a07edf4bea8d698a52216ecba) )
|
ROM_LOAD( "93448.14d", 0x0000, 0x0200, CRC(2fde3930) SHA1(a21e2d342f16a39a07edf4bea8d698a52216ecba) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x400, "extra_proms", 0 ) // timing? not used by the emulation, dumped for the circusb bootleg but should match
|
||||||
|
ROM_LOAD( "dm74s570-d4.4d", 0x000, 0x200, BAD_DUMP CRC(aad8da33) SHA1(1d60a6b75b94f5be5bad190ef56e9e3da20bf81a) )
|
||||||
|
ROM_LOAD( "dm74s570-d5.5d", 0x200, 0x200, BAD_DUMP CRC(ed2493fa) SHA1(57ee357b68383b0880bfa385820605bede500747) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( circusb ) // bootleg found both on a PCB and a PROMs blister, labeled 'Circus - punteggio basso' ('Circus - low scoring')
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD( "6341-1j-a1.1a", 0x1000, 0x0200, CRC(68e710ba) SHA1(63957802f8db3b4ac7bbab83376771ce1744c6b3) )
|
||||||
|
ROM_LOAD( "f93448bpc-a2.2a", 0x1200, 0x0200, CRC(b8acdbc5) SHA1(634bb11089f7a57a316b6829954cc4da4523f267) )
|
||||||
|
ROM_LOAD( "sn74s474n1-a3.3a", 0x1400, 0x0200, CRC(901dfff6) SHA1(c1f48845456e88d54981608afd00ddb92d97da99) )
|
||||||
|
ROM_LOAD( "sn74s474n1-a5.5a", 0x1600, 0x0200, CRC(9dfdae38) SHA1(dc59a5f90a5a49fa071aada67eda768d3ecef010) )
|
||||||
|
ROM_LOAD( "sn74s474n1-a6.6a", 0x1800, 0x0200, CRC(c8681cf6) SHA1(681cfea75bee8a86f9f4645e6c6b94b44762dae9) )
|
||||||
|
ROM_LOAD( "6341-1j-a7.7a", 0x1a00, 0x0200, CRC(585f633e) SHA1(46133409f42e8cbc095dde576ce07d97b235972d) )
|
||||||
|
ROM_LOAD( "6341-1j-a8.8a", 0x1c00, 0x0200, CRC(69cc409f) SHA1(b77289e62313e8535ce40686df7238aa9c0035bc) )
|
||||||
|
ROM_LOAD( "6341-1j-a9.9a", 0x1e00, 0x0200, CRC(aff835eb) SHA1(d6d95510d4a046f48358fef01103bcc760eb71ed) )
|
||||||
|
ROM_RELOAD( 0xfe00, 0x0200 ) // for the reset and interrupt vectors
|
||||||
|
|
||||||
|
ROM_REGION( 0x0800, "gfx1", 0 ) // character set
|
||||||
|
ROM_LOAD( "sn74s474n1-c4.4c", 0x0000, 0x0200, CRC(6efc315a) SHA1(d5a4a64a901853fff56df3c65512afea8336aad2) )
|
||||||
|
ROM_LOAD( "sn74s474n1-c3.3c", 0x0200, 0x0200, CRC(30d72ef5) SHA1(45fc8285e213bf3906a26205a8c0b22f311fd6c3) )
|
||||||
|
ROM_LOAD( "sn74s474n1-c2.2c", 0x0400, 0x0200, CRC(361da7ee) SHA1(6e6fe5b37ccb4c11aa4abbd9b7df772953abfe7e) )
|
||||||
|
ROM_LOAD( "sn74s474n1-c1.1c", 0x0600, 0x0200, CRC(1f954bb3) SHA1(62a958b48078caa639b96f62a690583a1c8e83f5) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x0200, "gfx2", 0 ) // clown sprite
|
||||||
|
ROM_LOAD( "sn74s474n1-d14.14d", 0x0000, 0x0200, CRC(2fde3930) SHA1(a21e2d342f16a39a07edf4bea8d698a52216ecba) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x400, "extra_proms", 0 ) // timing? not used by the emulation
|
||||||
|
ROM_LOAD( "dm74s570-d4.4d", 0x000, 0x200, CRC(aad8da33) SHA1(1d60a6b75b94f5be5bad190ef56e9e3da20bf81a) )
|
||||||
|
ROM_LOAD( "dm74s570-d5.5d", 0x200, 0x200, CRC(ed2493fa) SHA1(57ee357b68383b0880bfa385820605bede500747) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( robotbwl )
|
ROM_START( robotbwl )
|
||||||
@ -589,6 +623,7 @@ void circus_state::init_ripcord()
|
|||||||
|
|
||||||
GAMEL( 1977, circus, 0, circus, circus, circus_state, init_circus, ROT0, "Exidy / Taito", "Circus / Acrobat TV", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus )
|
GAMEL( 1977, circus, 0, circus, circus, circus_state, init_circus, ROT0, "Exidy / Taito", "Circus / Acrobat TV", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus )
|
||||||
GAMEL( 1977, springbd, circus, circus, circus, circus_state, init_circus, ROT0, "bootleg (Sub-Electro)", "Springboard (bootleg of Circus)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus ) // looks like a text hack, but we've seen 2 identical copies so it's worth supporting
|
GAMEL( 1977, springbd, circus, circus, circus, circus_state, init_circus, ROT0, "bootleg (Sub-Electro)", "Springboard (bootleg of Circus)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus ) // looks like a text hack, but we've seen 2 identical copies so it's worth supporting
|
||||||
|
GAMEL( 1977, circusb, circus, circus, circus, circus_state, init_circus, ROT0, "bootleg", "Circus / Acrobat TV (bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus )
|
||||||
GAME( 1977, robotbwl, 0, robotbwl, robotbwl, circus_state, init_robotbwl, ROT0, "Exidy", "Robot Bowl", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
|
GAME( 1977, robotbwl, 0, robotbwl, robotbwl, circus_state, init_robotbwl, ROT0, "Exidy", "Robot Bowl", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
|
||||||
GAMEL( 1979, crash, 0, crash, crash, circus_state, init_crash, ROT0, "Exidy", "Crash", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crash )
|
GAMEL( 1979, crash, 0, crash, crash, circus_state, init_crash, ROT0, "Exidy", "Crash", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crash )
|
||||||
GAMEL( 1979, crasha, crash, crash, crash, circus_state, init_crash, ROT0, "Exidy", "Crash (alt)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crash )
|
GAMEL( 1979, crasha, crash, crash, crash, circus_state, init_crash, ROT0, "Exidy", "Crash (alt)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crash )
|
||||||
|
@ -24,6 +24,22 @@ public:
|
|||||||
m_palette(*this, "palette")
|
m_palette(*this, "palette")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
void robotbwl(machine_config &config);
|
||||||
|
void ripcord(machine_config &config);
|
||||||
|
void crash(machine_config &config);
|
||||||
|
void circus(machine_config &config);
|
||||||
|
|
||||||
|
void init_ripcord();
|
||||||
|
void init_circus();
|
||||||
|
void init_robotbwl();
|
||||||
|
void init_crash();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void machine_start() override;
|
||||||
|
virtual void machine_reset() override;
|
||||||
|
virtual void video_start() override;
|
||||||
|
|
||||||
|
private:
|
||||||
/* memory pointers */
|
/* memory pointers */
|
||||||
required_shared_ptr<uint8_t> m_videoram;
|
required_shared_ptr<uint8_t> m_videoram;
|
||||||
|
|
||||||
@ -42,19 +58,12 @@ public:
|
|||||||
|
|
||||||
/* game id */
|
/* game id */
|
||||||
int m_game_id;
|
int m_game_id;
|
||||||
DECLARE_READ8_MEMBER(circus_paddle_r);
|
uint8_t circus_paddle_r();
|
||||||
DECLARE_WRITE8_MEMBER(circus_videoram_w);
|
void circus_videoram_w(offs_t offset, uint8_t data);
|
||||||
DECLARE_WRITE8_MEMBER(circus_clown_x_w);
|
void circus_clown_x_w(uint8_t data);
|
||||||
DECLARE_WRITE8_MEMBER(circus_clown_y_w);
|
void circus_clown_y_w(uint8_t data);
|
||||||
DECLARE_WRITE8_MEMBER(circus_clown_z_w);
|
void circus_clown_z_w(uint8_t data);
|
||||||
void init_ripcord();
|
|
||||||
void init_circus();
|
|
||||||
void init_robotbwl();
|
|
||||||
void init_crash();
|
|
||||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||||
virtual void machine_start() override;
|
|
||||||
virtual void machine_reset() override;
|
|
||||||
virtual void video_start() override;
|
|
||||||
uint32_t screen_update_circus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update_circus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
uint32_t screen_update_robotbwl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update_robotbwl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
uint32_t screen_update_crash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update_crash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
@ -68,10 +77,6 @@ public:
|
|||||||
void robotbwl_draw_bowling_alley( bitmap_ind16 &bitmap, const rectangle &cliprect );
|
void robotbwl_draw_bowling_alley( bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||||
void robotbwl_draw_ball( bitmap_ind16 &bitmap, const rectangle &cliprect );
|
void robotbwl_draw_ball( bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||||
void crash_draw_car( bitmap_ind16 &bitmap, const rectangle &cliprect );
|
void crash_draw_car( bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||||
void robotbwl(machine_config &config);
|
|
||||||
void ripcord(machine_config &config);
|
|
||||||
void crash(machine_config &config);
|
|
||||||
void circus(machine_config &config);
|
|
||||||
void circus_map(address_map &map);
|
void circus_map(address_map &map);
|
||||||
};
|
};
|
||||||
/*----------- defined in audio/circus.c -----------*/
|
/*----------- defined in audio/circus.c -----------*/
|
||||||
|
@ -10282,6 +10282,7 @@ wotwc // (c) 1981
|
|||||||
|
|
||||||
@source:circus.cpp
|
@source:circus.cpp
|
||||||
circus // no copyright notice [1977?]
|
circus // no copyright notice [1977?]
|
||||||
|
circusb // bootleg
|
||||||
crash // Exidy [1979?]
|
crash // Exidy [1979?]
|
||||||
crasha // no copyright notice [1979?]
|
crasha // no copyright notice [1979?]
|
||||||
ripcord // Exidy [1977?]
|
ripcord // Exidy [1977?]
|
||||||
|
@ -13,18 +13,18 @@
|
|||||||
#include "includes/circus.h"
|
#include "includes/circus.h"
|
||||||
|
|
||||||
|
|
||||||
WRITE8_MEMBER(circus_state::circus_videoram_w)
|
void circus_state::circus_videoram_w(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
m_videoram[offset] = data;
|
m_videoram[offset] = data;
|
||||||
m_bg_tilemap->mark_tile_dirty(offset);
|
m_bg_tilemap->mark_tile_dirty(offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(circus_state::circus_clown_x_w)
|
void circus_state::circus_clown_x_w(uint8_t data)
|
||||||
{
|
{
|
||||||
m_clown_x = 240 - data;
|
m_clown_x = 240 - data;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(circus_state::circus_clown_y_w)
|
void circus_state::circus_clown_y_w(uint8_t data)
|
||||||
{
|
{
|
||||||
m_clown_y = 240 - data;
|
m_clown_y = 240 - data;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user