trunk/src/mame/drivers/bogeyman.c
| r243008 | r243009 | |
| 13 | 13 | |
| 14 | 14 | #include "emu.h" |
| 15 | 15 | #include "cpu/m6502/m6502.h" |
| 16 | #include "sound/ay8910.h" |
| 16 | 17 | #include "includes/bogeyman.h" |
| 17 | 18 | |
| 18 | 19 | |
| r243008 | r243009 | |
| 20 | 21 | |
| 21 | 22 | // Sound section is copied from Mysterious Stones driver by Nicola, Mike, Brad |
| 22 | 23 | |
| 23 | | WRITE8_MEMBER(bogeyman_state::ay8910_latch_w) |
| 24 | WRITE8_MEMBER(bogeyman_state::bogeyman_8910_latch_w) |
| 24 | 25 | { |
| 25 | 26 | m_psg_latch = data; |
| 26 | 27 | } |
| 27 | 28 | |
| 28 | | WRITE8_MEMBER(bogeyman_state::ay8910_control_w) |
| 29 | WRITE8_MEMBER(bogeyman_state::bogeyman_8910_control_w) |
| 29 | 30 | { |
| 30 | 31 | // bit 0 is flipscreen |
| 31 | 32 | flip_screen_set(data & 0x01); |
| 32 | 33 | |
| 33 | 34 | // bit 5 goes to 8910 #0 BDIR pin |
| 34 | 35 | if ((m_last_write & 0x20) == 0x20 && (data & 0x20) == 0x00) |
| 35 | | m_ay1->data_address_w(space, m_last_write >> 4, m_psg_latch); |
| 36 | machine().device<ay8910_device>("ay1")->data_address_w(space, m_last_write >> 4, m_psg_latch); |
| 36 | 37 | |
| 37 | 38 | // bit 7 goes to 8910 #1 BDIR pin |
| 38 | 39 | if ((m_last_write & 0x80) == 0x80 && (data & 0x80) == 0x00) |
| 39 | | m_ay2->data_address_w(space, m_last_write >> 6, m_psg_latch); |
| 40 | machine().device<ay8910_device>("ay2")->data_address_w(space, m_last_write >> 6, m_psg_latch); |
| 40 | 41 | |
| 41 | 42 | m_last_write = data; |
| 42 | 43 | } |
| r243008 | r243009 | |
| 45 | 46 | |
| 46 | 47 | static ADDRESS_MAP_START( bogeyman_map, AS_PROGRAM, 8, bogeyman_state ) |
| 47 | 48 | AM_RANGE(0x0000, 0x17ff) AM_RAM |
| 48 | | AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") |
| 49 | | AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2") |
| 50 | | AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") |
| 51 | | AM_RANGE(0x2100, 0x21ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") |
| 49 | AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(bogeyman_videoram2_w) AM_SHARE("videoram2") |
| 50 | AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(bogeyman_colorram2_w) AM_SHARE("colorram2") |
| 51 | AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(bogeyman_videoram_w) AM_SHARE("videoram") |
| 52 | AM_RANGE(0x2100, 0x21ff) AM_RAM_WRITE(bogeyman_colorram_w) AM_SHARE("colorram") |
| 52 | 53 | AM_RANGE(0x2800, 0x2bff) AM_RAM AM_SHARE("spriteram") |
| 53 | | AM_RANGE(0x3000, 0x300f) AM_RAM_WRITE(paletteram_w) AM_SHARE("palette") |
| 54 | | AM_RANGE(0x3800, 0x3800) AM_READ_PORT("P1") AM_WRITE(ay8910_control_w) |
| 55 | | AM_RANGE(0x3801, 0x3801) AM_READ_PORT("P2") AM_WRITE(ay8910_latch_w) |
| 54 | AM_RANGE(0x3000, 0x300f) AM_RAM_WRITE(bogeyman_paletteram_w) AM_SHARE("palette") |
| 55 | AM_RANGE(0x3800, 0x3800) AM_READ_PORT("P1") AM_WRITE(bogeyman_8910_control_w) |
| 56 | AM_RANGE(0x3801, 0x3801) AM_READ_PORT("P2") AM_WRITE(bogeyman_8910_latch_w) |
| 56 | 57 | AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW1") |
| 57 | 58 | AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW2") AM_WRITENOP // ??? sound |
| 58 | 59 | AM_RANGE(0x4000, 0xffff) AM_ROM |
| r243008 | r243009 | |
| 204 | 205 | { |
| 205 | 206 | save_item(NAME(m_psg_latch)); |
| 206 | 207 | save_item(NAME(m_last_write)); |
| 207 | | save_item(NAME(m_colbank)); |
| 208 | 208 | } |
| 209 | 209 | |
| 210 | 210 | void bogeyman_state::machine_reset() |
| 211 | 211 | { |
| 212 | 212 | m_psg_latch = 0; |
| 213 | 213 | m_last_write = 0; |
| 214 | | m_colbank = 0; |
| 215 | 214 | } |
| 216 | 215 | |
| 217 | | WRITE8_MEMBER(bogeyman_state::colbank_w) |
| 216 | WRITE8_MEMBER(bogeyman_state::bogeyman_colbank_w) |
| 218 | 217 | { |
| 219 | 218 | if((data & 1) != (m_colbank & 1)) |
| 220 | 219 | { |
| r243008 | r243009 | |
| 238 | 237 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) |
| 239 | 238 | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 240 | 239 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) |
| 241 | | MCFG_SCREEN_UPDATE_DRIVER(bogeyman_state, screen_update) |
| 240 | MCFG_SCREEN_UPDATE_DRIVER(bogeyman_state, screen_update_bogeyman) |
| 242 | 241 | MCFG_SCREEN_PALETTE("palette") |
| 243 | 242 | |
| 244 | 243 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", bogeyman) |
| r243008 | r243009 | |
| 250 | 249 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 251 | 250 | |
| 252 | 251 | MCFG_SOUND_ADD("ay1", AY8910, 1500000) /* Verified */ |
| 253 | | MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(bogeyman_state, colbank_w)) |
| 252 | MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(bogeyman_state, bogeyman_colbank_w)) |
| 254 | 253 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 255 | 254 | |
| 256 | 255 | MCFG_SOUND_ADD("ay2", AY8910, 1500000) /* Verified */ |
trunk/src/mame/drivers/m58.c
| r243008 | r243009 | |
| 26 | 26 | |
| 27 | 27 | static ADDRESS_MAP_START( yard_map, AS_PROGRAM, 8, m58_state ) |
| 28 | 28 | AM_RANGE(0x0000, 0x5fff) AM_ROM |
| 29 | | AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") |
| 30 | | AM_RANGE(0x9000, 0x9fff) AM_WRITE(scroll_panel_w) |
| 29 | AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(yard_videoram_w) AM_SHARE("videoram") |
| 30 | AM_RANGE(0x9000, 0x9fff) AM_WRITE(yard_scroll_panel_w) |
| 31 | 31 | AM_RANGE(0xc820, 0xc87f) AM_RAM AM_SHARE("spriteram") |
| 32 | 32 | AM_RANGE(0xa000, 0xa000) AM_RAM AM_SHARE("scroll_x_low") |
| 33 | 33 | AM_RANGE(0xa200, 0xa200) AM_RAM AM_SHARE("scroll_x_high") |
| 34 | 34 | AM_RANGE(0xa400, 0xa400) AM_RAM AM_SHARE("scroll_y_low") |
| 35 | 35 | AM_RANGE(0xa800, 0xa800) AM_RAM AM_SHARE("score_disable") |
| 36 | 36 | AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w) |
| 37 | | AM_RANGE(0xd001, 0xd001) AM_WRITE(flipscreen_w) /* + coin counters */ |
| 37 | AM_RANGE(0xd001, 0xd001) AM_WRITE(yard_flipscreen_w) /* + coin counters */ |
| 38 | 38 | AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0") |
| 39 | 39 | AM_RANGE(0xd001, 0xd001) AM_READ_PORT("IN1") |
| 40 | 40 | AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN2") |
| r243008 | r243009 | |
| 203 | 203 | |
| 204 | 204 | MCFG_SCREEN_ADD("screen", RASTER) |
| 205 | 205 | MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 256, 282, 42, 266) |
| 206 | | MCFG_SCREEN_UPDATE_DRIVER(m58_state, screen_update) |
| 206 | MCFG_SCREEN_UPDATE_DRIVER(m58_state, screen_update_yard) |
| 207 | 207 | MCFG_SCREEN_PALETTE("palette") |
| 208 | 208 | |
| 209 | 209 | /* sound hardware */ |
trunk/src/mame/drivers/mappy.c
| r243008 | r243009 | |
| 2462 | 2462 | |
| 2463 | 2463 | /* 3x6809, static tilemap, 2bpp sprites (Gaplus type) */ |
| 2464 | 2464 | GAME( 1983, phozon, 0, phozon, phozon, mappy_state, phozon, ROT90, "Namco", "Phozon (Japan)", GAME_SUPPORTS_SAVE ) |
| 2465 | | GAME( 1983, phozons, phozon, phozon, phozon, mappy_state, phozon, ROT90, "Namco (Sidam license)", "Phozon (Sidam)", GAME_SUPPORTS_SAVE ) |
| 2465 | GAME( 1983, phozons, phozon, phozon, phozon, mappy_state, phozon, ROT90, "bootleg? (Sidam)", "Phozon (Sidam)", GAME_SUPPORTS_SAVE ) |
| 2466 | 2466 | |
| 2467 | 2467 | /* 2x6809, scroling tilemap, 4bpp sprites (Super Pacman type) */ |
| 2468 | 2468 | GAME( 1983, mappy, 0, mappy, mappy, mappy_state, mappy, ROT90, "Namco", "Mappy (US)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/pacman.c
| r243008 | r243009 | |
| 6616 | 6616 | membank("bank1")->set_entry(1); |
| 6617 | 6617 | } |
| 6618 | 6618 | |
| 6619 | | DRIVER_INIT_MEMBER(pacman_state, mschamp) |
| 6620 | | { |
| 6621 | | save_item(NAME(m_counter)); |
| 6622 | | } |
| 6623 | | |
| 6624 | 6619 | DRIVER_INIT_MEMBER(pacman_state,woodpek) |
| 6625 | 6620 | { |
| 6626 | 6621 | int i, len; |
| r243008 | r243009 | |
| 6849 | 6844 | GAME( 1981, mspacii2, mspacman, woodpek, mspacman, pacman_state, mspacii, ROT90, "bootleg (Orca)", "Ms. Pac-Man II (Orca bootleg set 2)", GAME_SUPPORTS_SAVE ) |
| 6850 | 6845 | GAME( 1981, pacgal, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "hack", "Pac-Gal", GAME_SUPPORTS_SAVE ) |
| 6851 | 6846 | GAME( 1981, mspacpls, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "hack", "Ms. Pac-Man Plus", GAME_SUPPORTS_SAVE ) |
| 6852 | | GAME( 1992, mschamp, mspacman, mschamp, mschamp, pacman_state, mschamp, ROT90, "hack", "Ms. Pacman Champion Edition / Zola-Puc Gal", GAME_SUPPORTS_SAVE ) /* Rayglo version */ |
| 6853 | | GAME( 1995, mschamps, mspacman, mschamp, mschamp, pacman_state, mschamp, ROT90, "hack", "Ms. Pacman Champion Edition / Super Zola-Puc Gal", GAME_SUPPORTS_SAVE ) |
| 6847 | GAME( 1992, mschamp, mspacman, mschamp, mschamp, driver_device, 0, ROT90, "hack", "Ms. Pacman Champion Edition / Zola-Puc Gal", GAME_SUPPORTS_SAVE ) /* Rayglo version */ |
| 6848 | GAME( 1995, mschamps, mspacman, mschamp, mschamp, driver_device, 0, ROT90, "hack", "Ms. Pacman Champion Edition / Super Zola-Puc Gal", GAME_SUPPORTS_SAVE ) |
| 6854 | 6849 | |
| 6855 | 6850 | // These bootlegs have MADE IN GREECE clearly visible and etched into the PCBs. They were very common in Spain with several operators having their own versions. |
| 6856 | 6851 | // Based on the PCBs and copyright dates shown they were produced late 80s / early 90s. Usually they run a version of Ms. Pacman, but were sometimes converted back to regular Pac-Man |
trunk/src/mame/includes/bogeyman.h
| r243008 | r243009 | |
| 4 | 4 | |
| 5 | 5 | *************************************************************************/ |
| 6 | 6 | |
| 7 | | #include "sound/ay8910.h" |
| 8 | | |
| 9 | 7 | class bogeyman_state : public driver_device |
| 10 | 8 | { |
| 11 | 9 | public: |
| 12 | 10 | bogeyman_state(const machine_config &mconfig, device_type type, const char *tag) |
| 13 | 11 | : driver_device(mconfig, type, tag), |
| 14 | | m_maincpu(*this, "maincpu"), |
| 15 | | m_gfxdecode(*this, "gfxdecode"), |
| 16 | | m_palette(*this, "palette"), |
| 17 | | m_ay1(*this, "ay1"), |
| 18 | | m_ay2(*this, "ay2"), |
| 19 | 12 | m_videoram(*this, "videoram"), |
| 20 | 13 | m_videoram2(*this, "videoram2"), |
| 21 | 14 | m_colorram(*this, "colorram"), |
| 22 | 15 | m_colorram2(*this, "colorram2"), |
| 23 | | m_spriteram(*this, "spriteram") { } |
| 24 | | |
| 25 | | /* devices */ |
| 26 | | required_device<cpu_device> m_maincpu; |
| 27 | | required_device<gfxdecode_device> m_gfxdecode; |
| 28 | | required_device<palette_device> m_palette; |
| 29 | | required_device<ay8910_device> m_ay1; |
| 30 | | required_device<ay8910_device> m_ay2; |
| 31 | | |
| 16 | m_spriteram(*this, "spriteram"), |
| 17 | m_maincpu(*this, "maincpu"), |
| 18 | m_gfxdecode(*this, "gfxdecode"), |
| 19 | m_palette(*this, "palette") { } |
| 20 | |
| 32 | 21 | /* memory pointers */ |
| 33 | 22 | required_shared_ptr<UINT8> m_videoram; |
| 34 | 23 | required_shared_ptr<UINT8> m_videoram2; |
| r243008 | r243009 | |
| 45 | 34 | int m_psg_latch; |
| 46 | 35 | int m_last_write; |
| 47 | 36 | int m_colbank; |
| 48 | | |
| 49 | | DECLARE_WRITE8_MEMBER(ay8910_latch_w); |
| 50 | | DECLARE_WRITE8_MEMBER(ay8910_control_w); |
| 51 | | DECLARE_WRITE8_MEMBER(videoram_w); |
| 52 | | DECLARE_WRITE8_MEMBER(colorram_w); |
| 53 | | DECLARE_WRITE8_MEMBER(videoram2_w); |
| 54 | | DECLARE_WRITE8_MEMBER(colorram2_w); |
| 55 | | DECLARE_WRITE8_MEMBER(paletteram_w); |
| 56 | | DECLARE_WRITE8_MEMBER(colbank_w); |
| 57 | | |
| 37 | DECLARE_WRITE8_MEMBER(bogeyman_8910_latch_w); |
| 38 | DECLARE_WRITE8_MEMBER(bogeyman_8910_control_w); |
| 39 | DECLARE_WRITE8_MEMBER(bogeyman_videoram_w); |
| 40 | DECLARE_WRITE8_MEMBER(bogeyman_colorram_w); |
| 41 | DECLARE_WRITE8_MEMBER(bogeyman_videoram2_w); |
| 42 | DECLARE_WRITE8_MEMBER(bogeyman_colorram2_w); |
| 43 | DECLARE_WRITE8_MEMBER(bogeyman_paletteram_w); |
| 44 | DECLARE_WRITE8_MEMBER(bogeyman_colbank_w); |
| 58 | 45 | TILE_GET_INFO_MEMBER(get_bg_tile_info); |
| 59 | 46 | TILE_GET_INFO_MEMBER(get_fg_tile_info); |
| 60 | | |
| 61 | 47 | virtual void machine_start(); |
| 62 | 48 | virtual void machine_reset(); |
| 63 | 49 | virtual void video_start(); |
| 64 | | |
| 65 | 50 | DECLARE_PALETTE_INIT(bogeyman); |
| 66 | | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 67 | | void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 51 | UINT32 screen_update_bogeyman(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 52 | void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); |
| 53 | required_device<cpu_device> m_maincpu; |
| 54 | required_device<gfxdecode_device> m_gfxdecode; |
| 55 | required_device<palette_device> m_palette; |
| 68 | 56 | }; |
trunk/src/mame/includes/m58.h
| r243008 | r243009 | |
| 3 | 3 | public: |
| 4 | 4 | m58_state(const machine_config &mconfig, device_type type, const char *tag) |
| 5 | 5 | : driver_device(mconfig, type, tag), |
| 6 | m_videoram(*this, "videoram"), |
| 7 | m_spriteram(*this, "spriteram"), |
| 8 | m_yard_scroll_x_low(*this, "scroll_x_low"), |
| 9 | m_yard_scroll_x_high(*this, "scroll_x_high"), |
| 10 | m_yard_scroll_y_low(*this, "scroll_y_low"), |
| 11 | m_yard_score_panel_disabled(*this, "score_disable"), |
| 6 | 12 | m_maincpu(*this, "maincpu"), |
| 7 | 13 | m_gfxdecode(*this, "gfxdecode"), |
| 8 | 14 | m_screen(*this, "screen"), |
| 9 | | m_palette(*this, "palette"), |
| 10 | | m_videoram(*this, "videoram"), |
| 11 | | m_spriteram(*this, "spriteram"), |
| 12 | | m_scroll_x_low(*this, "scroll_x_low"), |
| 13 | | m_scroll_x_high(*this, "scroll_x_high"), |
| 14 | | m_scroll_y_low(*this, "scroll_y_low"), |
| 15 | | m_score_panel_disabled(*this, "score_disable") { } |
| 16 | | |
| 17 | | /* devices */ |
| 18 | | required_device<cpu_device> m_maincpu; |
| 19 | | required_device<gfxdecode_device> m_gfxdecode; |
| 20 | | required_device<screen_device> m_screen; |
| 21 | | required_device<palette_device> m_palette; |
| 22 | | |
| 15 | m_palette(*this, "palette") { } |
| 16 | |
| 23 | 17 | /* memory pointers */ |
| 24 | 18 | required_shared_ptr<UINT8> m_videoram; |
| 25 | 19 | required_shared_ptr<UINT8> m_spriteram; |
| 26 | | required_shared_ptr<UINT8> m_scroll_x_low; |
| 27 | | required_shared_ptr<UINT8> m_scroll_x_high; |
| 28 | | required_shared_ptr<UINT8> m_scroll_y_low; |
| 29 | | required_shared_ptr<UINT8> m_score_panel_disabled; |
| 30 | 20 | |
| 31 | 21 | /* video-related */ |
| 32 | 22 | tilemap_t* m_bg_tilemap; |
| 33 | | bitmap_ind16 m_scroll_panel_bitmap; |
| 34 | | |
| 35 | | DECLARE_WRITE8_MEMBER(videoram_w); |
| 36 | | DECLARE_WRITE8_MEMBER(scroll_panel_w); |
| 37 | | DECLARE_WRITE8_MEMBER(flipscreen_w); |
| 38 | | |
| 23 | |
| 24 | required_shared_ptr<UINT8> m_yard_scroll_x_low; |
| 25 | required_shared_ptr<UINT8> m_yard_scroll_x_high; |
| 26 | required_shared_ptr<UINT8> m_yard_scroll_y_low; |
| 27 | required_shared_ptr<UINT8> m_yard_score_panel_disabled; |
| 28 | bitmap_ind16 *m_scroll_panel_bitmap; |
| 29 | DECLARE_WRITE8_MEMBER(yard_videoram_w); |
| 30 | DECLARE_WRITE8_MEMBER(yard_scroll_panel_w); |
| 31 | DECLARE_WRITE8_MEMBER(yard_flipscreen_w); |
| 39 | 32 | DECLARE_DRIVER_INIT(yard85); |
| 33 | TILE_GET_INFO_MEMBER(yard_get_bg_tile_info); |
| 34 | TILEMAP_MAPPER_MEMBER(yard_tilemap_scan_rows); |
| 40 | 35 | virtual void video_start(); |
| 41 | 36 | DECLARE_PALETTE_INIT(m58); |
| 42 | | |
| 43 | | TILE_GET_INFO_MEMBER(get_bg_tile_info); |
| 44 | | TILEMAP_MAPPER_MEMBER(tilemap_scan_rows); |
| 45 | | |
| 46 | | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 37 | UINT32 screen_update_yard(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 47 | 38 | void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ); |
| 48 | 39 | void draw_panel( bitmap_ind16 &bitmap, const rectangle &cliprect ); |
| 40 | required_device<cpu_device> m_maincpu; |
| 41 | required_device<gfxdecode_device> m_gfxdecode; |
| 42 | required_device<screen_device> m_screen; |
| 43 | required_device<palette_device> m_palette; |
| 49 | 44 | }; |
trunk/src/mame/video/bogeyman.c
| r243008 | r243009 | |
| 36 | 36 | } |
| 37 | 37 | } |
| 38 | 38 | |
| 39 | | WRITE8_MEMBER(bogeyman_state::videoram_w) |
| 39 | WRITE8_MEMBER(bogeyman_state::bogeyman_videoram_w) |
| 40 | 40 | { |
| 41 | 41 | m_videoram[offset] = data; |
| 42 | 42 | m_bg_tilemap->mark_tile_dirty(offset); |
| 43 | 43 | } |
| 44 | 44 | |
| 45 | | WRITE8_MEMBER(bogeyman_state::colorram_w) |
| 45 | WRITE8_MEMBER(bogeyman_state::bogeyman_colorram_w) |
| 46 | 46 | { |
| 47 | 47 | m_colorram[offset] = data; |
| 48 | 48 | m_bg_tilemap->mark_tile_dirty(offset); |
| 49 | 49 | } |
| 50 | 50 | |
| 51 | | WRITE8_MEMBER(bogeyman_state::videoram2_w) |
| 51 | WRITE8_MEMBER(bogeyman_state::bogeyman_videoram2_w) |
| 52 | 52 | { |
| 53 | 53 | m_videoram2[offset] = data; |
| 54 | 54 | m_fg_tilemap->mark_tile_dirty(offset); |
| 55 | 55 | } |
| 56 | 56 | |
| 57 | | WRITE8_MEMBER(bogeyman_state::colorram2_w) |
| 57 | WRITE8_MEMBER(bogeyman_state::bogeyman_colorram2_w) |
| 58 | 58 | { |
| 59 | 59 | m_colorram2[offset] = data; |
| 60 | 60 | m_fg_tilemap->mark_tile_dirty(offset); |
| 61 | 61 | } |
| 62 | 62 | |
| 63 | | WRITE8_MEMBER(bogeyman_state::paletteram_w) |
| 63 | WRITE8_MEMBER(bogeyman_state::bogeyman_paletteram_w) |
| 64 | 64 | { |
| 65 | 65 | /* RGB output is inverted */ |
| 66 | 66 | m_palette->write(space, offset, UINT8(~data)); |
| r243008 | r243009 | |
| 94 | 94 | m_fg_tilemap->set_transparent_pen(0); |
| 95 | 95 | } |
| 96 | 96 | |
| 97 | | void bogeyman_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 97 | void bogeyman_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) |
| 98 | 98 | { |
| 99 | | for (int offs = 0; offs < m_spriteram.bytes(); offs += 4) |
| 99 | int offs; |
| 100 | |
| 101 | for (offs = 0; offs < m_spriteram.bytes(); offs += 4) |
| 100 | 102 | { |
| 101 | 103 | int attr = m_spriteram[offs]; |
| 102 | 104 | |
| r243008 | r243009 | |
| 137 | 139 | } |
| 138 | 140 | } |
| 139 | 141 | |
| 140 | | UINT32 bogeyman_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 142 | UINT32 bogeyman_state::screen_update_bogeyman(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 141 | 143 | { |
| 142 | 144 | m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); |
| 143 | 145 | draw_sprites(bitmap, cliprect); |
trunk/src/mame/video/m58.c
| r243008 | r243009 | |
| 102 | 102 | * |
| 103 | 103 | *************************************/ |
| 104 | 104 | |
| 105 | | WRITE8_MEMBER(m58_state::videoram_w) |
| 105 | WRITE8_MEMBER(m58_state::yard_videoram_w) |
| 106 | 106 | { |
| 107 | 107 | m_videoram[offset] = data; |
| 108 | 108 | m_bg_tilemap->mark_tile_dirty(offset / 2); |
| 109 | 109 | } |
| 110 | 110 | |
| 111 | 111 | |
| 112 | | WRITE8_MEMBER(m58_state::scroll_panel_w) |
| 112 | WRITE8_MEMBER(m58_state::yard_scroll_panel_w) |
| 113 | 113 | { |
| 114 | 114 | int sx,sy,i; |
| 115 | 115 | |
| r243008 | r243009 | |
| 128 | 128 | col = (data >> i) & 0x11; |
| 129 | 129 | col = ((col >> 3) | col) & 3; |
| 130 | 130 | |
| 131 | | m_scroll_panel_bitmap.pix16(sy, sx + i) = RADAR_PALETTE_BASE + (sy & 0xfc) + col; |
| 131 | m_scroll_panel_bitmap->pix16(sy, sx + i) = RADAR_PALETTE_BASE + (sy & 0xfc) + col; |
| 132 | 132 | } |
| 133 | 133 | } |
| 134 | 134 | |
| r243008 | r243009 | |
| 140 | 140 | * |
| 141 | 141 | *************************************/ |
| 142 | 142 | |
| 143 | | TILE_GET_INFO_MEMBER(m58_state::get_bg_tile_info) |
| 143 | TILE_GET_INFO_MEMBER(m58_state::yard_get_bg_tile_info) |
| 144 | 144 | { |
| 145 | 145 | int offs = tile_index * 2; |
| 146 | 146 | int attr = m_videoram[offs + 1]; |
| r243008 | r243009 | |
| 152 | 152 | } |
| 153 | 153 | |
| 154 | 154 | |
| 155 | | TILEMAP_MAPPER_MEMBER(m58_state::tilemap_scan_rows) |
| 155 | TILEMAP_MAPPER_MEMBER(m58_state::yard_tilemap_scan_rows) |
| 156 | 156 | { |
| 157 | 157 | /* logical (col,row) -> memory offset */ |
| 158 | 158 | if (col >= 32) |
| r243008 | r243009 | |
| 175 | 175 | int height = m_screen->height(); |
| 176 | 176 | const rectangle &visarea = m_screen->visible_area(); |
| 177 | 177 | |
| 178 | | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m58_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(m58_state::tilemap_scan_rows),this), 8, 8, 64, 32); |
| 178 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m58_state::yard_get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(m58_state::yard_tilemap_scan_rows),this), 8, 8, 64, 32); |
| 179 | 179 | m_bg_tilemap->set_scrolldx(visarea.min_x, width - (visarea.max_x + 1)); |
| 180 | 180 | m_bg_tilemap->set_scrolldy(visarea.min_y - 8, height + 16 - (visarea.max_y + 1)); |
| 181 | 181 | |
| 182 | | //m_scroll_panel_bitmap = auto_bitmap_ind16_alloc(machine(), SCROLL_PANEL_WIDTH, height); |
| 183 | | m_screen->register_screen_bitmap(m_scroll_panel_bitmap); |
| 184 | | save_item(NAME(m_scroll_panel_bitmap)); |
| 182 | m_scroll_panel_bitmap = auto_bitmap_ind16_alloc(machine(), SCROLL_PANEL_WIDTH, height); |
| 185 | 183 | } |
| 186 | 184 | |
| 187 | 185 | |
| r243008 | r243009 | |
| 192 | 190 | * |
| 193 | 191 | *************************************/ |
| 194 | 192 | |
| 195 | | WRITE8_MEMBER(m58_state::flipscreen_w) |
| 193 | WRITE8_MEMBER(m58_state::yard_flipscreen_w) |
| 196 | 194 | { |
| 197 | 195 | /* screen flip is handled both by software and hardware */ |
| 198 | 196 | flip_screen_set((data & 0x01) ^ (~ioport("DSW2")->read() & 0x01)); |
| r243008 | r243009 | |
| 267 | 265 | |
| 268 | 266 | void m58_state::draw_panel( bitmap_ind16 &bitmap, const rectangle &cliprect ) |
| 269 | 267 | { |
| 270 | | if (!*m_score_panel_disabled) |
| 268 | if (!*m_yard_score_panel_disabled) |
| 271 | 269 | { |
| 272 | 270 | const rectangle clippanel(26*8, 32*8-1, 1*8, 31*8-1); |
| 273 | 271 | const rectangle clippanelflip(0*8, 6*8-1, 1*8, 31*8-1); |
| r243008 | r243009 | |
| 280 | 278 | clip.max_y += visarea.max_y + yoffs; |
| 281 | 279 | clip &= cliprect; |
| 282 | 280 | |
| 283 | | copybitmap(bitmap, m_scroll_panel_bitmap, flip_screen(), flip_screen(), |
| 281 | copybitmap(bitmap, *m_scroll_panel_bitmap, flip_screen(), flip_screen(), |
| 284 | 282 | sx, visarea.min_y + yoffs, clip); |
| 285 | 283 | } |
| 286 | 284 | } |
| r243008 | r243009 | |
| 293 | 291 | * |
| 294 | 292 | *************************************/ |
| 295 | 293 | |
| 296 | | UINT32 m58_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 294 | UINT32 m58_state::screen_update_yard(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 297 | 295 | { |
| 298 | | m_bg_tilemap->set_scrollx(0, (*m_scroll_x_high * 0x100) + *m_scroll_x_low); |
| 299 | | m_bg_tilemap->set_scrolly(0, *m_scroll_y_low); |
| 296 | m_bg_tilemap->set_scrollx(0, (*m_yard_scroll_x_high * 0x100) + *m_yard_scroll_x_low); |
| 297 | m_bg_tilemap->set_scrolly(0, *m_yard_scroll_y_low); |
| 300 | 298 | |
| 301 | 299 | m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); |
| 302 | 300 | draw_sprites(bitmap, cliprect); |
trunk/src/mess/drivers/ngen.c
| r243008 | r243009 | |
| 67 | 67 | #include "machine/pit8253.h" |
| 68 | 68 | #include "machine/z80dart.h" |
| 69 | 69 | #include "machine/wd_fdc.h" |
| 70 | | #include "machine/wd2010.h" |
| 71 | 70 | #include "bus/rs232/rs232.h" |
| 72 | 71 | #include "machine/ngen_kb.h" |
| 73 | 72 | #include "machine/clock.h" |
| 74 | | #include "imagedev/harddriv.h" |
| 75 | 73 | |
| 76 | 74 | class ngen_state : public driver_device |
| 77 | 75 | { |
| r243008 | r243009 | |
| 91 | 89 | m_fdc(*this,"fdc"), |
| 92 | 90 | m_fd0(*this,"fdc:0"), |
| 93 | 91 | m_fdc_timer(*this,"fdc_timer"), |
| 94 | | m_hdc(*this,"hdc"), |
| 95 | | m_hdc_timer(*this,"hdc_timer"), |
| 96 | | m_hd_buffer(*this,"hd_buffer_ram") |
| 92 | m_hdc_timer(*this,"hdc_timer") |
| 97 | 93 | {} |
| 98 | 94 | |
| 99 | 95 | DECLARE_WRITE_LINE_MEMBER(pit_out0_w); |
| r243008 | r243009 | |
| 133 | 129 | DECLARE_READ8_MEMBER(irq_cb); |
| 134 | 130 | DECLARE_WRITE8_MEMBER(hdc_control_w); |
| 135 | 131 | DECLARE_WRITE8_MEMBER(disk_addr_ext); |
| 136 | | DECLARE_READ8_MEMBER(hd_buffer_r); |
| 137 | | DECLARE_WRITE8_MEMBER(hd_buffer_w); |
| 138 | 132 | |
| 139 | 133 | protected: |
| 140 | 134 | virtual void machine_reset(); |
| 141 | | virtual void machine_start(); |
| 142 | 135 | |
| 143 | 136 | private: |
| 144 | 137 | required_device<i80186_cpu_device> m_maincpu; |
| r243008 | r243009 | |
| 154 | 147 | optional_device<wd2797_t> m_fdc; |
| 155 | 148 | optional_device<floppy_connector> m_fd0; |
| 156 | 149 | optional_device<pit8253_device> m_fdc_timer; |
| 157 | | optional_device<wd2010_device> m_hdc; |
| 158 | 150 | optional_device<pit8253_device> m_hdc_timer; |
| 159 | | optional_shared_ptr<UINT8> m_hd_buffer; |
| 160 | 151 | |
| 161 | 152 | void set_dma_channel(int channel, int state); |
| 162 | 153 | |
| r243008 | r243009 | |
| 479 | 470 | case 0x0a: |
| 480 | 471 | case 0x0b: |
| 481 | 472 | if(mem_mask & 0x00ff) |
| 482 | | m_fdc_timer->write(space,offset-0x08,data & 0xff); |
| 473 | m_fdc_timer->write(space,offset,data & 0xff); |
| 483 | 474 | break; |
| 484 | 475 | case 0x10: |
| 485 | 476 | case 0x11: |
| r243008 | r243009 | |
| 489 | 480 | case 0x15: |
| 490 | 481 | case 0x16: |
| 491 | 482 | case 0x17: |
| 492 | | if(mem_mask & 0x00ff) |
| 493 | | m_hdc->write(space,offset-0x10,data & 0xff); |
| 494 | 483 | logerror("WD1010 register %i write %02x mask %04x\n",offset-0x10,data & 0xff,mem_mask); |
| 495 | 484 | break; |
| 496 | 485 | case 0x18: |
| r243008 | r243009 | |
| 498 | 487 | case 0x1a: |
| 499 | 488 | case 0x1b: |
| 500 | 489 | if(mem_mask & 0x00ff) |
| 501 | | m_hdc_timer->write(space,offset-0x18,data & 0xff); |
| 490 | m_hdc_timer->write(space,offset,data & 0xff); |
| 502 | 491 | break; |
| 503 | 492 | } |
| 504 | 493 | } |
| r243008 | r243009 | |
| 521 | 510 | case 0x0a: |
| 522 | 511 | case 0x0b: |
| 523 | 512 | if(mem_mask & 0x00ff) |
| 524 | | ret = m_fdc_timer->read(space,offset-0x08); |
| 513 | ret = m_fdc_timer->read(space,offset); |
| 525 | 514 | break; |
| 526 | 515 | case 0x10: |
| 527 | 516 | case 0x11: |
| r243008 | r243009 | |
| 531 | 520 | case 0x15: |
| 532 | 521 | case 0x16: |
| 533 | 522 | case 0x17: |
| 534 | | if(mem_mask & 0x00ff) |
| 535 | | ret = m_hdc->read(space,offset-0x10); |
| 536 | 523 | logerror("WD1010 register %i read, mask %04x\n",offset-0x10,mem_mask); |
| 537 | 524 | break; |
| 538 | 525 | case 0x18: |
| r243008 | r243009 | |
| 540 | 527 | case 0x1a: |
| 541 | 528 | case 0x1b: |
| 542 | 529 | if(mem_mask & 0x00ff) |
| 543 | | ret = m_hdc_timer->read(space,offset-0x18); |
| 530 | ret = m_hdc_timer->read(space,offset); |
| 544 | 531 | break; |
| 545 | 532 | } |
| 546 | 533 | |
| r243008 | r243009 | |
| 598 | 585 | m_disk_page = data & 0x7f; |
| 599 | 586 | } |
| 600 | 587 | |
| 601 | | READ8_MEMBER(ngen_state::hd_buffer_r) |
| 602 | | { |
| 603 | | return m_hd_buffer[offset]; |
| 604 | | } |
| 605 | | |
| 606 | | WRITE8_MEMBER(ngen_state::hd_buffer_w) |
| 607 | | { |
| 608 | | m_hd_buffer[offset] = data; |
| 609 | | } |
| 610 | | |
| 611 | 588 | WRITE_LINE_MEMBER( ngen_state::dma_hrq_changed ) |
| 612 | 589 | { |
| 613 | 590 | m_maincpu->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); |
| r243008 | r243009 | |
| 626 | 603 | { |
| 627 | 604 | if(state) |
| 628 | 605 | { |
| 629 | | if(m_hdc_control & 0x04) // ROM transfer |
| 606 | if(m_hdc_control & 0x04) // ROM transfer? |
| 630 | 607 | m_hdc_control &= ~0x04; // switch it off when done |
| 631 | 608 | } |
| 632 | 609 | } |
| r243008 | r243009 | |
| 712 | 689 | return m_pic->acknowledge(); |
| 713 | 690 | } |
| 714 | 691 | |
| 715 | | void ngen_state::machine_start() |
| 716 | | { |
| 717 | | m_hd_buffer.allocate(1024*8); // 8kB buffer RAM for HD controller |
| 718 | | } |
| 719 | | |
| 720 | 692 | void ngen_state::machine_reset() |
| 721 | 693 | { |
| 722 | 694 | m_port00 = 0; |
| r243008 | r243009 | |
| 865 | 837 | MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE("maincpu",i80186_cpu_device,drq1_w)) |
| 866 | 838 | MCFG_WD_FDC_FORCE_READY |
| 867 | 839 | MCFG_DEVICE_ADD("fdc_timer", PIT8253, 0) |
| 868 | | MCFG_PIT8253_CLK0(XTAL_20MHz / 20) |
| 869 | | MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("pic",pic8259_device,ir7_w)) // clocked on FDC data register access |
| 840 | MCFG_PIT8253_CLK0(XTAL_20MHz / 20) |
| 841 | MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("pic",pic8259_device,ir7_w)) |
| 870 | 842 | MCFG_PIT8253_CLK1(XTAL_20MHz / 20) |
| 871 | | MCFG_PIT8253_OUT1_HANDLER(DEVWRITELINE("pic",pic8259_device,ir7_w)) // 1MHz |
| 872 | | MCFG_PIT8253_CLK2(XTAL_20MHz / 10) |
| 873 | | MCFG_PIT8253_OUT2_HANDLER(DEVWRITELINE("pic",pic8259_device,ir7_w)) |
| 874 | | // TODO: WD1010 HDC (not implemented), use WD2010 for now |
| 875 | | MCFG_DEVICE_ADD("hdc", WD2010, XTAL_20MHz / 4) |
| 876 | | MCFG_WD2010_IN_BCS_CB(READ8(ngen_state,hd_buffer_r)) |
| 877 | | MCFG_WD2010_OUT_BCS_CB(WRITE8(ngen_state,hd_buffer_w)) |
| 878 | | MCFG_WD2010_IN_DRDY_CB(VCC) |
| 879 | | MCFG_WD2010_IN_INDEX_CB(VCC) |
| 880 | | MCFG_WD2010_IN_WF_CB(VCC) |
| 881 | | MCFG_WD2010_IN_TK000_CB(VCC) |
| 882 | | MCFG_WD2010_IN_SC_CB(VCC) |
| 843 | MCFG_PIT8253_OUT1_HANDLER(DEVWRITELINE("pic",pic8259_device,ir7_w)) |
| 844 | MCFG_PIT8253_CLK2(XTAL_20MHz / 20) |
| 845 | MCFG_PIT8253_OUT2_HANDLER(DEVWRITELINE("pic",pic8259_device,ir7_w)) |
| 846 | // TODO: WD1010 HDC (not implemented) |
| 883 | 847 | MCFG_DEVICE_ADD("hdc_timer", PIT8253, 0) |
| 884 | | MCFG_PIT8253_CLK2(XTAL_20MHz / 10) // 2MHz |
| 885 | 848 | MCFG_FLOPPY_DRIVE_ADD("fdc:0", ngen_floppies, "525qd", floppy_image_device::default_floppy_formats) |
| 886 | | MCFG_HARDDISK_ADD("hard0") |
| 887 | 849 | |
| 888 | 850 | MACHINE_CONFIG_END |
| 889 | 851 | |
trunk/src/mess/drivers/splitsec.c
| r243008 | r243009 | |
| 4 | 4 | |
| 5 | 5 | Parker Brothers Split Second |
| 6 | 6 | * TMS1400NLL MP7314-N2 (die labeled MP7314) |
| 7 | | |
| 8 | | This is an electronic handheld reflex gaming device, it's straightforward |
| 9 | | to use. The included mini-games are: |
| 10 | | 1, 2, 3: Mad Maze* |
| 11 | | 4, 5: Space Attack* |
| 12 | | 6: Auto Cross |
| 13 | | 7: Stomp |
| 14 | | 8: Speedball |
| 15 | | |
| 16 | | *: higher number indicates harder difficulty |
| 17 | 7 | |
| 18 | 8 | |
| 19 | | TODO: |
| 20 | | - MCU clock is unknown |
| 21 | | |
| 22 | 9 | ***************************************************************************/ |
| 23 | 10 | |
| 24 | 11 | #include "emu.h" |
| r243008 | r243009 | |
| 27 | 14 | |
| 28 | 15 | #include "splitsec.lh" |
| 29 | 16 | |
| 30 | | // The master clock is a single stage RC oscillator: R=24K, C=100pf, |
| 31 | | // according to the TMS 1000 series data manual this is around 375kHz. |
| 32 | | // However, this sounds too low-pitched and runs too slow when compared |
| 33 | | // to recordings, maybe the RC osc curve is different for TMS1400? |
| 17 | // master clock is a single stage RC oscillator: R=24K, C=100pf, |
| 18 | // according to the TMS 1000 series data manual this is around 375kHz |
| 19 | #define MASTER_CLOCK (375000) |
| 34 | 20 | |
| 35 | | // so for now, the value below is an approximation |
| 36 | | #define MASTER_CLOCK (485000) |
| 37 | 21 | |
| 38 | | |
| 39 | 22 | class splitsec_state : public driver_device |
| 40 | 23 | { |
| 41 | 24 | public: |
| r243008 | r243009 | |
| 177 | 160 | |
| 178 | 161 | static INPUT_PORTS_START( splitsec ) |
| 179 | 162 | PORT_START("IN.0") // R9 |
| 180 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY |
| 181 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY |
| 182 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY |
| 163 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) |
| 164 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) |
| 165 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) |
| 183 | 166 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 184 | 167 | |
| 185 | 168 | PORT_START("IN.1") // R10 |
| 186 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY |
| 169 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) |
| 187 | 170 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Select") |
| 188 | 171 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Start") |
| 189 | 172 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| r243008 | r243009 | |
| 247 | 230 | |
| 248 | 231 | ROM_START( splitsec ) |
| 249 | 232 | ROM_REGION( 0x1000, "maincpu", 0 ) |
| 250 | | ROM_LOAD( "tms1400nll_mp7314", 0x0000, 0x1000, CRC(e94b2098) SHA1(f0fc1f56a829252185592a2508740354c50bedf8) ) |
| 233 | ROM_LOAD( "tms1400nll_mp7314", 0x0000, 0x1000, CRC(0cccdf59) SHA1(06a533134a433aaf856b80f0ca239d0498b98d5f) ) |
| 251 | 234 | |
| 252 | 235 | ROM_REGION( 867, "maincpu:mpla", 0 ) |
| 253 | 236 | ROM_LOAD( "tms1100_default_mpla.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) |
| r243008 | r243009 | |
| 256 | 239 | ROM_END |
| 257 | 240 | |
| 258 | 241 | |
| 259 | | CONS( 1980, splitsec, 0, 0, splitsec, splitsec, driver_device, 0, "Parker Brothers", "Split Second", GAME_SUPPORTS_SAVE ) |
| 242 | CONS( 1980, splitsec, 0, 0, splitsec, splitsec, driver_device, 0, "Parker Brothers", "Split Second", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING ) |
trunk/src/mess/layout/splitsec.lay
| r243008 | r243009 | |
| 25 | 25 | |
| 26 | 26 | <!-- maze of lamps --> |
| 27 | 27 | |
| 28 | | <bezel name="lamp0" element="lamp_rect"><bounds x="2" y="1" width="4" height="1" /></bezel> |
| 29 | | <bezel name="lamp2" element="lamp_rect"><bounds x="7" y="1" width="4" height="1" /></bezel> |
| 30 | | <bezel name="lamp4" element="lamp_rect"><bounds x="12" y="1" width="4" height="1" /></bezel> |
| 28 | <bezel name="lamp6" element="lamp_rect"><bounds x="2" y="1" width="4" height="1" /></bezel> |
| 29 | <bezel name="lamp4" element="lamp_rect"><bounds x="7" y="1" width="4" height="1" /></bezel> |
| 30 | <bezel name="lamp2" element="lamp_rect"><bounds x="12" y="1" width="4" height="1" /></bezel> |
| 31 | 31 | |
| 32 | | <bezel name="lamp10" element="lamp_rect"><bounds x="1" y="2" width="1" height="4" /></bezel> |
| 33 | | <bezel name="lamp1" element="lamp_disk"><bounds x="3" y="3" width="2" height="2" /></bezel> |
| 34 | | <bezel name="lamp12" element="lamp_rect"><bounds x="6" y="2" width="1" height="4" /></bezel> |
| 32 | <bezel name="lamp16" element="lamp_rect"><bounds x="1" y="2" width="1" height="4" /></bezel> |
| 33 | <bezel name="lamp5" element="lamp_disk"><bounds x="3" y="3" width="2" height="2" /></bezel> |
| 34 | <bezel name="lamp14" element="lamp_rect"><bounds x="6" y="2" width="1" height="4" /></bezel> |
| 35 | 35 | <bezel name="lamp3" element="lamp_disk"><bounds x="8" y="3" width="2" height="2" /></bezel> |
| 36 | | <bezel name="lamp14" element="lamp_rect"><bounds x="11" y="2" width="1" height="4" /></bezel> |
| 37 | | <bezel name="lamp5" element="lamp_disk"><bounds x="13" y="3" width="2" height="2" /></bezel> |
| 38 | | <bezel name="lamp16" element="lamp_rect"><bounds x="16" y="2" width="1" height="4" /></bezel> |
| 36 | <bezel name="lamp12" element="lamp_rect"><bounds x="11" y="2" width="1" height="4" /></bezel> |
| 37 | <bezel name="lamp1" element="lamp_disk"><bounds x="13" y="3" width="2" height="2" /></bezel> |
| 38 | <bezel name="lamp10" element="lamp_rect"><bounds x="16" y="2" width="1" height="4" /></bezel> |
| 39 | 39 | |
| 40 | | <bezel name="lamp11" element="lamp_rect"><bounds x="2" y="6" width="4" height="1" /></bezel> |
| 40 | <bezel name="lamp15" element="lamp_rect"><bounds x="2" y="6" width="4" height="1" /></bezel> |
| 41 | 41 | <bezel name="lamp13" element="lamp_rect"><bounds x="7" y="6" width="4" height="1" /></bezel> |
| 42 | | <bezel name="lamp15" element="lamp_rect"><bounds x="12" y="6" width="4" height="1" /></bezel> |
| 42 | <bezel name="lamp11" element="lamp_rect"><bounds x="12" y="6" width="4" height="1" /></bezel> |
| 43 | 43 | |
| 44 | | <bezel name="lamp20" element="lamp_rect"><bounds x="1" y="7" width="1" height="4" /></bezel> |
| 45 | | <bezel name="lamp21" element="lamp_disk"><bounds x="3" y="8" width="2" height="2" /></bezel> |
| 46 | | <bezel name="lamp22" element="lamp_rect"><bounds x="6" y="7" width="1" height="4" /></bezel> |
| 44 | <bezel name="lamp26" element="lamp_rect"><bounds x="1" y="7" width="1" height="4" /></bezel> |
| 45 | <bezel name="lamp25" element="lamp_disk"><bounds x="3" y="8" width="2" height="2" /></bezel> |
| 46 | <bezel name="lamp24" element="lamp_rect"><bounds x="6" y="7" width="1" height="4" /></bezel> |
| 47 | 47 | <bezel name="lamp23" element="lamp_disk"><bounds x="8" y="8" width="2" height="2" /></bezel> |
| 48 | | <bezel name="lamp24" element="lamp_rect"><bounds x="11" y="7" width="1" height="4" /></bezel> |
| 49 | | <bezel name="lamp25" element="lamp_disk"><bounds x="13" y="8" width="2" height="2" /></bezel> |
| 50 | | <bezel name="lamp26" element="lamp_rect"><bounds x="16" y="7" width="1" height="4" /></bezel> |
| 48 | <bezel name="lamp22" element="lamp_rect"><bounds x="11" y="7" width="1" height="4" /></bezel> |
| 49 | <bezel name="lamp21" element="lamp_disk"><bounds x="13" y="8" width="2" height="2" /></bezel> |
| 50 | <bezel name="lamp20" element="lamp_rect"><bounds x="16" y="7" width="1" height="4" /></bezel> |
| 51 | 51 | |
| 52 | | <bezel name="lamp31" element="lamp_rect"><bounds x="2" y="11" width="4" height="1" /></bezel> |
| 52 | <bezel name="lamp35" element="lamp_rect"><bounds x="2" y="11" width="4" height="1" /></bezel> |
| 53 | 53 | <bezel name="lamp33" element="lamp_rect"><bounds x="7" y="11" width="4" height="1" /></bezel> |
| 54 | | <bezel name="lamp35" element="lamp_rect"><bounds x="12" y="11" width="4" height="1" /></bezel> |
| 54 | <bezel name="lamp31" element="lamp_rect"><bounds x="12" y="11" width="4" height="1" /></bezel> |
| 55 | 55 | |
| 56 | | <bezel name="lamp30" element="lamp_rect"><bounds x="1" y="12" width="1" height="4" /></bezel> |
| 57 | | <bezel name="lamp41" element="lamp_disk"><bounds x="3" y="13" width="2" height="2" /></bezel> |
| 58 | | <bezel name="lamp32" element="lamp_rect"><bounds x="6" y="12" width="1" height="4" /></bezel> |
| 56 | <bezel name="lamp36" element="lamp_rect"><bounds x="1" y="12" width="1" height="4" /></bezel> |
| 57 | <bezel name="lamp45" element="lamp_disk"><bounds x="3" y="13" width="2" height="2" /></bezel> |
| 58 | <bezel name="lamp34" element="lamp_rect"><bounds x="6" y="12" width="1" height="4" /></bezel> |
| 59 | 59 | <bezel name="lamp43" element="lamp_disk"><bounds x="8" y="13" width="2" height="2" /></bezel> |
| 60 | | <bezel name="lamp34" element="lamp_rect"><bounds x="11" y="12" width="1" height="4" /></bezel> |
| 61 | | <bezel name="lamp45" element="lamp_disk"><bounds x="13" y="13" width="2" height="2" /></bezel> |
| 62 | | <bezel name="lamp36" element="lamp_rect"><bounds x="16" y="12" width="1" height="4" /></bezel> |
| 60 | <bezel name="lamp32" element="lamp_rect"><bounds x="11" y="12" width="1" height="4" /></bezel> |
| 61 | <bezel name="lamp41" element="lamp_disk"><bounds x="13" y="13" width="2" height="2" /></bezel> |
| 62 | <bezel name="lamp30" element="lamp_rect"><bounds x="16" y="12" width="1" height="4" /></bezel> |
| 63 | 63 | |
| 64 | | <bezel name="lamp51" element="lamp_rect"><bounds x="2" y="16" width="4" height="1" /></bezel> |
| 64 | <bezel name="lamp55" element="lamp_rect"><bounds x="2" y="16" width="4" height="1" /></bezel> |
| 65 | 65 | <bezel name="lamp53" element="lamp_rect"><bounds x="7" y="16" width="4" height="1" /></bezel> |
| 66 | | <bezel name="lamp55" element="lamp_rect"><bounds x="12" y="16" width="4" height="1" /></bezel> |
| 66 | <bezel name="lamp51" element="lamp_rect"><bounds x="12" y="16" width="4" height="1" /></bezel> |
| 67 | 67 | |
| 68 | | <bezel name="lamp40" element="lamp_rect"><bounds x="1" y="17" width="1" height="4" /></bezel> |
| 69 | | <bezel name="lamp61" element="lamp_disk"><bounds x="3" y="18" width="2" height="2" /></bezel> |
| 70 | | <bezel name="lamp42" element="lamp_rect"><bounds x="6" y="17" width="1" height="4" /></bezel> |
| 68 | <bezel name="lamp46" element="lamp_rect"><bounds x="1" y="17" width="1" height="4" /></bezel> |
| 69 | <bezel name="lamp65" element="lamp_disk"><bounds x="3" y="18" width="2" height="2" /></bezel> |
| 70 | <bezel name="lamp44" element="lamp_rect"><bounds x="6" y="17" width="1" height="4" /></bezel> |
| 71 | 71 | <bezel name="lamp63" element="lamp_disk"><bounds x="8" y="18" width="2" height="2" /></bezel> |
| 72 | | <bezel name="lamp44" element="lamp_rect"><bounds x="11" y="17" width="1" height="4" /></bezel> |
| 73 | | <bezel name="lamp65" element="lamp_disk"><bounds x="13" y="18" width="2" height="2" /></bezel> |
| 74 | | <bezel name="lamp46" element="lamp_rect"><bounds x="16" y="17" width="1" height="4" /></bezel> |
| 72 | <bezel name="lamp42" element="lamp_rect"><bounds x="11" y="17" width="1" height="4" /></bezel> |
| 73 | <bezel name="lamp61" element="lamp_disk"><bounds x="13" y="18" width="2" height="2" /></bezel> |
| 74 | <bezel name="lamp40" element="lamp_rect"><bounds x="16" y="17" width="1" height="4" /></bezel> |
| 75 | 75 | |
| 76 | | <bezel name="lamp71" element="lamp_rect"><bounds x="2" y="21" width="4" height="1" /></bezel> |
| 76 | <bezel name="lamp75" element="lamp_rect"><bounds x="2" y="21" width="4" height="1" /></bezel> |
| 77 | 77 | <bezel name="lamp73" element="lamp_rect"><bounds x="7" y="21" width="4" height="1" /></bezel> |
| 78 | | <bezel name="lamp75" element="lamp_rect"><bounds x="12" y="21" width="4" height="1" /></bezel> |
| 78 | <bezel name="lamp71" element="lamp_rect"><bounds x="12" y="21" width="4" height="1" /></bezel> |
| 79 | 79 | |
| 80 | | <bezel name="lamp50" element="lamp_rect"><bounds x="1" y="22" width="1" height="4" /></bezel> |
| 81 | | <bezel name="lamp60" element="lamp_disk"><bounds x="3" y="23" width="2" height="2" /></bezel> |
| 82 | | <bezel name="lamp52" element="lamp_rect"><bounds x="6" y="22" width="1" height="4" /></bezel> |
| 83 | | <bezel name="lamp62" element="lamp_disk"><bounds x="8" y="23" width="2" height="2" /></bezel> |
| 84 | | <bezel name="lamp54" element="lamp_rect"><bounds x="11" y="22" width="1" height="4" /></bezel> |
| 85 | | <bezel name="lamp64" element="lamp_disk"><bounds x="13" y="23" width="2" height="2" /></bezel> |
| 86 | | <bezel name="lamp56" element="lamp_rect"><bounds x="16" y="22" width="1" height="4" /></bezel> |
| 80 | <bezel name="lamp56" element="lamp_rect"><bounds x="1" y="22" width="1" height="4" /></bezel> |
| 81 | <bezel name="lamp66" element="lamp_disk"><bounds x="3" y="23" width="2" height="2" /></bezel> |
| 82 | <bezel name="lamp54" element="lamp_rect"><bounds x="6" y="22" width="1" height="4" /></bezel> |
| 83 | <bezel name="lamp64" element="lamp_disk"><bounds x="8" y="23" width="2" height="2" /></bezel> |
| 84 | <bezel name="lamp52" element="lamp_rect"><bounds x="11" y="22" width="1" height="4" /></bezel> |
| 85 | <bezel name="lamp62" element="lamp_disk"><bounds x="13" y="23" width="2" height="2" /></bezel> |
| 86 | <bezel name="lamp50" element="lamp_rect"><bounds x="16" y="22" width="1" height="4" /></bezel> |
| 87 | 87 | |
| 88 | | <bezel name="lamp70" element="lamp_rect"><bounds x="2" y="26" width="4" height="1" /></bezel> |
| 89 | | <bezel name="lamp72" element="lamp_rect"><bounds x="7" y="26" width="4" height="1" /></bezel> |
| 90 | | <bezel name="lamp74" element="lamp_rect"><bounds x="12" y="26" width="4" height="1" /></bezel> |
| 88 | <bezel name="lamp76" element="lamp_rect"><bounds x="2" y="26" width="4" height="1" /></bezel> |
| 89 | <bezel name="lamp74" element="lamp_rect"><bounds x="7" y="26" width="4" height="1" /></bezel> |
| 90 | <bezel name="lamp72" element="lamp_rect"><bounds x="12" y="26" width="4" height="1" /></bezel> |
| 91 | 91 | |
| 92 | 92 | </view> |
| 93 | 93 | </mamelayout> |