diff options
Diffstat (limited to 'src/mame/igs/goldstar.cpp')
| -rw-r--r-- | src/mame/igs/goldstar.cpp | 329 |
1 files changed, 182 insertions, 147 deletions
diff --git a/src/mame/igs/goldstar.cpp b/src/mame/igs/goldstar.cpp index 0d065cd3991..ec7fbcb9d75 100644 --- a/src/mame/igs/goldstar.cpp +++ b/src/mame/igs/goldstar.cpp @@ -450,7 +450,7 @@ public: void reelmg(machine_config &config) ATTR_COLD; void super7(machine_config &config) ATTR_COLD; - void init_3cdp() ATTR_COLD; + void init_3cdp() ATTR_COLD; void init_alienatt() ATTR_COLD; void init_animalhs() ATTR_COLD; void init_chthree() ATTR_COLD; @@ -651,6 +651,10 @@ private: void system_outputa_w(uint8_t data); void system_outputb_w(uint8_t data); void system_outputc_w(uint8_t data); + void megaline_outputa_w(uint8_t data); + void megaline_outputb_w(uint8_t data); + void megaline_outputc_w(uint8_t data); + void megaline_outputd_w(uint8_t data); void ay8910_outputa_w(uint8_t data); void ay8910_outputb_w(uint8_t data); @@ -953,8 +957,8 @@ TILE_GET_INFO_MEMBER(cmaster_state::get_pkrmast_bg_tile_info) m_bgcolor, 0); -// popmessage("m_reel_bank:%02x", (m_reel_bank - 1) ); -// popmessage("code:%02x", m_bg_vidram[tile_index] ); +// popmessage("m_reel_bank:%02x", (m_reel_bank - 1) ); +// popmessage("code:%02x", m_bg_vidram[tile_index] ); } @@ -1033,9 +1037,9 @@ VIDEO_START_MEMBER(cmaster_state, pkrmast) m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cmaster_state::get_pkrmast_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); -// m_enable_reg = 0x1b; +// m_enable_reg = 0x1b; -// save_item(NAME(m_reel_bank)); +// save_item(NAME(m_reel_bank)); } VIDEO_START_MEMBER(cmaster_state, jkrmast) @@ -1063,7 +1067,7 @@ VIDEO_START_MEMBER(cmaster_state, jkrmast) m_enable_reg = 0x0b; -// save_item(NAME(m_reel_bank)); +// save_item(NAME(m_reel_bank)); } void goldstar_state::goldstar_fa00_w(uint8_t data) @@ -1484,43 +1488,44 @@ uint32_t wingco_state::screen_update_megaline(screen_device &screen, bitmap_rgb3 { bitmap.fill(rgb_t::black(), cliprect); - if (!(m_enable_reg & 0x01)) + if (!(m_enable_reg & 0x02)) // global return 0; - if (m_enable_reg & 0x08) + if (m_enable_reg & 0x08) // only 1st reel { - if (m_vidreg & 2) + for (int i = 0; i < 64; i++) { - for (int i = 0; i < 64; i++) - { - // only one reels tilemap - m_reel_tilemap[0]->set_scrolly(i, m_reel_scroll[0][i]); - } - - const rectangle visible1(0*8, (14+48)*8-1, 8*8, (8+7)*8-1); - m_reel_tilemap[0]->draw(screen, bitmap, visible1, 0, 0); + // only one reels tilemap + m_reel_tilemap[0]->set_scrolly(i, m_reel_scroll[0][i]); } - else - { - for (int i = 0; i < 64; i++) - { - // all three reels tilemaps - m_reel_tilemap[0]->set_scrolly(i, m_reel_scroll[0][i]); - m_reel_tilemap[1]->set_scrolly(i, m_reel_scroll[1][i]); - m_reel_tilemap[2]->set_scrolly(i, m_reel_scroll[2][i]); - } + const rectangle visible1(0, (7+48)*8-1, 15*8, (12+8)*8-1); // adjust the rolling numbers - const rectangle visible1(0*8, (14+48)*8-1, 4*8, (4+7)*8-1); - const rectangle visible2(0*8, (14+48)*8-1, 12*8, (12+7)*8-1); - const rectangle visible3(0*8, (14+48)*8-1, 20*8, (20+7)*8-1); + m_reel_tilemap[0]->draw(screen, bitmap, visible1, 0, 0); + } - m_reel_tilemap[0]->draw(screen, bitmap, visible1, 0, 0); - m_reel_tilemap[1]->draw(screen, bitmap, visible2, 0, 0); - m_reel_tilemap[2]->draw(screen, bitmap, visible3, 0, 0); + if (m_enable_reg & 0x20) // reels x3 + { + for (int i = 0; i < 64; i++) + { + // all three reels tilemaps + m_reel_tilemap[0]->set_scrolly(i, m_reel_scroll[0][i]); + m_reel_tilemap[1]->set_scrolly(i, m_reel_scroll[1][i]); + m_reel_tilemap[2]->set_scrolly(i, m_reel_scroll[2][i]); } + + const rectangle visible1(0*8, (14+48)*8-1, 4*8, (4+7)*8-1); + const rectangle visible2(0*8, (14+48)*8-1, 12*8, (12+7)*8-1); + const rectangle visible3(0*8, (14+48)*8-1, 20*8, (20+7)*8-1); + + m_reel_tilemap[0]->draw(screen, bitmap, visible1, 0, 0); + m_reel_tilemap[1]->draw(screen, bitmap, visible2, 0, 0); + m_reel_tilemap[2]->draw(screen, bitmap, visible3, 0, 0); } - if (m_enable_reg & 0x02) + if (m_enable_reg & 0x40) // foreground + m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + + if (m_enable_reg || 0x2a) // workaround to enter the settings m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); return 0; @@ -1860,7 +1865,7 @@ void goldstar_state::p2_lamps_w(uint8_t data) m_lamps[8 + 6] = BIT(data, 6); m_lamps[8 + 7] = BIT(data, 7); -// popmessage("p2 lamps: %02X", data); +// popmessage("p2 lamps: %02X", data); } // lucky bar mcu @@ -2420,8 +2425,8 @@ void cmaster_state::clb_map(address_map &map) { cm_map(map); map(0xd800, 0xdfff).rom(); - -} + +} void cmaster_state::ll3_map(address_map &map) { @@ -2489,7 +2494,7 @@ void cmaster_state::pkrmast_map(address_map &map) map(0xfc00, 0xfc7f).ram().share(m_reel_scroll[2]); map(0xfc80, 0xfdff).ram(); map(0xfe00, 0xffff).ram().share(m_bg_scroll); -// map(0xfe00, 0xffff).ram().w(FUNC(cmaster_state::bg_atrram_w)).share(m_bg_atrram); +// map(0xfe00, 0xffff).ram().w(FUNC(cmaster_state::bg_atrram_w)).share(m_bg_atrram); } void cmaster_state::jkrmast_map(address_map &map) @@ -2640,7 +2645,7 @@ void cmaster_state::coincount_w(uint8_t data) // popmessage("counters: %02X", data); m_ticket_dispenser->motor_w(BIT(data,7)); -// popmessage("counters: %02X", data); +// popmessage("counters: %02X", data); } @@ -2660,7 +2665,7 @@ void cmaster_state::pkm_out0_w(uint8_t data) machine().bookkeeping().coin_counter_w(3, data & 0x08); // Counter 4 Coin D m_ticket_dispenser->motor_w(BIT(data,0)); //pkrmast:port 0x00 - jkrmast:port 0x13 -// popmessage("pkm_out0_w: %02X", data); +// popmessage("pkm_out0_w: %02X", data); } @@ -2669,7 +2674,7 @@ void cmaster_state::jkm_vid_reg_w(uint8_t data) { m_enable_reg = bitswap<8>(data, 7, 6, 5, 4, 2, 3, 1, 0); -// popmessage("jkm data, enable reg:%02x :: reg:%02x", data, m_enable_reg); +// popmessage("jkm data, enable reg:%02x :: reg:%02x", data, m_enable_reg); } @@ -2680,8 +2685,8 @@ void cmaster_state::pkm_vid_reg_w(uint8_t data) if(m_enable_reg == 0x1b) m_enable_reg = 0x13; // if bg activates, reels should be disabled -// popmessage("pkm enable reg:%02x", m_enable_reg ); -// popmessage("pkm reel bank:%02x", m_reel_bank ); +// popmessage("pkm enable reg:%02x", m_enable_reg ); +// popmessage("pkm reel bank:%02x", m_reel_bank ); } @@ -2692,7 +2697,7 @@ void cmaster_state::pkm_reel_reg_w(uint8_t data) through the following pairs table: girl0 girl1 girl2 girl3 girl4 girl5 - .-----.-----.-----.-----.-----.-----. + .-----.-----.-----.-----.-----.-----. 46BE: 10 00 11 80 22 80 33 00 20 00 33 80 FF FF FF FF -- -- || || @@ -2701,10 +2706,10 @@ void cmaster_state::pkm_reel_reg_w(uint8_t data) '-------> 0x100 tiles bank number */ m_reel_bank = (data & 0x30) >> 4; - m_bgcolor = (data & 0x01); + m_bgcolor = (data & 0x01); m_bg_tilemap->mark_all_dirty(); -// popmessage("pkm reel data:%02x", data ); +// popmessage("pkm reel data:%02x", data ); } @@ -2722,11 +2727,11 @@ void cmaster_state::ll3_vid_reg_w(uint8_t data) the video totally disabled. Surely for protection. */ - if(data > 0) + if(data > 0) data = data + 0x01; - m_enable_reg = data; + m_enable_reg = data; -// popmessage("ll3 vidreg:%02x", m_enable_reg ); +// popmessage("ll3 vidreg:%02x", m_enable_reg ); } void cmaster_state::czb_vid_reg_w(uint8_t data) @@ -2744,7 +2749,7 @@ void cmaster_state::czb_vid_reg_w(uint8_t data) if(data == 1) m_enable_reg = 0x13; // if bg activates, reels should be disabled -// popmessage("enable data:%02x", data ); +// popmessage("enable data:%02x", data ); } @@ -3524,7 +3529,7 @@ void wingco_state::megaline_map(address_map &map) map(0xe000, 0xe7ff).ram().w(FUNC(wingco_state::fg_vidram_w)).share(m_fg_vidram); map(0xe800, 0xefff).ram().w(FUNC(wingco_state::fg_atrram_w)).share(m_fg_atrram); map(0xf000, 0xffff).ram().share("nvram"); -// map(0xf800, 0xffff).ram(); +// map(0xf800, 0xffff).ram(); } /* unknown I/O byte R/W @@ -3535,10 +3540,10 @@ void wingco_state::megaline_map(address_map &map) void wingco_state::megaline_portmap(address_map &map) // TODO: verify everything. Strange reads at 0x0f and 0x07 { map.global_mask(0xff); - //map(0x20, 0x20).portr("IN0").nopw(); // ?? - map(0x40, 0x40).portr("IN0").nopw(); // ?? - map(0x60, 0x60).portr("IN1").nopw(); // ?? - map(0x80, 0x80).portr("IN2").nopw(); // ?? + map(0x20, 0x20).w(FUNC(wingco_state::megaline_outputa_w)); // hopper + video register - unknown input + map(0x40, 0x40).portr("IN0").w(FUNC(wingco_state::megaline_outputb_w)); // counters + map(0x60, 0x60).portr("IN1").w(FUNC(wingco_state::megaline_outputc_w)); // lamps player 1 + map(0x80, 0x80).portr("IN2").w(FUNC(wingco_state::megaline_outputd_w)); // lamps player 2 map(0xa0, 0xa0).portr("IN3").w("sn1", FUNC(sn76489_device::write)); map(0xc0, 0xc0).portr("IN4").w("sn2", FUNC(sn76489_device::write)); map(0xe0, 0xe0).portr("DSW1").w("sn3", FUNC(sn76489_device::write)); @@ -4252,76 +4257,76 @@ static INPUT_PORTS_START( ll3 ) PORT_INCLUDE( cmv4_service ) PORT_START("DSW1") - PORT_DIPNAME( 0x03, 0x01, "Min Bet To Start Play" ) PORT_DIPLOCATION("DSW1:1,2") + PORT_DIPNAME( 0x03, 0x01, "Min Bet To Start Play" ) PORT_DIPLOCATION("DSW1:1,2") PORT_DIPSETTING( 0x03, "1" ) PORT_DIPSETTING( 0x02, "16" ) PORT_DIPSETTING( 0x01, "32" ) PORT_DIPSETTING( 0x00, "40" ) - PORT_DIPNAME( 0x04, 0x04, "Double Up" ) PORT_DIPLOCATION("DSW1:3") + PORT_DIPNAME( 0x04, 0x04, "Double Up" ) PORT_DIPLOCATION("DSW1:3") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) // OFF = No PORT_DIPSETTING( 0x04, DEF_STR( On ) ) // ON = Yes - PORT_DIPNAME( 0x18, 0x10, "Max Bet" ) PORT_DIPLOCATION("DSW1:4,5") + PORT_DIPNAME( 0x18, 0x10, "Max Bet" ) PORT_DIPLOCATION("DSW1:4,5") PORT_DIPSETTING( 0x10, "40" ) PORT_DIPSETTING( 0x00, "64" ) PORT_DIPSETTING( 0x18, "80" ) PORT_DIPSETTING( 0x08, "96" ) PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "DSW1:6") - PORT_DIPNAME( 0x40, 0x40, "Key Out Rate" ) PORT_DIPLOCATION("DSW1:7") + PORT_DIPNAME( 0x40, 0x40, "Key Out Rate" ) PORT_DIPLOCATION("DSW1:7") PORT_DIPSETTING( 0x00, "1" ) // OFF PORT_DIPSETTING( 0x40, "100" ) // ON - PORT_DIPNAME( 0x80, 0x00, "Bell Pool" ) PORT_DIPLOCATION("DSW1:8") + PORT_DIPNAME( 0x80, 0x00, "Bell Pool" ) PORT_DIPLOCATION("DSW1:8") PORT_DIPSETTING( 0x00, "800" ) // OFF PORT_DIPSETTING( 0x80, "1000" ) // ON PORT_START("DSW2") - PORT_DIPNAME( 0x03, 0x00, "Payout (Main Game)" ) PORT_DIPLOCATION("DSW2:1,2") + PORT_DIPNAME( 0x03, 0x00, "Payout (Main Game)" ) PORT_DIPLOCATION("DSW2:1,2") PORT_DIPSETTING( 0x00, "65%" ) PORT_DIPSETTING( 0x01, "70%" ) PORT_DIPSETTING( 0x02, "75%" ) PORT_DIPSETTING( 0x03, "85%" ) - PORT_DIPNAME( 0x04, 0x00, "Free Spin" ) PORT_DIPLOCATION("DSW2:3") + PORT_DIPNAME( 0x04, 0x00, "Free Spin" ) PORT_DIPLOCATION("DSW2:3") PORT_DIPSETTING( 0x04, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x08, 0x00, "Double Up %" ) PORT_DIPLOCATION("DSW2:4") + PORT_DIPNAME( 0x08, 0x00, "Double Up %" ) PORT_DIPLOCATION("DSW2:4") PORT_DIPSETTING( 0x00, "70" ) PORT_DIPSETTING( 0x08, "80" ) - PORT_DIPNAME( 0x30, 0x20, "Coin / Credit" ) PORT_DIPLOCATION("DSW2:5,6") + PORT_DIPNAME( 0x30, 0x20, "Coin / Credit" ) PORT_DIPLOCATION("DSW2:5,6") PORT_DIPSETTING( 0x30, "1C_4C" ) PORT_DIPSETTING( 0x20, "1C_10C" ) PORT_DIPSETTING( 0x10, "1C_25C" ) PORT_DIPSETTING( 0x00, "1C_50C" ) - PORT_DIPNAME( 0xc0, 0xc0, "Key In Rate" ) PORT_DIPLOCATION("DSW2:7,8") + PORT_DIPNAME( 0xc0, 0xc0, "Key In Rate" ) PORT_DIPLOCATION("DSW2:7,8") PORT_DIPSETTING( 0xc0, "100" ) PORT_DIPSETTING( 0x80, "120" ) PORT_DIPSETTING( 0x40, "300" ) PORT_DIPSETTING( 0x00, "500" ) PORT_START("DSW3") - PORT_DIPNAME( 0x03, 0x00, "Mushroom Bonus" ) PORT_DIPLOCATION("DSW3:1,2") - PORT_DIPSETTING( 0x03, "3000" ) + PORT_DIPNAME( 0x03, 0x00, "Mushroom Bonus" ) PORT_DIPLOCATION("DSW3:1,2") + PORT_DIPSETTING( 0x03, "3000" ) PORT_DIPSETTING( 0x01, "4000" ) PORT_DIPSETTING( 0x02, "5000" ) PORT_DIPSETTING( 0x00, "6000" ) - PORT_DIPNAME( 0x0c, 0x04, "Mushroom Bonus Rate" ) PORT_DIPLOCATION("DSW3:3,4") + PORT_DIPNAME( 0x0c, 0x04, "Mushroom Bonus Rate" ) PORT_DIPLOCATION("DSW3:3,4") PORT_DIPSETTING( 0x0c, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x08, DEF_STR( Medium ) ) PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x10, 0x10, "Double Up Line" ) PORT_DIPLOCATION("DSW3:5") + PORT_DIPNAME( 0x10, 0x10, "Double Up Line" ) PORT_DIPLOCATION("DSW3:5") PORT_DIPSETTING( 0x10, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hard ) ) - PORT_DIPNAME( 0x20, 0x00, "Super Bonus" ) PORT_DIPLOCATION("DSW3:6") + PORT_DIPNAME( 0x20, 0x00, "Super Bonus" ) PORT_DIPLOCATION("DSW3:6") PORT_DIPSETTING( 0x20, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x40, 0x00, "Take Score Speed" ) PORT_DIPLOCATION("DSW3:7") // I cant see any different + PORT_DIPNAME( 0x40, 0x00, "Take Score Speed" ) PORT_DIPLOCATION("DSW3:7") // I cant see any different PORT_DIPSETTING( 0x40, "Normal" ) PORT_DIPSETTING( 0x00, "Fast" ) - PORT_DIPNAME( 0x80, 0x80, "Mushroom Bonus (Enable)" ) PORT_DIPLOCATION("DSW3:8") + PORT_DIPNAME( 0x80, 0x80, "Mushroom Bonus (Enable)" ) PORT_DIPLOCATION("DSW3:8") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) PORT_START("DSW4") - PORT_DIPNAME( 0x07, 0x03, "Credit Limit" ) PORT_DIPLOCATION("DSW4:1,2,3") + PORT_DIPNAME( 0x07, 0x03, "Credit Limit" ) PORT_DIPLOCATION("DSW4:1,2,3") PORT_DIPSETTING( 0x07, "5,000" ) PORT_DIPSETTING( 0x06, "10,000" ) PORT_DIPSETTING( 0x05, "20,000" ) @@ -4330,32 +4335,32 @@ static INPUT_PORTS_START( ll3 ) PORT_DIPSETTING( 0x02, "50,000" ) PORT_DIPSETTING( 0x01, "100,000" ) PORT_DIPSETTING( 0x00, "150,000" ) - PORT_DIPNAME( 0x08, 0x00, "Display Limit" ) PORT_DIPLOCATION("DSW4:4") + PORT_DIPNAME( 0x08, 0x00, "Display Limit" ) PORT_DIPLOCATION("DSW4:4") PORT_DIPSETTING( 0x08, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x10, 0x10, "Bonus Mode" ) PORT_DIPLOCATION("DSW4:5") + PORT_DIPNAME( 0x10, 0x10, "Bonus Mode" ) PORT_DIPLOCATION("DSW4:5") PORT_DIPSETTING( 0x10, "6-3-1" ) PORT_DIPSETTING( 0x00, "3-2-1" ) - PORT_DIPNAME( 0x20, 0x20, "Min Bet for Bonus" ) PORT_DIPLOCATION("DSW4:6") + PORT_DIPNAME( 0x20, 0x20, "Min Bet for Bonus" ) PORT_DIPLOCATION("DSW4:6") PORT_DIPSETTING( 0x20, "16" ) PORT_DIPSETTING( 0x00, "32" ) - PORT_DIPNAME( 0x40, 0x00, "Reel Speed" ) PORT_DIPLOCATION("DSW4:7") + PORT_DIPNAME( 0x40, 0x00, "Reel Speed" ) PORT_DIPLOCATION("DSW4:7") PORT_DIPSETTING( 0x40, "Slow" ) PORT_DIPSETTING( 0x00, "Fast" ) - PORT_DIPNAME( 0x80, 0x00, "Show Lady" ) PORT_DIPLOCATION("DSW4:8") + PORT_DIPNAME( 0x80, 0x00, "Show Lady" ) PORT_DIPLOCATION("DSW4:8") PORT_DIPSETTING( 0x80, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) PORT_START("DSW5") - PORT_DIPNAME( 0x03, 0x01, "Key-In Limit" ) PORT_DIPLOCATION("DSW5:1,2") + PORT_DIPNAME( 0x03, 0x01, "Key-In Limit" ) PORT_DIPLOCATION("DSW5:1,2") PORT_DIPSETTING( 0x00, "1000" ) PORT_DIPSETTING( 0x01, "5000" ) PORT_DIPSETTING( 0x02, "10000" ) PORT_DIPSETTING( 0x03, "20000" ) - PORT_DIPNAME( 0x04, 0x04, "Bonus Lady" ) PORT_DIPLOCATION("DSW5:3") + PORT_DIPNAME( 0x04, 0x04, "Bonus Lady" ) PORT_DIPLOCATION("DSW5:3") PORT_DIPSETTING( 0x04, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x38, 0x00, "Max Take Score Directly" ) PORT_DIPLOCATION("DSW5:4,5,6") + PORT_DIPNAME( 0x38, 0x00, "Max Take Score Directly" ) PORT_DIPLOCATION("DSW5:4,5,6") PORT_DIPSETTING( 0x00, "20000" ) PORT_DIPSETTING( 0x18, "30000" ) PORT_DIPSETTING( 0x10, "40000" ) @@ -4373,7 +4378,7 @@ static INPUT_PORTS_START( ll3a ) PORT_INCLUDE( ll3 ) PORT_MODIFY("DSW1") - PORT_DIPNAME( 0x18, 0x10, "Max Bet" ) PORT_DIPLOCATION("DSW1:4,5") + PORT_DIPNAME( 0x18, 0x10, "Max Bet" ) PORT_DIPLOCATION("DSW1:4,5") PORT_DIPSETTING( 0x10, "40" ) PORT_DIPSETTING( 0x00, "64" ) PORT_DIPSETTING( 0x18, "80" ) @@ -4385,12 +4390,12 @@ static INPUT_PORTS_START( ll3b ) PORT_INCLUDE( ll3 ) PORT_MODIFY("DSW1") - PORT_DIPNAME( 0x03, 0x01, "Min Bet To Start Play" ) PORT_DIPLOCATION("DSW1:1,2") + PORT_DIPNAME( 0x03, 0x01, "Min Bet To Start Play" ) PORT_DIPLOCATION("DSW1:1,2") PORT_DIPSETTING( 0x03, "1" ) PORT_DIPSETTING( 0x02, "8" ) PORT_DIPSETTING( 0x01, "16" ) PORT_DIPSETTING( 0x00, "32" ) - PORT_DIPNAME( 0x18, 0x10, "Max Bet" ) PORT_DIPLOCATION("DSW1:4,5") + PORT_DIPNAME( 0x18, 0x10, "Max Bet" ) PORT_DIPLOCATION("DSW1:4,5") PORT_DIPSETTING( 0x18, "40" ) PORT_DIPSETTING( 0x10, "64" ) PORT_DIPSETTING( 0x08, "80" ) @@ -4402,11 +4407,11 @@ static INPUT_PORTS_START( ll3c ) PORT_INCLUDE( ll3b ) PORT_MODIFY("DSW2") - PORT_DIPNAME( 0x03, 0x00, "Payout (Main Game)" ) PORT_DIPLOCATION("DSW2:1,2") - PORT_DIPSETTING( 0x00, "35%" ) - PORT_DIPSETTING( 0x01, "45%" ) - PORT_DIPSETTING( 0x02, "55%" ) - PORT_DIPSETTING( 0x03, "65%" ) + PORT_DIPNAME( 0x03, 0x00, "Payout (Main Game)" ) PORT_DIPLOCATION("DSW2:1,2") + PORT_DIPSETTING( 0x00, "35%" ) + PORT_DIPSETTING( 0x01, "45%" ) + PORT_DIPSETTING( 0x02, "55%" ) + PORT_DIPSETTING( 0x03, "65%" ) INPUT_PORTS_END @@ -4749,7 +4754,7 @@ static INPUT_PORTS_START( cmast91 ) PORT_DIPNAME( 0x40, 0x40, "Skill Stop" ) PORT_DIPLOCATION("DSW5:7") // OK PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // TAKE as S1, BET as S2, SMALL as S3, START as ALL Stop - PORT_DIPNAME( 0x80, 0x80, "Bet All Stop" ) PORT_DIPLOCATION("DSW5:8") + PORT_DIPNAME( 0x80, 0x80, "Bet All Stop" ) PORT_DIPLOCATION("DSW5:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // effected only if DSW5:7 is OFF TAKE as S1, BET as S2, SMALL as S3, BET as ALL Stop INPUT_PORTS_END @@ -7625,7 +7630,7 @@ static INPUT_PORTS_START( mbstar ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("IN0-4") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_4) PORT_NAME("Collect") // Collect. Also used to blank the BK. PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_6) PORT_NAME("IN0-6") - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Hold 1 / Bookkeeping: Down") // BK: down. + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Hold 1 / Bookkeeping: Down") // BK: down. PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Bookkeeping: Set/Enter - Start") // BK: enter. (start?) PORT_START("IN1") @@ -7661,7 +7666,7 @@ static INPUT_PORTS_START( mbstar ) PORT_START("IN4") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("IN4-1") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_9) PORT_NAME("Operator Bookkeeping") // operator bookkeeping - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) // grull - Set 2025 + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) // grull - Set 2025 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("IN4-4") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_W) PORT_NAME("Keyout") // payout? PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("IN4-6") @@ -9888,21 +9893,11 @@ INPUT_PORTS_END static INPUT_PORTS_START( megaline ) - PORT_INCLUDE( cmv4_player ) -/* - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_1) PORT_NAME("IN0-1") - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_2) PORT_NAME("IN0-2") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_3) PORT_NAME("IN0-3") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_4) PORT_NAME("IN0-4") - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_5) PORT_NAME("IN0-5") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_6) PORT_NAME("IN0-6") - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_7) PORT_NAME("IN0-7") - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_8) PORT_NAME("IN0-8") -*/ - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q) PORT_NAME("IN1-1") - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W) PORT_NAME("IN1-2") + PORT_INCLUDE( cmv4_player ) // IN0 - Plater 1 IOPort 0x40 + + PORT_START("IN1") // Player 2 - IOPort 0x60 + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_1) PORT_NAME("IN1-1") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_2) PORT_NAME("IN1-2") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E) PORT_NAME("IN1-3") PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R) PORT_NAME("IN1-4") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_T) PORT_NAME("IN1-5") @@ -9910,7 +9905,7 @@ static INPUT_PORTS_START( megaline ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U) PORT_NAME("IN1-7") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_I) PORT_NAME("IN1-8") - PORT_START("IN2") + PORT_START("IN2") // ??? - IOPort 0x80 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) PORT_NAME("IN2-1") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S) PORT_NAME("IN2-2") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D) PORT_NAME("IN2-3") @@ -9920,34 +9915,25 @@ static INPUT_PORTS_START( megaline ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J) PORT_NAME("IN2-7") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K) PORT_NAME("IN2-8") - PORT_START("IN3") + PORT_START("IN3") // Coin - IOPort 0xa0 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2) PORT_NAME("Coin B") // Service coin in some cases + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2) PORT_NAME("Coin B") PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_IMPULSE(2) PORT_NAME("Coin D") PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(2) PORT_NAME("Coin C") PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) PORT_NAME("Coin A") -/* - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z) PORT_NAME("IN3-1") - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X) PORT_NAME("IN3-2") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_C) PORT_NAME("IN3-3") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_V) PORT_NAME("IN3-4") - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_B) PORT_NAME("IN3-5") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N) PORT_NAME("IN3-6") - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M) PORT_NAME("IN3-7") - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L) PORT_NAME("IN3-8") -*/ - PORT_START("IN4") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("IN4-1") - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("IN4-2") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("IN4-3") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("IN4-4") - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("IN4-5") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("IN4-6") - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_9) PORT_NAME("Test") - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_0) PORT_NAME("Meters") + + PORT_START("IN4") // Service - IOPort 0xc0 + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) // 1 coin - 100 credits + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) // Hopper presence detection + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Key Out / Attendant") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("Hopper Payout") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Settings") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats") PORT_START("DSW1") PORT_DIPNAME( 0x01, 0x01, "DSW1" ) @@ -12023,37 +12009,83 @@ GFXDECODE_END void wingco_state::system_outputa_w(uint8_t data) { - //popmessage("system_outputa_w %02x",data); +// popmessage("system_outputa_w %02x",data); } - void wingco_state::system_outputb_w(uint8_t data) { - //popmessage("system_outputb_w %02x",data); +// popmessage("system_outputb_w %02x",data); } - void wingco_state::system_outputc_w(uint8_t data) { m_nmi_enable = data & 8; m_vidreg = data & 2; -// popmessage("system_outputc_w %02x",data); +// popmessage("system_outputc_w %02x",data); if (!m_nmi_enable) m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); m_ticket_dispenser->motor_w(!BIT(data, 7)); - //popmessage("system_outputc_w %02x",data); +// popmessage("system_outputc_w %02x",data); +} + +void wingco_state::megaline_outputa_w(uint8_t data) +{ + m_enable_reg = data & 0x7f; + m_ticket_dispenser->motor_w(BIT(data, 7)); + +// popmessage("megaline_outputa_w %02x",data); +} + +void wingco_state::megaline_outputb_w(uint8_t data) +{ + machine().bookkeeping().coin_counter_w(0, data & 0x01); // counter A coin a + machine().bookkeeping().coin_counter_w(1, data & 0x02); // counter H Key In + machine().bookkeeping().coin_counter_w(2, data & 0x04); // counter B coin c + machine().bookkeeping().coin_counter_w(3, data & 0x08); // counter C coin d + machine().bookkeeping().coin_counter_w(4, data & 0x10); // counter D Hopper Out + machine().bookkeeping().coin_counter_w(5, data & 0x40); // counter F Key Out + +// popmessage("megaline_outputb_w %02x",data); +} + +void wingco_state::megaline_outputc_w(uint8_t data) +{ + m_lamps[0] = BIT(data, 0); + m_lamps[1] = BIT(data, 1); + m_lamps[2] = BIT(data, 2); + m_lamps[3] = BIT(data, 3); + m_lamps[4] = BIT(data, 4); + m_lamps[5] = BIT(data, 5); + m_lamps[6] = BIT(data, 6); + m_lamps[7] = BIT(data, 7); + +// popmessage("megaline_outputc_w %02x",data); +} + +void wingco_state::megaline_outputd_w(uint8_t data) +{ + m_lamps[8+0] = BIT(data, 0); + m_lamps[8+1] = BIT(data, 1); + m_lamps[8+2] = BIT(data, 2); + m_lamps[8+3] = BIT(data, 3); + m_lamps[8+4] = BIT(data, 4); + m_lamps[8+5] = BIT(data, 5); + m_lamps[8+6] = BIT(data, 6); + m_lamps[8+7] = BIT(data, 7); + +// popmessage("megaline_outputd_w %02x",data); } void wingco_state::ay8910_outputa_w(uint8_t data) { - //popmessage("ay8910_outputa_w %02x", data); +// popmessage("ay8910_outputa_w %02x", data); } void wingco_state::ay8910_outputb_w(uint8_t data) { - //popmessage("ay8910_outputb_w %02x", data); +// popmessage("ay8910_outputb_w %02x", data); } @@ -12100,7 +12132,7 @@ uint8_t wingco_state::z80_io_r(offs_t offset) return m_z80_io_c0; } -// logerror("z80_io_r: offset:%02x\n", offset); // investigate functionality ports 0x31, 0x32, 0xc0. +// logerror("z80_io_r: offset:%02x\n", offset); // investigate functionality ports 0x31, 0x32, 0xc0. return machine().rand() & 0x0f; } @@ -12125,7 +12157,7 @@ uint8_t wingco_state::tmcu_io_r(offs_t offset) void wingco_state::tmcu_p1_out(uint8_t data) { m_mcu_p1 = data; -// logerror("MCU Port1:%02x\n", tmcu_p1_out); +// logerror("MCU Port1:%02x\n", tmcu_p1_out); } @@ -13453,6 +13485,9 @@ void wingco_state::megaline(machine_config &config) SN76489(config, "sn1", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80); SN76489(config, "sn2", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80); SN76489(config, "sn3", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80); + + // payout hardware + TICKET_DISPENSER(config, m_ticket_dispenser, attotime::from_msec(50)); } @@ -23468,8 +23503,8 @@ ROM_START( megaline ) ROM_CONTINUE( 0x8000, 0x4000) ROM_REGION( 0x200, "proms", 0 ) - ROM_LOAD( "tbp24s10.f4", 0x0000, 0x0100, CRC(d864b6f1) SHA1(6edc1941fe49cf53f073bf4acc466cd28b788146) ) - ROM_LOAD( "tbp24s10.h4", 0x0100, 0x0100, CRC(4acd5887) SHA1(dca1187a74d9f4abc53b77a1590ec726f682dd91) ) + ROM_LOAD( "tbp24s10n.h4", 0x0000, 0x0100, CRC(4acd5887) SHA1(dca1187a74d9f4abc53b77a1590ec726f682dd91) ) + ROM_LOAD( "tbp24s10n.f4", 0x0100, 0x0100, CRC(d864b6f1) SHA1(6edc1941fe49cf53f073bf4acc466cd28b788146) ) ROM_REGION( 0x100, "proms2", 0 ) ROM_LOAD( "n82s123an.j4", 0x0000, 0x0020, CRC(5447e258) SHA1(04057cddb86896500954b9aa6d6508aa081b9645) ) @@ -23497,8 +23532,8 @@ ROM_START( skillch ) // same PCB as megaline ROM_IGNORE( 0x8000 ) ROM_REGION( 0x200, "proms", 0 ) - ROM_LOAD( "tbp24s10n.f4", 0x0000, 0x0100, CRC(d864b6f1) SHA1(6edc1941fe49cf53f073bf4acc466cd28b788146) ) - ROM_LOAD( "tbp24s10n.h4", 0x0100, 0x0100, CRC(4acd5887) SHA1(dca1187a74d9f4abc53b77a1590ec726f682dd91) ) + ROM_LOAD( "tbp24s10n.h4", 0x0000, 0x0100, CRC(4acd5887) SHA1(dca1187a74d9f4abc53b77a1590ec726f682dd91) ) + ROM_LOAD( "tbp24s10n.f4", 0x0100, 0x0100, CRC(d864b6f1) SHA1(6edc1941fe49cf53f073bf4acc466cd28b788146) ) ROM_REGION( 0x100, "proms2", 0 ) ROM_LOAD( "tbp18s030n.j4", 0x0000, 0x0020, CRC(abda0acb) SHA1(b1781f4c2a54e40eb83ea315d23b3f3f0019aaf8) ) @@ -23526,8 +23561,8 @@ ROM_START( skillcha ) // same PCB as megaline ROM_IGNORE( 0x8000 ) ROM_REGION( 0x200, "proms", 0 ) - ROM_LOAD( "tbp24s10n.f4", 0x0000, 0x0100, CRC(d864b6f1) SHA1(6edc1941fe49cf53f073bf4acc466cd28b788146) ) - ROM_LOAD( "tbp24s10n.h4", 0x0100, 0x0100, CRC(4acd5887) SHA1(dca1187a74d9f4abc53b77a1590ec726f682dd91) ) + ROM_LOAD( "tbp24s10n.h4", 0x0000, 0x0100, CRC(4acd5887) SHA1(dca1187a74d9f4abc53b77a1590ec726f682dd91) ) + ROM_LOAD( "tbp24s10n.f4", 0x0100, 0x0100, CRC(d864b6f1) SHA1(6edc1941fe49cf53f073bf4acc466cd28b788146) ) ROM_REGION( 0x100, "proms2", 0 ) ROM_LOAD( "tbp18s030n.j4", 0x0000, 0x0020, CRC(abda0acb) SHA1(b1781f4c2a54e40eb83ea315d23b3f3f0019aaf8) ) @@ -25883,7 +25918,7 @@ void cmaster_state::decrypt_ll3() std::swap_ranges(&rom[0x1800], &rom[0x2000], &rom[0x4800]); std::swap_ranges(&rom[0x2800], &rom[0x3000], &rom[0xa800]); std::swap_ranges(&rom[0x6800], &rom[0x7000], &rom[0x9800]); - + } void cmaster_state::init_ll3() // verified with ICE dump @@ -26860,7 +26895,7 @@ void goldstar_state::init_super9() rom[0x0238] = 0x20; // jr nz, $0231 rom[0x0239] = 0xf7; - rom[0xea80] = 0x00; // reels tilemap mask + rom[0xea80] = 0x00; // reels tilemap mask } @@ -27454,7 +27489,7 @@ GAME( 1986, fevercha, feverch, feverch, feverch, goldstar_state, empty_ini GAME( 1986, feverchtw, feverch, feverch, feverch, goldstar_state, empty_init, ROT0, "Yamate", "Fever Chance (W-6, Taiwan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // reels scrolling, I/O // --- Wing W-7 hardware --- -GAME( 1986, skillch, 0, megaline, megaline, wingco_state, init_skch, ROT0, "Wing Co., Ltd.", "Skill Chance (W-7, set 1)", MACHINE_NOT_WORKING ) // not looked at yet +GAMEL( 1986, skillch, 0, megaline, megaline, wingco_state, init_skch, ROT0, "Wing Co., Ltd.", "Skill Chance (W-7, set 1)", MACHINE_NOT_WORKING, layout_cmv4 ) // not looked at yet GAME( 1986, skillcha, skillch, megaline, megaline, wingco_state, empty_init, ROT0, "Wing Co., Ltd.", "Skill Chance (W-7, set 2)", MACHINE_NOT_WORKING ) // " GAME( 1991, megaline, 0, megaline, megaline, wingco_state, empty_init, ROT0, "Fun World", "Mega Lines", MACHINE_NOT_WORKING ) // " |
