trunk/src/mame/drivers/dreambal.c
| r21652 | r21653 | |
| 18 | 18 | #include "sound/okim6295.h" |
| 19 | 19 | #include "video/deco16ic.h" |
| 20 | 20 | #include "video/decospr.h" |
| 21 | #include "machine/eeprom.h" |
| 21 | 22 | |
| 22 | 23 | class dreambal_state : public driver_device |
| 23 | 24 | { |
| 24 | 25 | public: |
| 25 | 26 | dreambal_state(const machine_config &mconfig, device_type type, const char *tag) |
| 26 | | : driver_device(mconfig, type, tag)/* , |
| 27 | : driver_device(mconfig, type, tag), |
| 28 | m_eeprom(*this, "eeprom") |
| 27 | 29 | |
| 30 | /* , |
| 31 | |
| 28 | 32 | m_pf1_rowscroll(*this, "pf1_rowscroll"), |
| 29 | 33 | m_pf2_rowscroll(*this, "pf2_rowscroll"), |
| 30 | 34 | */ |
| r21652 | r21653 | |
| 36 | 40 | required_shared_ptr<UINT16> m_pf2_rowscroll; |
| 37 | 41 | required_shared_ptr<UINT16> m_spriteram; |
| 38 | 42 | */ |
| 43 | required_device<eeprom_device> m_eeprom; |
| 39 | 44 | |
| 40 | 45 | /* devices */ |
| 41 | 46 | cpu_device *m_maincpu; |
| r21652 | r21653 | |
| 45 | 50 | virtual void machine_start(); |
| 46 | 51 | virtual void machine_reset(); |
| 47 | 52 | UINT32 screen_update_dreambal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 53 | |
| 54 | DECLARE_WRITE16_HANDLER( dreambal_eeprom_w ) |
| 55 | { |
| 56 | if (data&0xfff8) |
| 57 | { |
| 58 | logerror("dreambal_eeprom_w unhandled data %04x %04x\n",data&0x0fff8, mem_mask); |
| 59 | } |
| 60 | |
| 61 | if (mem_mask&0x00ff) |
| 62 | { |
| 63 | m_eeprom->set_clock_line(data &0x1 ? ASSERT_LINE : CLEAR_LINE); |
| 64 | m_eeprom->write_bit(data &0x2); |
| 65 | m_eeprom->set_cs_line(data&0x4 ? CLEAR_LINE : ASSERT_LINE); |
| 66 | } |
| 67 | } |
| 48 | 68 | }; |
| 49 | 69 | |
| 50 | 70 | |
| r21652 | r21653 | |
| 67 | 87 | |
| 68 | 88 | |
| 69 | 89 | static ADDRESS_MAP_START( dreambal_map, AS_PROGRAM, 16, dreambal_state ) |
| 90 | //ADDRESS_MAP_UNMAP_HIGH |
| 70 | 91 | AM_RANGE(0x000000, 0x07ffff) AM_ROM |
| 71 | 92 | AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w) |
| 72 | 93 | AM_RANGE(0x101000, 0x101fff) AM_RAM |
| r21652 | r21653 | |
| 76 | 97 | AM_RANGE(0x120000, 0x123fff) AM_RAM |
| 77 | 98 | AM_RANGE(0x140000, 0x1403ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram") |
| 78 | 99 | AM_RANGE(0x161000, 0x16100f) AM_DEVWRITE_LEGACY("tilegen1", deco16ic_pf_control_w) |
| 100 | |
| 101 | AM_RANGE(0x160088, 0x160089) AM_READ_PORT("UNK1") |
| 102 | AM_RANGE(0x160292, 0x160293) AM_READ_PORT("UNK2") |
| 103 | AM_RANGE(0x16036C, 0x16036D) AM_READ_PORT("UNK3") |
| 104 | AM_RANGE(0x180000, 0x180001) AM_NOP // OKI? |
| 105 | |
| 106 | AM_RANGE(0x165000, 0x165001) AM_WRITE( dreambal_eeprom_w ) // EEP Write? |
| 107 | |
| 79 | 108 | ADDRESS_MAP_END |
| 80 | 109 | |
| 81 | 110 | |
| r21652 | r21653 | |
| 108 | 137 | GFXDECODE_END |
| 109 | 138 | |
| 110 | 139 | static INPUT_PORTS_START( dreambal ) |
| 111 | | PORT_START("UNK") |
| 140 | PORT_START("UNK1") |
| 112 | 141 | PORT_DIPNAME( 0x0001, 0x0001, "2" ) |
| 113 | 142 | PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) |
| 114 | 143 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| r21652 | r21653 | |
| 157 | 186 | PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) |
| 158 | 187 | PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) |
| 159 | 188 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 189 | |
| 190 | PORT_START("UNK2") |
| 191 | PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_device, read_bit) |
| 192 | //PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") |
| 193 | PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) |
| 194 | PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) |
| 195 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 196 | PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) |
| 197 | PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) |
| 198 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 199 | PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) ) |
| 200 | PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) |
| 201 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 202 | PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) |
| 203 | PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) |
| 204 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 205 | PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) |
| 206 | PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) |
| 207 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 208 | PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) |
| 209 | PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) |
| 210 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 211 | PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) |
| 212 | PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) |
| 213 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 214 | PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) ) |
| 215 | PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) |
| 216 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 217 | PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) |
| 218 | PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) |
| 219 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 220 | PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) |
| 221 | PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) |
| 222 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 223 | PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) |
| 224 | PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) |
| 225 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 226 | PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) |
| 227 | PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) |
| 228 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 229 | PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) |
| 230 | PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) |
| 231 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 232 | PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) |
| 233 | PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) |
| 234 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 235 | PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) |
| 236 | PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) |
| 237 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 238 | |
| 239 | PORT_START("UNK3") |
| 240 | PORT_DIPNAME( 0x0001, 0x0001, "2" ) |
| 241 | PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) |
| 242 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 243 | PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) |
| 244 | PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) |
| 245 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 246 | PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) |
| 247 | PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) |
| 248 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 249 | PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) ) |
| 250 | PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) |
| 251 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 252 | PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) |
| 253 | PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) |
| 254 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 255 | PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) |
| 256 | PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) |
| 257 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 258 | PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) |
| 259 | PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) |
| 260 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 261 | PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) |
| 262 | PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) |
| 263 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 264 | PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) ) |
| 265 | PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) |
| 266 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 267 | PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) |
| 268 | PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) |
| 269 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 270 | PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) |
| 271 | PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) |
| 272 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 273 | PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) |
| 274 | PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) |
| 275 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 276 | PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) |
| 277 | PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) |
| 278 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 279 | PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) |
| 280 | PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) |
| 281 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 282 | PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) |
| 283 | PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) |
| 284 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 285 | PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) |
| 286 | PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) |
| 287 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 288 | |
| 289 | PORT_START("UNK4") |
| 290 | PORT_DIPNAME( 0x0001, 0x0001, "2" ) |
| 291 | PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) |
| 292 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 293 | PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) |
| 294 | PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) |
| 295 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 296 | PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) |
| 297 | PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) |
| 298 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 299 | PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) ) |
| 300 | PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) |
| 301 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 302 | PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) |
| 303 | PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) |
| 304 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 305 | PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) |
| 306 | PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) |
| 307 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 308 | PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) |
| 309 | PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) |
| 310 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 311 | PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) |
| 312 | PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) |
| 313 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 314 | PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) ) |
| 315 | PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) |
| 316 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 317 | PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) |
| 318 | PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) |
| 319 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 320 | PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) |
| 321 | PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) |
| 322 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 323 | PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) |
| 324 | PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) |
| 325 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 326 | PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) |
| 327 | PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) |
| 328 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 329 | PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) |
| 330 | PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) |
| 331 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 332 | PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) |
| 333 | PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) |
| 334 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 335 | PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) |
| 336 | PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) |
| 337 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 160 | 338 | INPUT_PORTS_END |
| 161 | 339 | |
| 162 | 340 | static int dreambal_bank_callback( const int bank ) |
| r21652 | r21653 | |
| 208 | 386 | MCFG_PALETTE_LENGTH(0x400/2) |
| 209 | 387 | MCFG_GFXDECODE(dreambal) |
| 210 | 388 | |
| 389 | MCFG_EEPROM_93C46_ADD("eeprom") // 93lc46b |
| 390 | |
| 211 | 391 | MCFG_DECO16IC_ADD("tilegen1", dreambal_deco16ic_tilegen1_intf) |
| 212 | 392 | |
| 213 | 393 | /* sound hardware */ |
| r21652 | r21653 | |
| 230 | 410 | ROM_REGION( 0x80000, "oki", 0 ) /* Oki samples */ |
| 231 | 411 | ROM_LOAD( "mm_01-1.12f", 0x00000, 0x20000, CRC(4f134be7) SHA1(b83230cc62bde55be736fd604af23f927706a770) ) |
| 232 | 412 | |
| 233 | | ROM_REGION( 0x80000, "eeprom", 0 ) /* EEPROM */ |
| 234 | | ROM_LOAD( "93lc46b.8f", 0x00000, 0x80, CRC(5ba5403f) SHA1(cad63d704d81db5c45826d485c5e3a0679fba152) ) |
| 413 | ROM_REGION( 0x80, "eeprom", 0 ) /* EEPROM */ |
| 414 | ROM_LOAD16_WORD_SWAP( "93lc46b.8f", 0x00, 0x80, CRC(5ba5403f) SHA1(cad63d704d81db5c45826d485c5e3a0679fba152) ) |
| 235 | 415 | |
| 236 | 416 | ROM_END |
| 237 | 417 | |