trunk/src/mame/drivers/3x3puzzl.c
| r18423 | r18424 | |
| 21 | 21 | the game back to normal version as current set on the PCB |
| 22 | 22 | has adult graphics (sets provided are 'Normal' and 'Enterprise') |
| 23 | 23 | |
| 24 | |
| 25 | |
| 26 | todo: |
| 27 | sound banking |
| 28 | scrolling? |
| 29 | verify dips |
| 30 | |
| 24 | 31 | ***************************************************************************/ |
| 25 | 32 | |
| 26 | 33 | |
| r18423 | r18424 | |
| 66 | 73 | DECLARE_WRITE16_MEMBER(videoram3_w); |
| 67 | 74 | TILE_GET_INFO_MEMBER(get_tile3_info); |
| 68 | 75 | |
| 69 | | DECLARE_READ16_HANDLER(_600000_r); |
| 70 | 76 | DECLARE_READ16_HANDLER(_880000_r); |
| 71 | 77 | DECLARE_WRITE16_HANDLER(gfx_ctrl_w); |
| 72 | 78 | |
| 73 | 79 | protected: |
| 74 | | // driver_device overrides |
| 75 | | virtual void machine_start(); |
| 76 | | virtual void machine_reset(); |
| 77 | | |
| 78 | 80 | virtual void video_start(); |
| 79 | | virtual void palette_init(); |
| 80 | 81 | }; |
| 81 | 82 | |
| 82 | 83 | WRITE16_MEMBER(_3x3puzzle_state::videoram1_w) |
| r18423 | r18424 | |
| 135 | 136 | |
| 136 | 137 | if ( BIT(data,4) ) |
| 137 | 138 | { |
| 138 | | machine().primary_screen->set_visible_area(0*8, 64*8-1, 0*8, 32*8-1); |
| 139 | machine().primary_screen->set_visible_area(0*8, 64*8-1, 0*8, 30*8-1); |
| 139 | 140 | } |
| 140 | 141 | else |
| 141 | 142 | { |
| 142 | | machine().primary_screen->set_visible_area(0*8, 40*8-1, 0*8, 32*8-1); |
| 143 | machine().primary_screen->set_visible_area(0*8, 40*8-1, 0*8, 30*8-1); |
| 143 | 144 | } |
| 144 | 145 | } |
| 145 | 146 | |
| r18423 | r18424 | |
| 160 | 161 | return 0; |
| 161 | 162 | } |
| 162 | 163 | |
| 163 | | READ16_MEMBER(_3x3puzzle_state::_600000_r) |
| 164 | | { |
| 165 | | return 0xffff; // DSW? |
| 166 | | } |
| 167 | 164 | |
| 168 | 165 | READ16_MEMBER(_3x3puzzle_state::_880000_r) |
| 169 | 166 | { |
| r18423 | r18424 | |
| 181 | 178 | AM_RANGE(0x400000, 0x400001) AM_WRITENOP // scroll? |
| 182 | 179 | AM_RANGE(0x480000, 0x480001) AM_WRITENOP |
| 183 | 180 | AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") |
| 184 | | AM_RANGE(0x580000, 0x580001) AM_READ_PORT("P2") |
| 185 | | AM_RANGE(0x600000, 0x600001) AM_READ(_600000_r) |
| 181 | AM_RANGE(0x580000, 0x580001) AM_READ_PORT("SYS") |
| 182 | AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW01") |
| 186 | 183 | AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) |
| 187 | 184 | AM_RANGE(0x800000, 0x800001) AM_WRITE(gfx_ctrl_w) |
| 188 | | AM_RANGE(0x880000, 0x880001) AM_READ(_880000_r) |
| 185 | AM_RANGE(0x880000, 0x880001) AM_READ( _880000_r ) |
| 189 | 186 | ADDRESS_MAP_END |
| 190 | 187 | |
| 191 | 188 | static INPUT_PORTS_START( _3x3puzzle ) |
| r18423 | r18424 | |
| 195 | 192 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) |
| 196 | 193 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) |
| 197 | 194 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) |
| 198 | | PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 195 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) // needed for 2nd game |
| 196 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 197 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 199 | 198 | |
| 200 | | PORT_START("P2") |
| 201 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 202 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 203 | | PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 199 | PORT_START("SYS") |
| 200 | PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 201 | PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 202 | PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) // must be active_low or coins won't work |
| 203 | PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) // must be active_low or coins won't work |
| 204 | PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 204 | 205 | |
| 205 | 206 | PORT_START("VBLANK") |
| 206 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") |
| 207 | | |
| 207 | PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") |
| 208 | |
| 209 | PORT_START("DSW01") |
| 210 | PORT_DIPNAME( 0x0001, 0x0001, "DSW0:0" ) |
| 211 | PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) |
| 212 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 213 | PORT_DIPNAME( 0x0002, 0x0002, "DSW0:1" ) |
| 214 | PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) |
| 215 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 216 | PORT_DIPNAME( 0x0004, 0x0004, "DSW0:2" ) |
| 217 | PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) |
| 218 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 219 | PORT_DIPNAME( 0x0008, 0x0008, "DSW0:3" ) |
| 220 | PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) |
| 221 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 222 | PORT_DIPNAME( 0x0010, 0x0010, "DSW0:4" ) |
| 223 | PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) |
| 224 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 225 | PORT_DIPNAME( 0x0020, 0x0020, "DSW0:5" ) |
| 226 | PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) |
| 227 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 228 | PORT_DIPNAME( 0x0040, 0x0040, "DSW0:6" ) |
| 229 | PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) |
| 230 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 231 | PORT_DIPNAME( 0x0080, 0x0080, "DSW0:7" ) |
| 232 | PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) |
| 233 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 234 | PORT_DIPNAME( 0x0100, 0x0100, "DSW1:0" ) // coinage |
| 235 | PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) |
| 236 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 237 | PORT_DIPNAME( 0x0200, 0x0200, "DSW1:1" ) // coinage |
| 238 | PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) |
| 239 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 240 | PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Demo_Sounds ) ) |
| 241 | PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) |
| 242 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 243 | PORT_DIPNAME( 0x0800, 0x0800, "DSW1:3" ) |
| 244 | PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) |
| 245 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 246 | PORT_DIPNAME( 0x1000, 0x1000, "DSW1:4" ) |
| 247 | PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) |
| 248 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 249 | PORT_DIPNAME( 0x2000, 0x2000, "DSW1:5" ) |
| 250 | PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) |
| 251 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 252 | PORT_DIPNAME( 0x4000, 0x4000, "DSW1:6" ) |
| 253 | PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) |
| 254 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 255 | PORT_DIPNAME( 0x8000, 0x8000, "DSW1:7" ) |
| 256 | PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) |
| 257 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 208 | 258 | INPUT_PORTS_END |
| 209 | 259 | |
| 210 | 260 | static const gfx_layout tiles16x16x8_layout = |
| r18423 | r18424 | |
| 237 | 287 | GFXDECODE_END |
| 238 | 288 | |
| 239 | 289 | |
| 240 | | void _3x3puzzle_state::machine_start() |
| 241 | | { |
| 242 | | } |
| 243 | | |
| 244 | | void _3x3puzzle_state::machine_reset() |
| 245 | | { |
| 246 | | } |
| 247 | | |
| 248 | | |
| 249 | | void _3x3puzzle_state::palette_init() |
| 250 | | { |
| 251 | | |
| 252 | | } |
| 253 | | |
| 254 | 290 | static MACHINE_CONFIG_START( _3x3puzzle, _3x3puzzle_state ) |
| 255 | 291 | |
| 256 | 292 | /* basic machine hardware */ |
| r18423 | r18424 | |
| 264 | 300 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) |
| 265 | 301 | MCFG_SCREEN_UPDATE_DRIVER(_3x3puzzle_state, screen_update) |
| 266 | 302 | MCFG_SCREEN_SIZE(64*8, 32*8) |
| 267 | | MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 32*8-1) |
| 303 | MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1) |
| 268 | 304 | |
| 269 | 305 | MCFG_GFXDECODE(_3x3puzzle) |
| 270 | 306 | |
| r18423 | r18424 | |
| 338 | 374 | ROM_END |
| 339 | 375 | |
| 340 | 376 | |
| 341 | | GAME( 199?, 3x3puzzl, 0, _3x3puzzle, _3x3puzzle, driver_device, 0, ROT0, "Ace", "3X3 Puzzle (Enterprise)", 0 ) |
| 342 | | GAME( 199?, 3x3puzzla, 3x3puzzl, _3x3puzzle, _3x3puzzle, driver_device, 0, ROT0, "Ace", "3X3 Puzzle (Normal)", 0 ) |
| 377 | GAME( 199?, 3x3puzzl, 0, _3x3puzzle, _3x3puzzle, driver_device, 0, ROT0, "Ace", "3X3 Puzzle (Enterprise)", GAME_IMPERFECT_SOUND ) |
| 378 | GAME( 199?, 3x3puzzla, 3x3puzzl, _3x3puzzle, _3x3puzzle, driver_device, 0, ROT0, "Ace", "3X3 Puzzle (Normal)", GAME_IMPERFECT_SOUND ) |