trunk/hash/vectrex.xml
| r32624 | r32625 | |
| 18 | 18 | <year>1983</year> |
| 19 | 19 | <publisher>GCE</publisher> |
| 20 | 20 | <part name="cart" interface="vectrex_cart"> |
| 21 | <feature name="slot" value="vec_rom" /> |
| 21 | 22 | <dataarea name="rom" size="8192"> |
| 22 | 23 | <rom name="3dmnstrm.bin" size="8192" crc="b2313487" sha1="1731e892da8945fe4945b43847d23960c581682a" offset="0" /> |
| 23 | 24 | </dataarea> |
| r32624 | r32625 | |
| 29 | 30 | <year>1983</year> |
| 30 | 31 | <publisher>GCE</publisher> |
| 31 | 32 | <part name="cart" interface="vectrex_cart"> |
| 33 | <feature name="slot" value="vec_rom" /> |
| 32 | 34 | <dataarea name="rom" size="8192"> |
| 33 | 35 | <rom name="animactn.bin" size="8192" crc="9f62e167" sha1="71946be47debae89ad191ac382c2015d6a862072" offset="0" /> |
| 34 | 36 | </dataarea> |
| r32624 | r32625 | |
| 40 | 42 | <year>1982</year> |
| 41 | 43 | <publisher>GCE</publisher> |
| 42 | 44 | <part name="cart" interface="vectrex_cart"> |
| 45 | <feature name="slot" value="vec_rom" /> |
| 43 | 46 | <dataarea name="rom" size="4096"> |
| 44 | 47 | <rom name="armora.bin" size="4096" crc="b7510971" sha1="eb76f860130f8cc87826fa931350467760511213" offset="0" /> |
| 45 | 48 | </dataarea> |
| r32624 | r32625 | |
| 51 | 54 | <year>1983</year> |
| 52 | 55 | <publisher>GCE</publisher> |
| 53 | 56 | <part name="cart" interface="vectrex_cart"> |
| 57 | <feature name="slot" value="vec_rom" /> |
| 54 | 58 | <dataarea name="rom" size="4096"> |
| 55 | 59 | <rom name="artmastr.bin" size="4096" crc="c8e2f247" sha1="8f35bac5e8e0fc4ad7291bbfe5ae6e693272de06" offset="0" /> |
| 56 | 60 | </dataarea> |
| r32624 | r32625 | |
| 62 | 66 | <year>1982</year> |
| 63 | 67 | <publisher>GCE</publisher> |
| 64 | 68 | <part name="cart" interface="vectrex_cart"> |
| 69 | <feature name="slot" value="vec_rom" /> |
| 65 | 70 | <dataarea name="rom" size="4096"> |
| 66 | 71 | <rom name="bedlam.bin" size="4096" crc="a2fa649b" sha1="3ff3fa4feda6d562dedff2a10cfa8679d8318044" offset="0" /> |
| 67 | 72 | </dataarea> |
| r32624 | r32625 | |
| 73 | 78 | <year>1982</year> |
| 74 | 79 | <publisher>GCE</publisher> |
| 75 | 80 | <part name="cart" interface="vectrex_cart"> |
| 81 | <feature name="slot" value="vec_rom" /> |
| 76 | 82 | <dataarea name="rom" size="4096"> |
| 77 | 83 | <rom name="berzerk.bin" size="4096" crc="eafe2455" sha1="e4badd494ed548721328ef869d33ad70e3e522c9" offset="0" /> |
| 78 | 84 | </dataarea> |
| r32624 | r32625 | |
| 84 | 90 | <year>1982</year> |
| 85 | 91 | <publisher>GCE</publisher> |
| 86 | 92 | <part name="cart" interface="vectrex_cart"> |
| 93 | <feature name="slot" value="vec_rom" /> |
| 87 | 94 | <dataarea name="rom" size="8192"> |
| 88 | 95 | <rom name="blitz.bin" size="8192" crc="0f11ce0c" sha1="60893dfada42cf50c94083d45ad5bd14d0c031c8" offset="0" /> |
| 89 | 96 | </dataarea> |
| r32624 | r32625 | |
| 95 | 102 | <year>1982</year> |
| 96 | 103 | <publisher>GCE</publisher> |
| 97 | 104 | <part name="cart" interface="vectrex_cart"> |
| 105 | <feature name="slot" value="vec_rom" /> |
| 98 | 106 | <dataarea name="rom" size="8192"> |
| 99 | 107 | <rom name="blitza.bin" size="8192" crc="881b27c5" sha1="aa1aa811c9ce5e19f43b78a6531cdd0e707337bd" offset="0" /> |
| 100 | 108 | </dataarea> |
| r32624 | r32625 | |
| 106 | 114 | <year>1982</year> |
| 107 | 115 | <publisher>GCE</publisher> |
| 108 | 116 | <part name="cart" interface="vectrex_cart"> |
| 117 | <feature name="slot" value="vec_rom" /> |
| 109 | 118 | <dataarea name="rom" size="4096"> |
| 110 | 119 | <rom name="cleanswp.bin" size="4096" crc="f1b1de78" sha1="67f8513958c04e936b135740ed4ec6e6fa1763d5" offset="0" /> |
| 111 | 120 | </dataarea> |
| r32624 | r32625 | |
| 117 | 126 | <year>1982</year> |
| 118 | 127 | <publisher>GCE</publisher> |
| 119 | 128 | <part name="cart" interface="vectrex_cart"> |
| 129 | <feature name="slot" value="vec_rom" /> |
| 120 | 130 | <dataarea name="rom" size="8192"> |
| 121 | 131 | <rom name="mrboston.bin" size="8192" crc="bd4da4c2" sha1="299841a116e59399af4e74ccae23ddfc078e007b" offset="0" /> |
| 122 | 132 | </dataarea> |
| r32624 | r32625 | |
| 128 | 138 | <year>1982</year> |
| 129 | 139 | <publisher>GCE</publisher> |
| 130 | 140 | <part name="cart" interface="vectrex_cart"> |
| 141 | <feature name="slot" value="vec_rom" /> |
| 131 | 142 | <dataarea name="rom" size="4096"> |
| 132 | 143 | <rom name="cchasm.bin" size="4096" crc="6c1afa52" sha1="56a7f277bf09f94461dda542c04c36266d838b86" offset="0" /> |
| 133 | 144 | </dataarea> |
| r32624 | r32625 | |
| 139 | 150 | <year>1983</year> |
| 140 | 151 | <publisher>GCE</publisher> |
| 141 | 152 | <part name="cart" interface="vectrex_cart"> |
| 153 | <feature name="slot" value="vec_rom" /> |
| 142 | 154 | <dataarea name="rom" size="8192"> |
| 143 | 155 | <rom name="crzycstr.bin" size="8192" crc="92709b11" sha1="4a833e4869221f832dacb7ef0fb2997c870b7d7f" offset="0" /> |
| 144 | 156 | </dataarea> |
| r32624 | r32625 | |
| 150 | 162 | <year>1983</year> |
| 151 | 163 | <publisher>GCE</publisher> |
| 152 | 164 | <part name="cart" interface="vectrex_cart"> |
| 165 | <feature name="slot" value="vec_rom" /> |
| 153 | 166 | <dataarea name="rom" size="12288"> |
| 154 | 167 | <rom name="darktwer.bin" size="12288" crc="9dcfd5b7" sha1="dbb0b378aacc2a18dfb476aa99ab00d6ab395205" offset="0" /> |
| 155 | 168 | </dataarea> |
| r32624 | r32625 | |
| 161 | 174 | <year>1983</year> |
| 162 | 175 | <publisher>GCE</publisher> |
| 163 | 176 | <part name="cart" interface="vectrex_cart"> |
| 177 | <feature name="slot" value="vec_rom" /> |
| 164 | 178 | <dataarea name="rom" size="4096"> |
| 165 | 179 | <rom name="enginean.bin" size="4096" crc="fe9a501a" sha1="c226d78301dbe40f2194c165f2124d5afa885be4" offset="0" /> |
| 166 | 180 | </dataarea> |
| r32624 | r32625 | |
| 172 | 186 | <year>1982</year> |
| 173 | 187 | <publisher>GCE</publisher> |
| 174 | 188 | <part name="cart" interface="vectrex_cart"> |
| 189 | <feature name="slot" value="vec_rom" /> |
| 175 | 190 | <dataarea name="rom" size="8192"> |
| 176 | 191 | <rom name="fnarzod.bin" size="8192" crc="13a35c8a" sha1="286e061331289b031de33725a4966c379c1df47f" offset="0" /> |
| 177 | 192 | </dataarea> |
| r32624 | r32625 | |
| 183 | 198 | <year>1983</year> |
| 184 | 199 | <publisher>GCE</publisher> |
| 185 | 200 | <part name="cart" interface="vectrex_cart"> |
| 201 | <feature name="slot" value="vec_rom" /> |
| 186 | 202 | <dataarea name="rom" size="8192"> |
| 187 | 203 | <rom name="headsup.bin" size="8192" crc="e61a7de3" sha1="0406c13952fb0bd6adc68298ae163ebc6160484c" offset="0" /> |
| 188 | 204 | </dataarea> |
| r32624 | r32625 | |
| 194 | 210 | <year>1982</year> |
| 195 | 211 | <publisher>GCE</publisher> |
| 196 | 212 | <part name="cart" interface="vectrex_cart"> |
| 213 | <feature name="slot" value="vec_rom" /> |
| 197 | 214 | <dataarea name="rom" size="4096"> |
| 198 | 215 | <rom name="hyprchse.bin" size="4096" crc="4bb13472" sha1="a246f1d94a5b062b60784787a1d6d499b21c10cd" offset="0" /> |
| 199 | 216 | </dataarea> |
| r32624 | r32625 | |
| 205 | 222 | <year>1983</year> |
| 206 | 223 | <publisher>GCE</publisher> |
| 207 | 224 | <part name="cart" interface="vectrex_cart"> |
| 225 | <feature name="slot" value="vec_rom" /> |
| 208 | 226 | <dataarea name="rom" size="8192"> |
| 209 | 227 | <rom name="mail_plane.bin" size="8192" crc="da1ac0db" sha1="05f56e708f752ca801f8013c7da9b0db01508ba5" offset="0" /> |
| 210 | 228 | </dataarea> |
| r32624 | r32625 | |
| 217 | 235 | <year>1983</year> |
| 218 | 236 | <publisher>GCE</publisher> |
| 219 | 237 | <part name="cart" interface="vectrex_cart"> |
| 238 | <feature name="slot" value="vec_rom" /> |
| 220 | 239 | <dataarea name="rom" size="8192"> |
| 221 | 240 | <rom name="mailplne.bin" size="8192" crc="05838962" sha1="969d5ec7d7aba9ac25e54069149d9586217ab63d" offset="0" /> |
| 222 | 241 | </dataarea> |
| r32624 | r32625 | |
| 228 | 247 | <year>1983</year> |
| 229 | 248 | <publisher>GCE</publisher> |
| 230 | 249 | <part name="cart" interface="vectrex_cart"> |
| 250 | <feature name="slot" value="vec_rom" /> |
| 231 | 251 | <dataarea name="rom" size="8192"> |
| 232 | 252 | <rom name="mldymstr.bin" size="8192" crc="afefa29c" sha1="58aecc7fb1d26a22b09e9a13d845e4ed12e2449d" offset="0" /> |
| 233 | 253 | </dataarea> |
| r32624 | r32625 | |
| 239 | 259 | <year>1982</year> |
| 240 | 260 | <publisher>GCE</publisher> |
| 241 | 261 | <part name="cart" interface="vectrex_cart"> |
| 262 | <feature name="slot" value="vec_rom" /> |
| 242 | 263 | <dataarea name="rom" size="4096"> |
| 243 | 264 | <rom name="minestrm.bin" size="4096" crc="6d509566" sha1="5f00ed35f189357b4a16a190520166371ca57906" offset="0" /> |
| 244 | 265 | </dataarea> |
| r32624 | r32625 | |
| 250 | 271 | <year>1983</year> |
| 251 | 272 | <publisher>GCE</publisher> |
| 252 | 273 | <part name="cart" interface="vectrex_cart"> |
| 274 | <feature name="slot" value="vec_rom" /> |
| 253 | 275 | <dataarea name="rom" size="4096"> |
| 254 | 276 | <rom name="minestr2.bin" size="4096" crc="f5b3b374" sha1="1fdcc6e54ae5177bc9cdc79ce616ae3401e5c229" offset="0" /> |
| 255 | 277 | </dataarea> |
| r32624 | r32625 | |
| 261 | 283 | <year>1983</year> |
| 262 | 284 | <publisher>GCE</publisher> |
| 263 | 285 | <part name="cart" interface="vectrex_cart"> |
| 286 | <feature name="slot" value="vec_rom" /> |
| 264 | 287 | <dataarea name="rom" size="8192"> |
| 265 | 288 | <rom name="nrrwescp.bin" size="8192" crc="050bd949" sha1="9e5d23cb7ef111394e1804e105b6dd277c062df6" offset="0" /> |
| 266 | 289 | </dataarea> |
| r32624 | r32625 | |
| 272 | 295 | <year>1983</year> |
| 273 | 296 | <publisher>GCE</publisher> |
| 274 | 297 | <part name="cart" interface="vectrex_cart"> |
| 298 | <feature name="slot" value="vec_rom" /> |
| 275 | 299 | <dataarea name="rom" size="8192"> |
| 276 | 300 | <rom name="ptchduel.bin" size="8192" crc="c25f2e0e" sha1="f6f26beb20bb364761a9466ff4087c7b9713d048" offset="0" /> |
| 277 | 301 | </dataarea> |
| r32624 | r32625 | |
| 283 | 307 | <year>1983</year> |
| 284 | 308 | <publisher>GCE</publisher> |
| 285 | 309 | <part name="cart" interface="vectrex_cart"> |
| 310 | <feature name="slot" value="vec_rom" /> |
| 286 | 311 | <dataarea name="rom" size="8192"> |
| 287 | 312 | <rom name="polarres.bin" size="8192" crc="a7471784" sha1="87248dcd3db51c1ebf3f8e07e21ec021eec0b9be" offset="0" /> |
| 288 | 313 | </dataarea> |
| r32624 | r32625 | |
| 294 | 319 | <year>1983</year> |
| 295 | 320 | <publisher>GCE</publisher> |
| 296 | 321 | <part name="cart" interface="vectrex_cart"> |
| 322 | <feature name="slot" value="vec_rom" /> |
| 297 | 323 | <dataarea name="rom" size="8192"> |
| 298 | 324 | <rom name="polarrsb.bin" size="8192" crc="ad844645" sha1="b7bd8c8003c60535e1e776758f5c289aa9a77e81" offset="0" /> |
| 299 | 325 | </dataarea> |
| r32624 | r32625 | |
| 305 | 331 | <year>1983</year> |
| 306 | 332 | <publisher>GCE / Namco Ltd.</publisher> |
| 307 | 333 | <part name="cart" interface="vectrex_cart"> |
| 334 | <feature name="slot" value="vec_rom" /> |
| 308 | 335 | <dataarea name="rom" size="8192"> |
| 309 | 336 | <rom name="polepos.bin" size="8192" crc="a00ed3d6" sha1="8454d472435e7a6a4ca5fe129162480ca6e84b87" offset="0" /> |
| 310 | 337 | </dataarea> |
| r32624 | r32625 | |
| 316 | 343 | <year>1983</year> |
| 317 | 344 | <publisher>GCE / Namco Ltd.</publisher> |
| 318 | 345 | <part name="cart" interface="vectrex_cart"> |
| 346 | <feature name="slot" value="vec_rom" /> |
| 319 | 347 | <dataarea name="rom" size="8192"> |
| 320 | 348 | <rom name="poleposa.bin" size="8192" crc="c10f37d8" sha1="9f5b0b5e6caf6d887d3637ace70ad6a6258b999d" offset="0" /> |
| 321 | 349 | </dataarea> |
| r32624 | r32625 | |
| 327 | 355 | <year>1982</year> |
| 328 | 356 | <publisher>GCE</publisher> |
| 329 | 357 | <part name="cart" interface="vectrex_cart"> |
| 358 | <feature name="slot" value="vec_rom" /> |
| 330 | 359 | <dataarea name="rom" size="4096"> |
| 331 | 360 | <rom name="ripoff.bin" size="4096" crc="34a98132" sha1="22f7a490f6f7aaa31e892b03a85178af211f62e3" offset="0" /> |
| 332 | 361 | </dataarea> |
| r32624 | r32625 | |
| 338 | 367 | <year>1983</year> |
| 339 | 368 | <publisher>GCE</publisher> |
| 340 | 369 | <part name="cart" interface="vectrex_cart"> |
| 370 | <feature name="slot" value="vec_rom" /> |
| 341 | 371 | <dataarea name="rom" size="3671"> |
| 342 | 372 | <rom name="rcktsldg.bin" size="3671" crc="863b89e8" sha1="526b347bc02a47c8bda326b1f6da50284127f038" offset="0" /> |
| 343 | 373 | </dataarea> |
| r32624 | r32625 | |
| 349 | 379 | <year>1982</year> |
| 350 | 380 | <publisher>GCE</publisher> |
| 351 | 381 | <part name="cart" interface="vectrex_cart"> |
| 382 | <feature name="slot" value="vec_rom" /> |
| 352 | 383 | <dataarea name="rom" size="4096"> |
| 353 | 384 | <rom name="scramble.bin" size="4096" crc="707c8ffe" sha1="38e38b5c60466146d4648f8929b5ce3a08dcbe0d" offset="0" /> |
| 354 | 385 | </dataarea> |
| r32624 | r32625 | |
| 360 | 391 | <year>1982</year> |
| 361 | 392 | <publisher>GCE</publisher> |
| 362 | 393 | <part name="cart" interface="vectrex_cart"> |
| 394 | <feature name="slot" value="vec_rom" /> |
| 363 | 395 | <dataarea name="rom" size="4096"> |
| 364 | 396 | <rom name="solarq.bin" size="4096" crc="5c4611c8" sha1="38072dc491d5c729c06f4c50bc310d361e0ff62a" offset="0" /> |
| 365 | 397 | </dataarea> |
| r32624 | r32625 | |
| 371 | 403 | <year>1982</year> |
| 372 | 404 | <publisher>GCE</publisher> |
| 373 | 405 | <part name="cart" interface="vectrex_cart"> |
| 406 | <feature name="slot" value="vec_rom" /> |
| 374 | 407 | <dataarea name="rom" size="4096"> |
| 375 | 408 | <rom name="spacewar.bin" size="4096" crc="a3be5aff" sha1="0c229dd12a55044681585f7fdabd37dbc1243b59" offset="0" /> |
| 376 | 409 | </dataarea> |
| r32624 | r32625 | |
| 382 | 415 | <year>1983</year> |
| 383 | 416 | <publisher>GCE</publisher> |
| 384 | 417 | <part name="cart" interface="vectrex_cart"> |
| 418 | <feature name="slot" value="vec_rom" /> |
| 385 | 419 | <dataarea name="rom" size="8192"> |
| 386 | 420 | <rom name="spike.bin" size="8192" crc="62a61843" sha1="8bba6705e6f69f55ab6d105eac2fd5b0c0d16d9f" offset="0" /> |
| 387 | 421 | </dataarea> |
| r32624 | r32625 | |
| 393 | 427 | <year>1983</year> |
| 394 | 428 | <publisher>GCE</publisher> |
| 395 | 429 | <part name="cart" interface="vectrex_cart"> |
| 430 | <feature name="slot" value="vec_rom" /> |
| 396 | 431 | <dataarea name="rom" size="8192"> |
| 397 | 432 | <rom name="spinball.bin" size="8192" crc="02f41733" sha1="2e8285061530ccadfa2d8d11c374ae244449ebfa" offset="0" /> |
| 398 | 433 | </dataarea> |
| r32624 | r32625 | |
| 404 | 439 | <year>1982</year> |
| 405 | 440 | <publisher>GCE</publisher> |
| 406 | 441 | <part name="cart" interface="vectrex_cart"> |
| 442 | <feature name="slot" value="vec_rom" /> |
| 407 | 443 | <dataarea name="rom" size="4096"> |
| 408 | 444 | <rom name="starcas.bin" size="4096" crc="c9039623" sha1="c9b79f1ba30dcbce5a068b606a97775cf863fe0a" offset="0" /> |
| 409 | 445 | </dataarea> |
| r32624 | r32625 | |
| 415 | 451 | <year>1982</year> |
| 416 | 452 | <publisher>GCE</publisher> |
| 417 | 453 | <part name="cart" interface="vectrex_cart"> |
| 454 | <feature name="slot" value="vec_rom" /> |
| 418 | 455 | <dataarea name="rom" size="4096"> |
| 419 | 456 | <rom name="starship.bin" size="4096" crc="7967a8cb" sha1="d182eac5a54ffc642fcbe4a495c7c09f87b43585" offset="0" /> |
| 420 | 457 | </dataarea> |
| r32624 | r32625 | |
| 426 | 463 | <year>1982</year> |
| 427 | 464 | <publisher>GCE</publisher> |
| 428 | 465 | <part name="cart" interface="vectrex_cart"> |
| 466 | <feature name="slot" value="vec_rom" /> |
| 429 | 467 | <dataarea name="rom" size="4096"> |
| 430 | 468 | <rom name="startrek.bin" size="4096" crc="3768d8c3" sha1="3a2ee61316fb316d9e9efdf5ee405e813475b466" offset="0" /> |
| 431 | 469 | </dataarea> |
| r32624 | r32625 | |
| 437 | 475 | <year>1982</year> |
| 438 | 476 | <publisher>GCE</publisher> |
| 439 | 477 | <part name="cart" interface="vectrex_cart"> |
| 478 | <feature name="slot" value="vec_rom" /> |
| 440 | 479 | <dataarea name="rom" size="4096"> |
| 441 | 480 | <rom name="starhawk.bin" size="4096" crc="4de1f06b" sha1="d6b388b3951e34971c1b00c7fdf8dd00ad52df09" offset="0" /> |
| 442 | 481 | </dataarea> |
| r32624 | r32625 | |
| 448 | 487 | <year>1982</year> |
| 449 | 488 | <publisher>GCE</publisher> |
| 450 | 489 | <part name="cart" interface="vectrex_cart"> |
| 490 | <feature name="slot" value="vec_rom" /> |
| 451 | 491 | <dataarea name="rom" size="4096"> |
| 452 | 492 | <rom name="testrev4.bin" size="4096" crc="7297e815" sha1="e3418055f1e79a2300572c557e71bf2ce8badbfa" offset="0" /> |
| 453 | 493 | </dataarea> |
| r32624 | r32625 | |
| 459 | 499 | <year>1983</year> |
| 460 | 500 | <publisher>GCE</publisher> |
| 461 | 501 | <part name="cart" interface="vectrex_cart"> |
| 502 | <feature name="slot" value="vec_rom" /> |
| 462 | 503 | <dataarea name="rom" size="8192"> |
| 463 | 504 | <rom name="tourdefr.bin" size="8192" crc="bb4791f1" sha1="4f461b0b51c82433e70130eac5494f26239b4453" offset="0" /> |
| 464 | 505 | </dataarea> |
| r32624 | r32625 | |
| 470 | 511 | <year>1983</year> |
| 471 | 512 | <publisher>GCE</publisher> |
| 472 | 513 | <part name="cart" interface="vectrex_cart"> |
| 514 | <feature name="slot" value="vec_rom" /> |
| 473 | 515 | <dataarea name="rom" size="8192"> |
| 474 | 516 | <rom name="webwarp.bin" size="8192" crc="521107c3" sha1="9681dc5d38a31cb0d0c6c3bd0fc76bfdde531cce" offset="0" /> |
| 475 | 517 | </dataarea> |
| r32624 | r32625 | |
| 481 | 523 | <year>1983</year> |
| 482 | 524 | <publisher>GCE</publisher> |
| 483 | 525 | <part name="cart" interface="vectrex_cart"> |
| 526 | <feature name="slot" value="vec_rom" /> |
| 484 | 527 | <dataarea name="rom" size="8192"> |
| 485 | 528 | <rom name="webwars.bin" size="8192" crc="2ee20103" sha1="08e2df9f7769c16a4d730adf8d659f8ea4be7f9d" offset="0" /> |
| 486 | 529 | </dataarea> |
| r32624 | r32625 | |
| 495 | 538 | <year>1982</year> |
| 496 | 539 | <publisher>GCE</publisher> |
| 497 | 540 | <part name="cart" interface="vectrex_cart"> |
| 541 | <feature name="slot" value="vec_rom" /> |
| 498 | 542 | <dataarea name="rom" size="32768"> |
| 499 | 543 | <rom name="berzerkd.bin" size="32768" crc="2adc4eaa" sha1="88031823ed2af95e8a7a6239cd83b158f9b7c16a" offset="0" /> |
| 500 | 544 | </dataarea> |
| r32624 | r32625 | |
| 506 | 550 | <year>1982</year> |
| 507 | 551 | <publisher>GCE</publisher> |
| 508 | 552 | <part name="cart" interface="vectrex_cart"> |
| 553 | <feature name="slot" value="vec_rom" /> |
| 509 | 554 | <dataarea name="rom" size="4096"> |
| 510 | 555 | <rom name="startrekp.bin" size="4096" crc="563f846b" sha1="21707811e544edae66ca076351bf0743842b46e5" offset="0" /> |
| 511 | 556 | </dataarea> |
trunk/hash/crvision.xml
| r32624 | r32625 | |
| 37 | 37 | <publisher>Video Technology Ltd.</publisher> |
| 38 | 38 | <info name="serial" value="8008" /> |
| 39 | 39 | <part name="cart" interface="crvision_cart"> |
| 40 | <feature name="slot" value="crv_rom4k" /> |
| 40 | 41 | <dataarea name="rom" size="4096"> |
| 41 | 42 | <rom name="airsea.bin" size="4096" crc="81a9257d" sha1="1fbc52f335c0d8bb96578a6ba764f5631c41fd36" offset="000000" /> |
| 42 | 43 | </dataarea> |
| r32624 | r32625 | |
| 49 | 50 | <publisher>Video Technology Ltd.</publisher> |
| 50 | 51 | <info name="serial" value="8014" /> |
| 51 | 52 | <part name="cart" interface="crvision_cart"> |
| 53 | <feature name="slot" value="crv_rom8k" /> |
| 52 | 54 | <dataarea name="rom" size="8192"> |
| 53 | 55 | <rom name="astropin.bin" size="8192" crc="d03c0603" sha1="e7cb096d4d16fd8193f7e39c2f73bdf0930c9654" offset="000000" /> |
| 54 | 56 | </dataarea> |
| r32624 | r32625 | |
| 61 | 63 | <publisher>Video Technology Ltd.</publisher> |
| 62 | 64 | <info name="serial" value="8014" /> |
| 63 | 65 | <part name="cart" interface="crvision_cart"> |
| 66 | <feature name="slot" value="crv_rom8k" /> |
| 64 | 67 | <dataarea name="rom" size="8192"> |
| 65 | 68 | <rom name="astropina_01.bin" size="4096" crc="93794d02" sha1="922152e70d614180d7e5614d61c5ced913ecfcd3" offset="0x0000" /> |
| 66 | 69 | <rom name="astropina_02.bin" size="4096" crc="aacba2e2" sha1="cf2fffe9ca93e1935efba5d264471b1a0b792971" offset="0x1000" /> |
| r32624 | r32625 | |
| 77 | 80 | <publisher>Video Technology Ltd.</publisher> |
| 78 | 81 | <info name="serial" value="8014" /> |
| 79 | 82 | <part name="cart" interface="crvision_cart"> |
| 83 | <feature name="slot" value="crv_rom8k" /> |
| 80 | 84 | <dataarea name="rom" size="8192"> |
| 81 | 85 | <rom name="astropinb.bin" size="8192" crc="cf7bdfc2" sha1="38bcc856d604567dc6453205a8f858bdf2000330" offset="000000" /> |
| 82 | 86 | </dataarea> |
| r32624 | r32625 | |
| 89 | 93 | <publisher>Video Technology Ltd.</publisher> |
| 90 | 94 | <info name="serial" value="8006" /> |
| 91 | 95 | <part name="cart" interface="crvision_cart"> |
| 96 | <feature name="slot" value="crv_rom8k" /> |
| 92 | 97 | <dataarea name="rom" size="8192"> |
| 93 | 98 | <rom name="autochas.bin" size="8192" crc="bd091ee0" sha1="369dc9aa55dd2c09376be840f8ebeca450db8b9c" offset="000000" /> |
| 94 | 99 | </dataarea> |
| r32624 | r32625 | |
| 101 | 106 | <publisher>Video Technology Ltd.</publisher> |
| 102 | 107 | <info name="serial" value="8006" /> |
| 103 | 108 | <part name="cart" interface="crvision_cart"> |
| 109 | <feature name="slot" value="crv_rom8k" /> |
| 104 | 110 | <dataarea name="rom" size="8192"> |
| 105 | 111 | <rom name="autochas_01.bin" size="4096" crc="fad237b9" sha1="7762d1b5e12bdc5f32157e6ea820da3566b2c3cd" offset="0x0000" /> |
| 106 | 112 | <rom name="autochas_02.bin" size="4096" crc="bebde090" sha1="b8af1085bdb47bcc8cf9e667313ab3bcf4cc99ea" offset="0x1000" /> |
| r32624 | r32625 | |
| 115 | 121 | <publisher>Video Technology Ltd.</publisher> |
| 116 | 122 | <info name="serial" value="8011" /> |
| 117 | 123 | <part name="cart" interface="crvision_cart"> |
| 124 | <feature name="slot" value="crv_rom12k" /> |
| 118 | 125 | <dataarea name="rom" size="12288"> |
| 119 | 126 | <rom name="basic82a_01.bin" size="4096" crc="9b2aeef8" sha1="73950bf03abc8f6646a8d283e12760de453eddf2" offset="0x0000" /> |
| 120 | 127 | <rom name="basic82a_02.bin" size="4096" crc="d713b2d1" sha1="e1af1debb8a05f38aaf14dc79cacbc713f02e6fd" offset="0x1000" /> |
| r32624 | r32625 | |
| 129 | 136 | <publisher>Video Technology Ltd.</publisher> |
| 130 | 137 | <info name="serial" value="8011" /> |
| 131 | 138 | <part name="cart" interface="crvision_cart"> |
| 139 | <feature name="slot" value="crv_rom12k" /> |
| 132 | 140 | <dataarea name="rom" size="12288"> |
| 133 | 141 | <rom name="basic82b_01.bin" size="4096" crc="5ee092d0" sha1="c02b0a7e81a2f43a704376381c167b7c6632119c" offset="0x0000" /> |
| 134 | 142 | <rom name="basic82b_02.bin" size="4096" crc="19a12d7e" sha1="181c27465e7e2da58e7432eaa0ae03e186b6c365" offset="0x1000" /> |
| r32624 | r32625 | |
| 143 | 151 | <publisher>Video Technology Ltd.</publisher> |
| 144 | 152 | <info name="serial" value="8011" /> |
| 145 | 153 | <part name="cart" interface="crvision_cart"> |
| 154 | <feature name="slot" value="crv_rom12k" /> |
| 146 | 155 | <dataarea name="rom" size="12288"> |
| 147 | 156 | <rom name="basic83_01.bin" size="8192" crc="3ce2a7ca" sha1="f2171867767d0b658eea0b072aa1891869073bb9" offset="0x0000" /> |
| 148 | 157 | <rom name="basic83_02.bin" size="4096" crc="40f388b9" sha1="989a54e92768baae81cd179808adf1f9943212ee" offset="0x2000" /> |
| r32624 | r32625 | |
| 156 | 165 | <publisher>Video Technology Ltd.</publisher> |
| 157 | 166 | <info name="serial" value="8011" /> |
| 158 | 167 | <part name="cart" interface="crvision_cart"> |
| 168 | <feature name="slot" value="crv_rom12k" /> |
| 159 | 169 | <dataarea name="rom" size="12288"> |
| 160 | 170 | <rom name="basicram_01.bin" size="4096" crc="5ee092d0" sha1="c02b0a7e81a2f43a704376381c167b7c6632119c" offset="0x0000" /> |
| 161 | 171 | <rom name="basicram_02.bin" size="4096" crc="76e661db" sha1="ad0aff12c7bee9dd4f256942614b7e99586698f5" offset="0x1000" /> |
| r32624 | r32625 | |
| 170 | 180 | <publisher>Video Technology Ltd.</publisher> |
| 171 | 181 | <info name="serial" value="8021" /> |
| 172 | 182 | <part name="cart" interface="crvision_cart"> |
| 183 | <feature name="slot" value="crv_rom18k" /> |
| 173 | 184 | <dataarea name="rom" size="18432"> |
| 174 | 185 | <rom name="chopper_01.bin" size="8192" crc="23a6bb47" sha1="748e4c98ed419999063edfe98f26f9e86c877962" offset="0x0000" /> |
| 175 | 186 | <rom name="chopper_02.bin" size="8192" crc="3980d7ed" sha1="abac0f2a0b73ab5c45e1a617f7c862408086eb66" offset="0x2000" /> |
| r32624 | r32625 | |
| 184 | 195 | <publisher>Video Technology Ltd.</publisher> |
| 185 | 196 | <info name="serial" value="8001" /> |
| 186 | 197 | <part name="cart" interface="crvision_cart"> |
| 198 | <feature name="slot" value="crv_rom4k" /> |
| 187 | 199 | <dataarea name="rom" size="4096"> |
| 188 | 200 | <rom name="crazych.bin" size="4096" crc="b1b5bfe5" sha1="c0eed370267644d142a42de6201f7ac6d275104d" offset="000000" /> |
| 189 | 201 | </dataarea> |
| r32624 | r32625 | |
| 196 | 208 | <publisher>Video Technology Ltd.</publisher> |
| 197 | 209 | <info name="serial" value="8001" /> |
| 198 | 210 | <part name="cart" interface="crvision_cart"> |
| 211 | <feature name="slot" value="crv_rom4k" /> |
| 199 | 212 | <dataarea name="rom" size="4096"> |
| 200 | 213 | <rom name="crazypuc.bin" size="4096" crc="c673be37" sha1="0762ba98e9a08b7e6063e2a54734becd83df6eb3" offset="000000" /> |
| 201 | 214 | </dataarea> |
| r32624 | r32625 | |
| 208 | 221 | <publisher>Video Technology Ltd.</publisher> |
| 209 | 222 | <info name="serial" value="8013" /> |
| 210 | 223 | <part name="cart" interface="crvision_cart"> |
| 224 | <feature name="slot" value="crv_rom6k" /> |
| 211 | 225 | <dataarea name="rom" size="6144"> |
| 212 | 226 | <rom name="deeps6k_01.bin" size="4096" crc="5112b792" sha1="af917b6ab438b87cde5325d27ccf94c4544c4c9e" offset="0x0000" /> |
| 213 | 227 | <rom name="deeps6k_02.bin" size="2048" crc="2410042a" sha1="e3813c79b8e504f10d6bfc8a6d39ea284fbc26b6" offset="0x1000" /> |
| r32624 | r32625 | |
| 221 | 235 | <publisher>Video Technology Ltd.</publisher> |
| 222 | 236 | <info name="serial" value="8013" /> |
| 223 | 237 | <part name="cart" interface="crvision_cart"> |
| 238 | <feature name="slot" value="crv_rom8k" /> |
| 224 | 239 | <dataarea name="rom" size="8192"> |
| 225 | 240 | <rom name="deeps8k.bin" size="8192" crc="2e0ddd86" sha1="d25f82aab473d4c7850ab626ae92d1eac69dbb32" offset="000000" /> |
| 226 | 241 | </dataarea> |
| r32624 | r32625 | |
| 233 | 248 | <publisher>Video Technology Ltd.</publisher> |
| 234 | 249 | <info name="serial" value="8020" /> |
| 235 | 250 | <part name="cart" interface="crvision_cart"> |
| 251 | <feature name="slot" value="crv_rom10k" /> |
| 236 | 252 | <dataarea name="rom" size="10240"> |
| 237 | 253 | <rom name="locom10k_01.bin" size="8192" crc="5d2e1c6e" sha1="f327434889ac91397c61cdacb88d21cd0df256ce" offset="0x0000" /> |
| 238 | 254 | <rom name="locom10k_02.bin" size="2048" crc="a4e5c224" sha1="ffa0fcb1fa524ee51e63017412007881a50b8971" offset="0x2000" /> |
| r32624 | r32625 | |
| 246 | 262 | <publisher>Video Technology Ltd.</publisher> |
| 247 | 263 | <info name="serial" value="8020" /> |
| 248 | 264 | <part name="cart" interface="crvision_cart"> |
| 265 | <feature name="slot" value="crv_rom12k" /> |
| 249 | 266 | <dataarea name="rom" size="12288"> |
| 250 | 267 | <rom name="locom12k_01.bin" size="8192" crc="5d2e1c6e" sha1="f327434889ac91397c61cdacb88d21cd0df256ce" offset="0x0000" /> |
| 251 | 268 | <rom name="locom12k_02.bin" size="4096" crc="62c6b8e0" sha1="2ebf87eaf6a60bc0d79020a20360916a2c1f0f80" offset="0x2000" /> |
| r32624 | r32625 | |
| 259 | 276 | <publisher>Video Technology Ltd.</publisher> |
| 260 | 277 | <info name="serial" value="8015" /> |
| 261 | 278 | <part name="cart" interface="crvision_cart"> |
| 279 | <feature name="slot" value="crv_rom8k" /> |
| 262 | 280 | <dataarea name="rom" size="8192"> |
| 263 | 281 | <rom name="mousepuz.bin" size="8192" crc="e954c46b" sha1="c3aa8077756a6101009645711687edd59bf90a98" offset="000000" /> |
| 264 | 282 | </dataarea> |
| r32624 | r32625 | |
| 271 | 289 | <publisher>Video Technology Ltd.</publisher> |
| 272 | 290 | <info name="serial" value="8015" /> |
| 273 | 291 | <part name="cart" interface="crvision_cart"> |
| 292 | <feature name="slot" value="crv_rom8k" /> |
| 274 | 293 | <dataarea name="rom" size="8192"> |
| 275 | 294 | <rom name="mousepuza_01.bin" size="4096" crc="42fa1f8b" sha1="d8da4361cd2c3eb87abb41c4a05ee5136ac1b8b0" offset="0x0000" /> |
| 276 | 295 | <rom name="mousepuza_02.bin" size="4096" crc="09f79bd9" sha1="8325d9b017eab11e24c637599961736b6c25e24e" offset="0x1000" /> |
| r32624 | r32625 | |
| 284 | 303 | <publisher>Video Technology Ltd.</publisher> |
| 285 | 304 | <info name="serial" value="8016" /> |
| 286 | 305 | <part name="cart" interface="crvision_cart"> |
| 306 | <feature name="slot" value="crv_rom12k" /> |
| 287 | 307 | <dataarea name="rom" size="12288"> |
| 288 | 308 | <rom name="musicmak_01.bin" size="8192" crc="47ac1882" sha1="bdf343bff5436a4b91ffad20971c3b1c05711307" offset="0x0000" /> |
| 289 | 309 | <rom name="musicmak_02.bin" size="4096" crc="e8caa6d2" sha1="9d3d95e18416fbe0ab30b7d5e3e2518b6a520323" offset="0x2000" /> |
| r32624 | r32625 | |
| 297 | 317 | <publisher>Video Technology Ltd.</publisher> |
| 298 | 318 | <info name="serial" value="8005" /> |
| 299 | 319 | <part name="cart" interface="crvision_cart"> |
| 320 | <feature name="slot" value="crv_rom6k" /> |
| 300 | 321 | <dataarea name="rom" size="6144"> |
| 301 | 322 | <rom name="planetd_01.bin" size="4096" crc="71cffcdd" sha1="cd72a22d44c9a4be2346847b8ef6e32d929533ae" offset="0x0000" /> |
| 302 | 323 | <rom name="planetd_02.bin" size="2048" crc="734528a9" sha1="39772785538bb7ee061c9bcaa14768328d45674d" offset="0x1000" /> |
| r32624 | r32625 | |
| 310 | 331 | <publisher>Video Technology Ltd.</publisher> |
| 311 | 332 | <info name="serial" value="8005" /> |
| 312 | 333 | <part name="cart" interface="crvision_cart"> |
| 334 | <feature name="slot" value="crv_rom8k" /> |
| 313 | 335 | <dataarea name="rom" size="8192"> |
| 314 | 336 | <rom name="planet8k.bin" size="8192" crc="4457c7b3" sha1="0be7935db55ecf3e70b96e071ecbc489bd22dc73" offset="000000" /> |
| 315 | 337 | </dataarea> |
| r32624 | r32625 | |
| 321 | 343 | <year>1981</year> |
| 322 | 344 | <publisher>Video Technology Ltd.</publisher> |
| 323 | 345 | <part name="cart" interface="crvision_cart"> |
| 346 | <feature name="slot" value="crv_rom8k" /> |
| 324 | 347 | <dataarea name="rom" size="8192"> |
| 325 | 348 | <rom name="planetd2.bin" size="8192" crc="4b463c18" sha1="1fd80a3921f2487d9eee2b6d8bb3955d22857d0e" offset="000000" /> |
| 326 | 349 | </dataarea> |
| r32624 | r32625 | |
| 333 | 356 | <publisher>Video Technology Ltd.</publisher> |
| 334 | 357 | <info name="serial" value="8009" /> |
| 335 | 358 | <part name="cart" interface="crvision_cart"> |
| 359 | <feature name="slot" value="crv_rom8k" /> |
| 336 | 360 | <dataarea name="rom" size="8192"> |
| 337 | 361 | <rom name="policej.bin" size="8192" crc="db3d50b2" sha1="0fe6d15c973c73b53c33945e213bc2671ff5d7df" offset="000000" /> |
| 338 | 362 | </dataarea> |
| r32624 | r32625 | |
| 345 | 369 | <publisher>Video Technology Ltd.</publisher> |
| 346 | 370 | <info name="serial" value="8009" /> |
| 347 | 371 | <part name="cart" interface="crvision_cart"> |
| 372 | <feature name="slot" value="crv_rom8k" /> |
| 348 | 373 | <dataarea name="rom" size="8192"> |
| 349 | 374 | <rom name="policej_01.bin" size="4096" crc="c6c4e3f4" sha1="8d4f056f77d79b0a9a76d14772f76a0b81b526c6" offset="0x0000" /> |
| 350 | 375 | <rom name="policej_02.bin" size="4096" crc="bd48d4dc" sha1="20e11659285172e6579d57d6a1a769818762c856" offset="0x1000" /> |
| r32624 | r32625 | |
| 358 | 383 | <publisher>Video Technology Ltd.</publisher> |
| 359 | 384 | <info name="serial" value="8009" /> |
| 360 | 385 | <part name="cart" interface="crvision_cart"> |
| 386 | <feature name="slot" value="crv_rom8k" /> |
| 361 | 387 | <dataarea name="rom" size="8192"> |
| 362 | 388 | <!-- Apparently, even internally to V-Tech this Donkey Kong clone was acknowledged as such ;-) --> |
| 363 | 389 | <rom name="dk a.bin" size="4096" crc="3033cafe" sha1="a626fd7e1e117d4dba8770f7ac3f85886a6d7022" offset="0x0000" /> |
| r32624 | r32625 | |
| 372 | 398 | <publisher>Video Technology Ltd.</publisher> |
| 373 | 399 | <info name="serial" value="8017" /> |
| 374 | 400 | <part name="cart" interface="crvision_cart"> |
| 401 | <feature name="slot" value="crv_rom12k" /> |
| 375 | 402 | <dataarea name="rom" size="12288"> |
| 376 | 403 | <rom name="soccer_01.bin" size="8192" crc="9247087c" sha1="3fe1364024895f8f0e83235a429f884a8831553e" offset="0x0000" /> |
| 377 | 404 | <rom name="soccer_02.bin" size="4096" crc="de284150" sha1="a07befd3a2b1689b2d493ab84928d3aa109f88e6" offset="0x2000" /> |
| r32624 | r32625 | |
| 385 | 412 | <publisher>Video Technology Ltd.</publisher> |
| 386 | 413 | <info name="serial" value="8003" /> |
| 387 | 414 | <part name="cart" interface="crvision_cart"> |
| 415 | <feature name="slot" value="crv_rom4k" /> |
| 388 | 416 | <dataarea name="rom" size="4096"> |
| 389 | 417 | <rom name="sonicinv.bin" size="4096" crc="767a1f38" sha1="d77f49bfa951ce0ba505ad4f05f3d0adb697811f" offset="000000" /> |
| 390 | 418 | </dataarea> |
| r32624 | r32625 | |
| 396 | 424 | <year>1984</year> |
| 397 | 425 | <publisher>Video Technology Ltd.</publisher> |
| 398 | 426 | <part name="cart" interface="crvision_cart"> |
| 427 | <feature name="slot" value="crv_rom8k" /> |
| 399 | 428 | <dataarea name="rom" size="8192"> |
| 400 | 429 | <rom name="stoneage.bin" size="8192" crc="74365e94" sha1="dafe57b0ea5da7431bd5b0393bae7cf256c9a562" offset="000000" /> |
| 401 | 430 | </dataarea> |
| r32624 | r32625 | |
| 408 | 437 | <publisher>Video Technology Ltd.</publisher> |
| 409 | 438 | <info name="serial" value="8002" /> |
| 410 | 439 | <part name="cart" interface="crvision_cart"> |
| 440 | <feature name="slot" value="crv_rom6k" /> |
| 411 | 441 | <dataarea name="rom" size="6144"> |
| 412 | 442 | <rom name="tankatk_01.bin" size="4096" crc="3bd183ff" sha1="c5b7c59ea282238550acd5055fb197aa83163eea" offset="0x0000" /> |
| 413 | 443 | <rom name="tankatk_02.bin" size="2048" crc="114a3a00" sha1="54a7ae46ab79109cbda7401204e3cec13a0b6152" offset="0x1000" /> |
| r32624 | r32625 | |
| 421 | 451 | <publisher>Video Technology Ltd.</publisher> |
| 422 | 452 | <info name="serial" value="8002" /> |
| 423 | 453 | <part name="cart" interface="crvision_cart"> |
| 454 | <feature name="slot" value="crv_rom8k" /> |
| 424 | 455 | <dataarea name="rom" size="8192"> |
| 425 | 456 | <rom name="tankat8k.bin" size="8192" crc="2621ffca" sha1="f3c69a848f1246faf6f9558c0badddd3db626e5f" offset="000000" /> |
| 426 | 457 | </dataarea> |
| r32624 | r32625 | |
| 433 | 464 | <publisher>Video Technology Ltd.</publisher> |
| 434 | 465 | <info name="serial" value="8004" /> |
| 435 | 466 | <part name="cart" interface="crvision_cart"> |
| 467 | <feature name="slot" value="crv_rom6k" /> |
| 436 | 468 | <dataarea name="rom" size="6144"> |
| 437 | 469 | <rom name="tens6k_01.bin" size="4096" crc="42d5be57" sha1="e8ddc68c418f43dacc9170c335bd66bd7802821c" offset="0x0000" /> |
| 438 | 470 | <rom name="tens6k_02.bin" size="2048" crc="9fac0db1" sha1="ecfb92eb58f916d5b5520bb351c71fc78837a165" offset="0x1000" /> |
| r32624 | r32625 | |
| 447 | 479 | <publisher>Video Technology Ltd.</publisher> |
| 448 | 480 | <info name="serial" value="8004" /> |
| 449 | 481 | <part name="cart" interface="crvision_cart"> |
| 482 | <feature name="slot" value="crv_rom8k" /> |
| 450 | 483 | <dataarea name="rom" size="8192"> |
| 451 | 484 | <rom name="tens8k.bin" size="8192" crc="8bed8745" sha1="690a4dcb412e517b172ec5b44c86863ef63b1246" offset="000000" /> |
| 452 | 485 | </dataarea> |
| r32624 | r32625 | |
| 459 | 492 | <publisher>Video Technology Ltd.</publisher> |
| 460 | 493 | <info name="serial" value="8004" /> |
| 461 | 494 | <part name="cart" interface="crvision_cart"> |
| 495 | <feature name="slot" value="crv_rom8k" /> |
| 462 | 496 | <dataarea name="rom" size="8192"> |
| 463 | 497 | <rom name="tens8k_01.bin" size="4096" crc="bfa874cd" sha1="91d1f66ac850728b65045c61b403fb52557336be" offset="0x0000" /> |
| 464 | 498 | <rom name="tens8k_02.bin" size="4096" crc="42d5be57" sha1="e8ddc68c418f43dacc9170c335bd66bd7802821c" offset="0x1000" /> |
| r32624 | r32625 | |
| 472 | 506 | <publisher>Video Technology Ltd.</publisher> |
| 473 | 507 | <info name="serial" value="8004" /> |
| 474 | 508 | <part name="cart" interface="crvision_cart"> |
| 509 | <feature name="slot" value="crv_rom8k" /> |
| 475 | 510 | <dataarea name="rom" size="8192"> |
| 476 | 511 | <rom name="tenscs8k.bin" size="8192" crc="098d1cbb" sha1="7ea0c5aa6072e2c9eab711f278fd939986a92602" offset="000000" /> |
| 477 | 512 | </dataarea> |
| r32624 | r32625 | |
| 484 | 519 | <publisher>Video Technology Ltd.</publisher> |
| 485 | 520 | <info name="serial" value="Y-1620" /> |
| 486 | 521 | <part name="cart" interface="crvision_cart"> |
| 522 | <feature name="slot" value="crv_rom6k" /> |
| 487 | 523 | <dataarea name="rom" size="6144"> |
| 488 | 524 | <rom name="tensds6k_01.bin" size="4096" crc="97ab341a" sha1="7cf7ea8a2f70bdbd165a9a523fe50f15b36c9a0e" offset="0x0000" /> |
| 489 | 525 | <rom name="tensds6k_02.bin" size="2048" crc="d669020b" sha1="523bf43e6c237d04e9649bf7beb1da278a346752" offset="0x1000" /> |
| r32624 | r32625 | |
| 498 | 534 | <publisher>Video Technology Ltd.</publisher> |
| 499 | 535 | <info name="serial" value="Y-1620" /> |
| 500 | 536 | <part name="cart" interface="crvision_cart"> |
| 537 | <feature name="slot" value="crv_rom8k" /> |
| 501 | 538 | <dataarea name="rom" size="8192"> |
| 502 | 539 | <rom name="tensds8k.bin" size="8192" crc="c914c092" sha1="7b64efddb590332c192f6c4a6accce85a6d402c3" offset="000000" /> |
| 503 | 540 | </dataarea> |
| r32624 | r32625 | |
| 512 | 549 | <year>198?</year> |
| 513 | 550 | <publisher>Richard Hayter</publisher> |
| 514 | 551 | <part name="cart" interface="crvision_cart"> |
| 552 | <feature name="slot" value="crv_rom4k" /> |
| 515 | 553 | <dataarea name="rom" size="4096"> |
| 516 | 554 | <rom name="hapmon.bin" size="4096" crc="15d07b96" sha1="89359dca952bc90644dfd7f546c184a8165faa14" offset="000000" /> |
| 517 | 555 | </dataarea> |
| r32624 | r32625 | |
| 524 | 562 | <year>1983</year> |
| 525 | 563 | <publisher>Video Technology Ltd.</publisher> |
| 526 | 564 | <part name="cart" interface="crvision_cart"> |
| 565 | <feature name="slot" value="crv_rom18k"> |
| 527 | 566 | <dataarea name="rom" size="18432"> |
| 528 | 567 | <rom name="chopper rescue (alt).rom" size="18432" crc="48e7e8b8" sha1="037088f15830fdd43081edddc5d683318d67ee01" offset="000000" /> |
| 529 | 568 | </dataarea> |
| r32624 | r32625 | |
| 535 | 574 | <year>1983</year> |
| 536 | 575 | <publisher>Video Technology Ltd.</publisher> |
| 537 | 576 | <part name="cart" interface="crvision_cart"> |
| 577 | <feature name="slot" value="crv_rom18k"> |
| 538 | 578 | <dataarea name="rom" size="18432"> |
| 539 | 579 | <rom name="chopper rescue.rom" size="18432" crc="14179570" sha1="fde339c8dbd44b3332e888cd24d3d492cf066b94" offset="000000" /> |
| 540 | 580 | </dataarea> |
trunk/src/mame/drivers/vectrex.c
| r32624 | r32625 | |
| 13 | 13 | #include "video/vector.h" |
| 14 | 14 | #include "machine/6522via.h" |
| 15 | 15 | #include "includes/vectrex.h" |
| 16 | | #include "imagedev/cartslot.h" |
| 17 | 16 | #include "sound/ay8910.h" |
| 18 | 17 | #include "sound/dac.h" |
| 19 | 18 | #include "machine/nvram.h" |
| 20 | 19 | |
| 21 | 20 | |
| 22 | 21 | static ADDRESS_MAP_START(vectrex_map, AS_PROGRAM, 8, vectrex_state ) |
| 23 | | AM_RANGE(0x0000, 0x7fff) AM_RAMBANK("bank1") AM_REGION("maincpu", 0) |
| 22 | AM_RANGE(0x0000, 0x7fff) AM_NOP // cart area, handled at machine_start |
| 24 | 23 | AM_RANGE(0xc800, 0xcbff) AM_RAM AM_MIRROR(0x0400) AM_SHARE("gce_vectorram") |
| 25 | 24 | AM_RANGE(0xd000, 0xd7ff) AM_READWRITE(vectrex_via_r, vectrex_via_w) |
| 26 | | AM_RANGE(0xe000, 0xffff) AM_ROM |
| 25 | AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0) |
| 27 | 26 | ADDRESS_MAP_END |
| 28 | 27 | |
| 29 | 28 | static INPUT_PORTS_START(vectrex) |
| r32624 | r32625 | |
| 84 | 83 | |
| 85 | 84 | INPUT_PORTS_END |
| 86 | 85 | |
| 86 | static SLOT_INTERFACE_START(vectrex_cart) |
| 87 | SLOT_INTERFACE_INTERNAL("vec_rom", VECTREX_ROM_STD) |
| 88 | SLOT_INTERFACE_INTERNAL("vec_rom64k", VECTREX_ROM_64K) |
| 89 | SLOT_INTERFACE_INTERNAL("vec_sram", VECTREX_ROM_SRAM) |
| 90 | SLOT_INTERFACE_END |
| 91 | |
| 87 | 92 | static MACHINE_CONFIG_START( vectrex, vectrex_state ) |
| 88 | 93 | /* basic machine hardware */ |
| 89 | 94 | MCFG_CPU_ADD("maincpu", M6809, XTAL_6MHz / 4) |
| r32624 | r32625 | |
| 97 | 102 | MCFG_SCREEN_VISIBLE_AREA(0, 399, 0, 299) |
| 98 | 103 | MCFG_SCREEN_UPDATE_DRIVER(vectrex_state, screen_update_vectrex) |
| 99 | 104 | |
| 100 | | |
| 101 | 105 | /* sound hardware */ |
| 102 | 106 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 103 | 107 | MCFG_DAC_ADD("dac") |
| r32624 | r32625 | |
| 118 | 122 | MCFG_VIA6522_IRQ_HANDLER(WRITELINE(vectrex_state, vectrex_via_irq)) |
| 119 | 123 | |
| 120 | 124 | /* cartridge */ |
| 121 | | MCFG_CARTSLOT_ADD("cart") |
| 122 | | MCFG_CARTSLOT_EXTENSION_LIST("bin,gam,vec") |
| 123 | | MCFG_CARTSLOT_NOT_MANDATORY |
| 124 | | MCFG_CARTSLOT_LOAD(vectrex_state,vectrex_cart) |
| 125 | | MCFG_CARTSLOT_INTERFACE("vectrex_cart") |
| 125 | MCFG_VECTREX_CARTRIDGE_ADD("cartslot", vectrex_cart, NULL) |
| 126 | 126 | |
| 127 | 127 | /* software lists */ |
| 128 | 128 | MCFG_SOFTWARE_LIST_ADD("cart_list","vectrex") |
| 129 | 129 | MACHINE_CONFIG_END |
| 130 | 130 | |
| 131 | 131 | ROM_START(vectrex) |
| 132 | | ROM_REGION(0x18000,"maincpu", 0) |
| 132 | ROM_REGION(0x2000,"maincpu", 0) |
| 133 | 133 | ROM_SYSTEM_BIOS(0, "bios0", "exec rom") |
| 134 | | ROMX_LOAD("exec_rom.bin", 0xe000, 0x2000, CRC(ba13fb57) SHA1(65d07426b520ddd3115d40f255511e0fd2e20ae7), ROM_BIOS(1) ) |
| 134 | ROMX_LOAD("exec_rom.bin", 0x0000, 0x2000, CRC(ba13fb57) SHA1(65d07426b520ddd3115d40f255511e0fd2e20ae7), ROM_BIOS(1) ) |
| 135 | 135 | ROM_SYSTEM_BIOS(1, "bios1", "exec rom intl 284001-1") |
| 136 | | ROMX_LOAD("exec_rom_intl_284001-1.bin", 0xe000, 0x2000, CRC(6d2bd167) SHA1(77a220d5d98846b606dff608f7b5d00183ec3bab), ROM_BIOS(2) ) |
| 136 | ROMX_LOAD("exec_rom_intl_284001-1.bin", 0x0000, 0x2000, CRC(6d2bd167) SHA1(77a220d5d98846b606dff608f7b5d00183ec3bab), ROM_BIOS(2) ) |
| 137 | 137 | |
| 138 | 138 | // The following fastboots are listed here for reference and documentation |
| 139 | 139 | // ROM_SYSTEM_BIOS(2, "bios2", "us-fastboot hack") |
| 140 | | // ROMX_LOAD("us-fastboot.bin", 0xe000, 0x2000, CRa6e4dac4) SHA1(e0900be6d6858b985fd7f0999d864b2fceaf01a1), ROM_BIOS(3) ) |
| 140 | // ROMX_LOAD("us-fastboot.bin", 0x0000, 0x2000, CRa6e4dac4) SHA1(e0900be6d6858b985fd7f0999d864b2fceaf01a1), ROM_BIOS(3) ) |
| 141 | 141 | // ROM_SYSTEM_BIOS(3, "bios3", "intl-fastboot hack") |
| 142 | | // ROMX_LOAD("intl-fastboot.bin", 0xe000, 0x2000, CRC(71dcf0f4) SHA1(2a257c5111f5cee841bd14acaa9df6496aaf3d8b), ROM_BIOS(4) ) |
| 142 | // ROMX_LOAD("intl-fastboot.bin", 0x0000, 0x2000, CRC(71dcf0f4) SHA1(2a257c5111f5cee841bd14acaa9df6496aaf3d8b), ROM_BIOS(4) ) |
| 143 | 143 | |
| 144 | 144 | ROM_END |
| 145 | 145 | |
| r32624 | r32625 | |
| 218 | 218 | MCFG_DEVICE_MODIFY("via6522_0") |
| 219 | 219 | MCFG_VIA6522_READPB_HANDLER(READ8(vectrex_state, vectrex_s1_via_pb_r)) |
| 220 | 220 | |
| 221 | | MCFG_DEVICE_REMOVE("cart") |
| 221 | MCFG_DEVICE_REMOVE("cartslot") |
| 222 | 222 | MACHINE_CONFIG_END |
| 223 | 223 | |
| 224 | 224 | ROM_START(raaspec) |
trunk/src/mame/machine/vectrex.c
| r32624 | r32625 | |
| 42 | 42 | static const double narrow_escape_angles[3] = {0, 0.1631, 0.3305}; |
| 43 | 43 | static const double crazy_coaster_angles[3] = {0, 0.1631, 0.3305}; |
| 44 | 44 | |
| 45 | | |
| 46 | 45 | static const double unknown_game_angles[3] = {0,0.16666666, 0.33333333}; |
| 47 | 46 | |
| 48 | 47 | |
| 49 | | int vectrex_state::vectrex_verify_cart(char *data) |
| 50 | | { |
| 51 | | /* Verify the file is accepted by the Vectrex bios */ |
| 52 | | if (!memcmp(data,"g GCE", 5)) |
| 53 | | return IMAGE_VERIFY_PASS; |
| 54 | | else |
| 55 | | return IMAGE_VERIFY_FAIL; |
| 56 | | } |
| 57 | 48 | |
| 58 | | |
| 59 | 49 | void vectrex_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) |
| 60 | 50 | { |
| 61 | 51 | switch (id) |
| r32624 | r32625 | |
| 87 | 77 | } |
| 88 | 78 | |
| 89 | 79 | |
| 90 | | /********************************************************************* |
| 91 | 80 | |
| 92 | | ROM load and id functions |
| 93 | | |
| 94 | | *********************************************************************/ |
| 95 | | |
| 96 | | DEVICE_IMAGE_LOAD_MEMBER(vectrex_state,vectrex_cart) |
| 97 | | { |
| 98 | | UINT8 *mem = memregion("maincpu")->base(); |
| 99 | | if (image.software_entry() == NULL) |
| 100 | | { |
| 101 | | image.fread( mem, 0x8000); |
| 102 | | if (image.length() > 0x8000) |
| 103 | | { |
| 104 | | image.fread( mem+0x10000, 0x8000); |
| 105 | | m_64k_cart = 1; |
| 106 | | } |
| 107 | | } else { |
| 108 | | int size = image.get_software_region_length("rom"); |
| 109 | | memcpy(mem, image.get_software_region("rom"), size); |
| 110 | | } |
| 111 | | |
| 112 | | /* check image! */ |
| 113 | | if (vectrex_verify_cart((char*)mem) == IMAGE_VERIFY_FAIL) |
| 114 | | { |
| 115 | | logerror("Invalid image!\n"); |
| 116 | | return IMAGE_INIT_FAIL; |
| 117 | | } |
| 118 | | |
| 119 | | if (memcmp(mem + 0x06,"SRAM",4)) { |
| 120 | | m_maincpu->space(AS_PROGRAM).unmap_write(0x0000, 0x7fff); |
| 121 | | } |
| 122 | | |
| 123 | | /* If VIA T2 starts, reset refresh timer. |
| 124 | | This is the best strategy for most games. */ |
| 125 | | m_reset_refresh = 1; |
| 126 | | |
| 127 | | m_imager_angles = narrow_escape_angles; |
| 128 | | |
| 129 | | /* let's do this 3D detection with a strcmp using data inside the cart images */ |
| 130 | | /* slightly prettier than having to hardcode CRCs */ |
| 131 | | |
| 132 | | /* handle 3D Narrow Escape but skip the 2-d hack of it from Fred Taft */ |
| 133 | | if (!memcmp(mem + 0x11,"NARROW",6) && (((char*)mem)[0x39] == 0x0c)) |
| 134 | | { |
| 135 | | m_imager_angles = narrow_escape_angles; |
| 136 | | } |
| 137 | | |
| 138 | | if (!memcmp(mem + 0x11,"CRAZY COASTER", 13)) |
| 139 | | { |
| 140 | | m_imager_angles = crazy_coaster_angles; |
| 141 | | } |
| 142 | | |
| 143 | | if (!memcmp(mem + 0x11,"3D MINE STORM", 13)) |
| 144 | | { |
| 145 | | m_imager_angles = minestorm_3d_angles; |
| 146 | | |
| 147 | | /* Don't reset T2 each time it's written. |
| 148 | | This would cause jerking in mine3. */ |
| 149 | | m_reset_refresh = 0; |
| 150 | | } |
| 151 | | |
| 152 | | return IMAGE_INIT_PASS; |
| 153 | | } |
| 154 | | |
| 155 | | |
| 156 | 81 | /********************************************************************* |
| 157 | 82 | |
| 158 | 83 | Vectrex configuration (mainly 3D Imager) |
| r32624 | r32625 | |
| 377 | 302 | |
| 378 | 303 | DRIVER_INIT_MEMBER(vectrex_state,vectrex) |
| 379 | 304 | { |
| 380 | | int i; |
| 381 | | |
| 382 | | m_64k_cart = 0; |
| 383 | 305 | m_imager_angles = unknown_game_angles; |
| 384 | 306 | m_beam_color = rgb_t::white; |
| 385 | | for (i=0; i<ARRAY_LENGTH(m_imager_colors); i++) |
| 307 | for (int i = 0; i < ARRAY_LENGTH(m_imager_colors); i++) |
| 386 | 308 | m_imager_colors[i] = rgb_t::white; |
| 387 | 309 | |
| 388 | 310 | /* |
| r32624 | r32625 | |
| 394 | 316 | m_gce_vectorram[0x7e] = machine().rand() | 1; |
| 395 | 317 | m_gce_vectorram[0x7f] = machine().rand() | 1; |
| 396 | 318 | } |
| 319 | |
| 320 | void vectrex_state::machine_start() |
| 321 | { |
| 322 | if (m_cart && m_cart->exists()) |
| 323 | { |
| 324 | // install cart accesses |
| 325 | if (m_cart->get_type() == VECTREX_SRAM) |
| 326 | m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0000, 0x7fff, read8_delegate(FUNC(vectrex_cart_slot_device::read_rom),(vectrex_cart_slot_device*)m_cart), write8_delegate(FUNC(vectrex_cart_slot_device::write_ram),(vectrex_cart_slot_device*)m_cart)); |
| 327 | else |
| 328 | m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x7fff, read8_delegate(FUNC(vectrex_cart_slot_device::read_rom),(vectrex_cart_slot_device*)m_cart)); |
| 329 | |
| 330 | // setup 3d imager and refresh timer |
| 331 | |
| 332 | // If VIA T2 starts, reset refresh timer. This is the best strategy for most games. |
| 333 | m_reset_refresh = 1; |
| 334 | m_imager_angles = narrow_escape_angles; |
| 335 | |
| 336 | // let's do this 3D detection |
| 337 | switch (m_cart->get_vec3d()) |
| 338 | { |
| 339 | case VEC3D_MINEST: |
| 340 | m_imager_angles = minestorm_3d_angles; |
| 341 | // Don't reset T2 each time it's written. This would cause jerking in mine3. |
| 342 | m_reset_refresh = 0; |
| 343 | break; |
| 344 | case VEC3D_CCOAST: |
| 345 | m_imager_angles = crazy_coaster_angles; |
| 346 | break; |
| 347 | case VEC3D_NARROW: |
| 348 | m_imager_angles = narrow_escape_angles; |
| 349 | break; |
| 350 | default: |
| 351 | break; |
| 352 | } |
| 353 | } |
| 354 | } |
trunk/src/emu/bus/crvision/rom.c
| r0 | r32625 | |
| 1 | /*********************************************************************************************************** |
| 2 | |
| 3 | |
| 4 | V-Tech CreatiVision cart emulation |
| 5 | |
| 6 | |
| 7 | ***********************************************************************************************************/ |
| 8 | |
| 9 | |
| 10 | #include "emu.h" |
| 11 | #include "rom.h" |
| 12 | |
| 13 | |
| 14 | //------------------------------------------------- |
| 15 | // crvision_rom_device - constructor |
| 16 | //------------------------------------------------- |
| 17 | |
| 18 | const device_type CRVISION_ROM_4K = &device_creator<crvision_rom_device>; |
| 19 | const device_type CRVISION_ROM_6K = &device_creator<crvision_rom6k_device>; |
| 20 | const device_type CRVISION_ROM_8K = &device_creator<crvision_rom8k_device>; |
| 21 | const device_type CRVISION_ROM_10K = &device_creator<crvision_rom10k_device>; |
| 22 | const device_type CRVISION_ROM_12K = &device_creator<crvision_rom12k_device>; |
| 23 | const device_type CRVISION_ROM_16K = &device_creator<crvision_rom16k_device>; |
| 24 | const device_type CRVISION_ROM_18K = &device_creator<crvision_rom18k_device>; |
| 25 | |
| 26 | |
| 27 | crvision_rom_device::crvision_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) |
| 28 | : device_t(mconfig, type, name, tag, owner, clock, shortname, source), |
| 29 | device_crvision_cart_interface(mconfig, *this) |
| 30 | { |
| 31 | } |
| 32 | |
| 33 | crvision_rom_device::crvision_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 34 | : device_t(mconfig, CRVISION_ROM_4K, "CreatiVision 4K Carts", tag, owner, clock, "crvision_4k", __FILE__), |
| 35 | device_crvision_cart_interface(mconfig, *this) |
| 36 | { |
| 37 | } |
| 38 | |
| 39 | crvision_rom6k_device::crvision_rom6k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 40 | : crvision_rom_device(mconfig, CRVISION_ROM_6K, "CreatiVision 6K Carts", tag, owner, clock, "crvision_6k", __FILE__) |
| 41 | { |
| 42 | } |
| 43 | |
| 44 | crvision_rom8k_device::crvision_rom8k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 45 | : crvision_rom_device(mconfig, CRVISION_ROM_8K, "CreatiVision 8K Carts", tag, owner, clock, "crvision_8k", __FILE__) |
| 46 | { |
| 47 | } |
| 48 | |
| 49 | crvision_rom10k_device::crvision_rom10k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 50 | : crvision_rom_device(mconfig, CRVISION_ROM_10K, "CreatiVision 10K Carts", tag, owner, clock, "crvision_10k", __FILE__) |
| 51 | { |
| 52 | } |
| 53 | |
| 54 | crvision_rom12k_device::crvision_rom12k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 55 | : crvision_rom_device(mconfig, CRVISION_ROM_12K, "CreatiVision 12K Carts", tag, owner, clock, "crvision_12k", __FILE__) |
| 56 | { |
| 57 | } |
| 58 | |
| 59 | crvision_rom16k_device::crvision_rom16k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 60 | : crvision_rom_device(mconfig, CRVISION_ROM_16K, "CreatiVision 16K Carts", tag, owner, clock, "crvision_16k", __FILE__) |
| 61 | { |
| 62 | } |
| 63 | |
| 64 | crvision_rom18k_device::crvision_rom18k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 65 | : crvision_rom_device(mconfig, CRVISION_ROM_18K, "CreatiVision 18K Carts", tag, owner, clock, "crvision_18k", __FILE__) |
| 66 | { |
| 67 | } |
| 68 | |
| 69 | |
| 70 | /*------------------------------------------------- |
| 71 | mapper specific handlers |
| 72 | -------------------------------------------------*/ |
| 73 | |
| 74 | READ8_MEMBER(crvision_rom_device::read_rom80) |
| 75 | { |
| 76 | offset &= 0x1fff; |
| 77 | if (offset < 0x1000) |
| 78 | return 0xff; |
| 79 | |
| 80 | return m_rom[offset & 0xfff]; |
| 81 | } |
| 82 | |
| 83 | |
| 84 | READ8_MEMBER(crvision_rom6k_device::read_rom80) |
| 85 | { |
| 86 | offset &= 0x1fff; |
| 87 | if (offset < 0x1000) |
| 88 | return m_rom[0x1000 + (offset & 0x7ff)]; |
| 89 | |
| 90 | return m_rom[offset & 0xfff]; |
| 91 | } |
| 92 | |
| 93 | |
| 94 | READ8_MEMBER(crvision_rom8k_device::read_rom80) |
| 95 | { |
| 96 | return m_rom[offset & 0x1fff]; |
| 97 | } |
| 98 | |
| 99 | |
| 100 | READ8_MEMBER(crvision_rom10k_device::read_rom80) |
| 101 | { |
| 102 | return m_rom[offset & 0x1fff]; |
| 103 | } |
| 104 | |
| 105 | READ8_MEMBER(crvision_rom10k_device::read_rom40) |
| 106 | { |
| 107 | return m_rom[0x2000 + (offset & 0x7ff)]; |
| 108 | } |
| 109 | |
| 110 | |
| 111 | READ8_MEMBER(crvision_rom12k_device::read_rom80) |
| 112 | { |
| 113 | return m_rom[offset & 0x1fff]; |
| 114 | } |
| 115 | |
| 116 | READ8_MEMBER(crvision_rom12k_device::read_rom40) |
| 117 | { |
| 118 | return m_rom[0x2000 + (offset & 0xfff)]; |
| 119 | } |
| 120 | |
| 121 | |
| 122 | READ8_MEMBER(crvision_rom16k_device::read_rom80) |
| 123 | { |
| 124 | // lower 8K in 0xa000-0xbfff, higher 8K in 0x8000-0x9fff |
| 125 | return m_rom[offset ^ 0x2000]; |
| 126 | } |
| 127 | |
| 128 | |
| 129 | READ8_MEMBER(crvision_rom18k_device::read_rom80) |
| 130 | { |
| 131 | // lower 8K in 0xa000-0xbfff, higher 8K in 0x8000-0x9fff |
| 132 | return m_rom[offset ^ 0x2000]; |
| 133 | } |
| 134 | |
| 135 | READ8_MEMBER(crvision_rom18k_device::read_rom40) |
| 136 | { |
| 137 | return m_rom[0x4000 + (offset & 0x7ff)]; |
| 138 | } |
trunk/src/emu/bus/crvision/slot.c
| r0 | r32625 | |
| 1 | /*********************************************************************************************************** |
| 2 | |
| 3 | V-Tech CreatiVision cart emulation |
| 4 | (through slot devices) |
| 5 | |
| 6 | ***********************************************************************************************************/ |
| 7 | |
| 8 | |
| 9 | #include "emu.h" |
| 10 | #include "slot.h" |
| 11 | |
| 12 | //************************************************************************** |
| 13 | // GLOBAL VARIABLES |
| 14 | //************************************************************************** |
| 15 | |
| 16 | const device_type CRVISION_CART_SLOT = &device_creator<crvision_cart_slot_device>; |
| 17 | |
| 18 | //************************************************************************** |
| 19 | // CreatiVision Cartridges Interface |
| 20 | //************************************************************************** |
| 21 | |
| 22 | //------------------------------------------------- |
| 23 | // device_crvision_cart_interface - constructor |
| 24 | //------------------------------------------------- |
| 25 | |
| 26 | device_crvision_cart_interface::device_crvision_cart_interface(const machine_config &mconfig, device_t &device) |
| 27 | : device_slot_card_interface(mconfig, device), |
| 28 | m_rom(NULL), |
| 29 | m_rom_size(0) |
| 30 | { |
| 31 | } |
| 32 | |
| 33 | |
| 34 | //------------------------------------------------- |
| 35 | // ~device_crvision_cart_interface - destructor |
| 36 | //------------------------------------------------- |
| 37 | |
| 38 | device_crvision_cart_interface::~device_crvision_cart_interface() |
| 39 | { |
| 40 | } |
| 41 | |
| 42 | //------------------------------------------------- |
| 43 | // rom_alloc - alloc the space for the cart |
| 44 | //------------------------------------------------- |
| 45 | |
| 46 | void device_crvision_cart_interface::rom_alloc(UINT32 size, const char *tag) |
| 47 | { |
| 48 | if (m_rom == NULL) |
| 49 | { |
| 50 | astring tempstring(tag); |
| 51 | tempstring.cat(CRVSLOT_ROM_REGION_TAG); |
| 52 | m_rom = device().machine().memory().region_alloc(tempstring, size, 1, ENDIANNESS_LITTLE)->base(); |
| 53 | m_rom_size = size; |
| 54 | } |
| 55 | } |
| 56 | |
| 57 | |
| 58 | //************************************************************************** |
| 59 | // LIVE DEVICE |
| 60 | //************************************************************************** |
| 61 | |
| 62 | //------------------------------------------------- |
| 63 | // crvision_cart_slot_device - constructor |
| 64 | //------------------------------------------------- |
| 65 | crvision_cart_slot_device::crvision_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : |
| 66 | device_t(mconfig, CRVISION_CART_SLOT, "APF Cartridge Slot", tag, owner, clock, "crvision_cart_slot", __FILE__), |
| 67 | device_image_interface(mconfig, *this), |
| 68 | device_slot_interface(mconfig, *this), |
| 69 | m_type(CRV_4K) |
| 70 | { |
| 71 | } |
| 72 | |
| 73 | |
| 74 | //------------------------------------------------- |
| 75 | // crvision_cart_slot_device - destructor |
| 76 | //------------------------------------------------- |
| 77 | |
| 78 | crvision_cart_slot_device::~crvision_cart_slot_device() |
| 79 | { |
| 80 | } |
| 81 | |
| 82 | //------------------------------------------------- |
| 83 | // device_start - device-specific startup |
| 84 | //------------------------------------------------- |
| 85 | |
| 86 | void crvision_cart_slot_device::device_start() |
| 87 | { |
| 88 | m_cart = dynamic_cast<device_crvision_cart_interface *>(get_card_device()); |
| 89 | } |
| 90 | |
| 91 | //------------------------------------------------- |
| 92 | // device_config_complete - perform any |
| 93 | // operations now that the configuration is |
| 94 | // complete |
| 95 | //------------------------------------------------- |
| 96 | |
| 97 | void crvision_cart_slot_device::device_config_complete() |
| 98 | { |
| 99 | // set brief and instance name |
| 100 | update_names(); |
| 101 | } |
| 102 | |
| 103 | |
| 104 | //------------------------------------------------- |
| 105 | // APF PCB |
| 106 | //------------------------------------------------- |
| 107 | |
| 108 | struct crvision_slot |
| 109 | { |
| 110 | int pcb_id; |
| 111 | const char *slot_option; |
| 112 | }; |
| 113 | |
| 114 | // Here, we take the feature attribute from .xml (i.e. the PCB name) and we assign a unique ID to it |
| 115 | static const crvision_slot slot_list[] = |
| 116 | { |
| 117 | { CRV_4K, "crv_rom4k" }, |
| 118 | { CRV_6K, "crv_rom6k" }, |
| 119 | { CRV_8K, "crv_rom8k" }, |
| 120 | { CRV_10K, "crv_rom10k" }, |
| 121 | { CRV_12K, "crv_rom12k" }, |
| 122 | { CRV_16K, "crv_rom16k" }, |
| 123 | { CRV_18K, "crv_rom18k" } |
| 124 | }; |
| 125 | |
| 126 | static int crvision_get_pcb_id(const char *slot) |
| 127 | { |
| 128 | for (int i = 0; i < ARRAY_LENGTH(slot_list); i++) |
| 129 | { |
| 130 | if (!core_stricmp(slot_list[i].slot_option, slot)) |
| 131 | return slot_list[i].pcb_id; |
| 132 | } |
| 133 | |
| 134 | return 0; |
| 135 | } |
| 136 | |
| 137 | static const char *crvision_get_slot(int type) |
| 138 | { |
| 139 | for (int i = 0; i < ARRAY_LENGTH(slot_list); i++) |
| 140 | { |
| 141 | if (slot_list[i].pcb_id == type) |
| 142 | return slot_list[i].slot_option; |
| 143 | } |
| 144 | |
| 145 | return "crv_rom4k"; |
| 146 | } |
| 147 | |
| 148 | |
| 149 | /*------------------------------------------------- |
| 150 | call load |
| 151 | -------------------------------------------------*/ |
| 152 | |
| 153 | bool crvision_cart_slot_device::call_load() |
| 154 | { |
| 155 | if (m_cart) |
| 156 | { |
| 157 | UINT32 size = (software_entry() == NULL) ? length() : get_software_region_length("rom"); |
| 158 | |
| 159 | if (size > 0x4800) |
| 160 | { |
| 161 | seterror(IMAGE_ERROR_UNSPECIFIED, "Image extends beyond the expected size for an APF cart"); |
| 162 | return IMAGE_INIT_FAIL; |
| 163 | } |
| 164 | |
| 165 | m_cart->rom_alloc(size, tag()); |
| 166 | |
| 167 | if (software_entry() == NULL) |
| 168 | fread(m_cart->get_rom_base(), size); |
| 169 | else |
| 170 | memcpy(m_cart->get_rom_base(), get_software_region("rom"), size); |
| 171 | |
| 172 | if (software_entry() == NULL) |
| 173 | { |
| 174 | m_type = CRV_4K; |
| 175 | |
| 176 | switch (size) |
| 177 | { |
| 178 | case 0x4800: |
| 179 | m_type = CRV_18K; |
| 180 | break; |
| 181 | case 0x4000: |
| 182 | m_type = CRV_16K; |
| 183 | break; |
| 184 | case 0x3000: |
| 185 | m_type = CRV_12K; |
| 186 | break; |
| 187 | case 0x2800: |
| 188 | m_type = CRV_10K; |
| 189 | break; |
| 190 | case 0x2000: |
| 191 | m_type = CRV_8K; |
| 192 | break; |
| 193 | case 0x1800: |
| 194 | m_type = CRV_6K; |
| 195 | break; |
| 196 | case 0x1000: |
| 197 | default: |
| 198 | break; |
| 199 | } |
| 200 | } |
| 201 | else |
| 202 | { |
| 203 | const char *pcb_name = get_feature("slot"); |
| 204 | if (pcb_name) |
| 205 | m_type = crvision_get_pcb_id(pcb_name); |
| 206 | } |
| 207 | |
| 208 | printf("Type: %s\n", crvision_get_slot(m_type)); |
| 209 | |
| 210 | return IMAGE_INIT_PASS; |
| 211 | } |
| 212 | |
| 213 | return IMAGE_INIT_PASS; |
| 214 | } |
| 215 | |
| 216 | |
| 217 | /*------------------------------------------------- |
| 218 | call softlist load |
| 219 | -------------------------------------------------*/ |
| 220 | |
| 221 | bool crvision_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) |
| 222 | { |
| 223 | load_software_part_region(*this, swlist, swname, start_entry); |
| 224 | return TRUE; |
| 225 | } |
| 226 | |
| 227 | |
| 228 | /*------------------------------------------------- |
| 229 | get default card software |
| 230 | -------------------------------------------------*/ |
| 231 | |
| 232 | void crvision_cart_slot_device::get_default_card_software(astring &result) |
| 233 | { |
| 234 | if (open_image_file(mconfig().options())) |
| 235 | { |
| 236 | const char *slot_string = "crv_rom4k"; |
| 237 | UINT32 size = core_fsize(m_file); |
| 238 | int type = CRV_4K; |
| 239 | |
| 240 | switch (size) |
| 241 | { |
| 242 | case 0x4800: |
| 243 | type = CRV_18K; |
| 244 | break; |
| 245 | case 0x4000: |
| 246 | type = CRV_16K; |
| 247 | break; |
| 248 | case 0x3000: |
| 249 | type = CRV_12K; |
| 250 | break; |
| 251 | case 0x2800: |
| 252 | type = CRV_10K; |
| 253 | break; |
| 254 | case 0x2000: |
| 255 | type = CRV_8K; |
| 256 | break; |
| 257 | case 0x1800: |
| 258 | type = CRV_6K; |
| 259 | break; |
| 260 | case 0x1000: |
| 261 | default: |
| 262 | break; |
| 263 | } |
| 264 | |
| 265 | slot_string = crvision_get_slot(type); |
| 266 | |
| 267 | //printf("type: %s\n", slot_string); |
| 268 | clear(); |
| 269 | |
| 270 | result.cpy(slot_string); |
| 271 | return; |
| 272 | } |
| 273 | |
| 274 | software_get_default_slot(result, "crv_rom4k"); |
| 275 | } |
| 276 | |
| 277 | /*------------------------------------------------- |
| 278 | read_rom |
| 279 | -------------------------------------------------*/ |
| 280 | |
| 281 | READ8_MEMBER(crvision_cart_slot_device::read_rom40) |
| 282 | { |
| 283 | if (m_cart) |
| 284 | return m_cart->read_rom40(space, offset); |
| 285 | else |
| 286 | return 0xff; |
| 287 | } |
| 288 | |
| 289 | READ8_MEMBER(crvision_cart_slot_device::read_rom80) |
| 290 | { |
| 291 | if (m_cart) |
| 292 | return m_cart->read_rom80(space, offset); |
| 293 | else |
| 294 | return 0xff; |
| 295 | } |
| 296 | |
trunk/src/emu/bus/crvision/rom.h
| r0 | r32625 | |
| 1 | #ifndef __CRVISION_ROM_H |
| 2 | #define __CRVISION_ROM_H |
| 3 | |
| 4 | #include "slot.h" |
| 5 | |
| 6 | |
| 7 | // ======================> crvision_rom_device |
| 8 | |
| 9 | class crvision_rom_device : public device_t, |
| 10 | public device_crvision_cart_interface |
| 11 | { |
| 12 | public: |
| 13 | // construction/destruction |
| 14 | crvision_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); |
| 15 | crvision_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 16 | |
| 17 | // device-level overrides |
| 18 | virtual void device_start() {} |
| 19 | virtual void device_reset() {} |
| 20 | |
| 21 | // reading and writing |
| 22 | virtual DECLARE_READ8_MEMBER(read_rom80); |
| 23 | }; |
| 24 | |
| 25 | // ======================> crvision_rom6k_device |
| 26 | |
| 27 | class crvision_rom6k_device : public crvision_rom_device |
| 28 | { |
| 29 | public: |
| 30 | // construction/destruction |
| 31 | crvision_rom6k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 32 | |
| 33 | // reading and writing |
| 34 | virtual DECLARE_READ8_MEMBER(read_rom80); |
| 35 | }; |
| 36 | |
| 37 | // ======================> crvision_rom8k_device |
| 38 | |
| 39 | class crvision_rom8k_device : public crvision_rom_device |
| 40 | { |
| 41 | public: |
| 42 | // construction/destruction |
| 43 | crvision_rom8k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 44 | |
| 45 | // reading and writing |
| 46 | virtual DECLARE_READ8_MEMBER(read_rom80); |
| 47 | }; |
| 48 | |
| 49 | // ======================> crvision_rom10k_device |
| 50 | |
| 51 | class crvision_rom10k_device : public crvision_rom_device |
| 52 | { |
| 53 | public: |
| 54 | // construction/destruction |
| 55 | crvision_rom10k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 56 | |
| 57 | // reading and writing |
| 58 | virtual DECLARE_READ8_MEMBER(read_rom40); |
| 59 | virtual DECLARE_READ8_MEMBER(read_rom80); |
| 60 | }; |
| 61 | |
| 62 | // ======================> crvision_rom12k_device |
| 63 | |
| 64 | class crvision_rom12k_device : public crvision_rom_device |
| 65 | { |
| 66 | public: |
| 67 | // construction/destruction |
| 68 | crvision_rom12k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 69 | |
| 70 | // reading and writing |
| 71 | virtual DECLARE_READ8_MEMBER(read_rom40); |
| 72 | virtual DECLARE_READ8_MEMBER(read_rom80); |
| 73 | }; |
| 74 | |
| 75 | // ======================> crvision_rom16k_device |
| 76 | |
| 77 | class crvision_rom16k_device : public crvision_rom_device |
| 78 | { |
| 79 | public: |
| 80 | // construction/destruction |
| 81 | crvision_rom16k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 82 | |
| 83 | // reading and writing |
| 84 | virtual DECLARE_READ8_MEMBER(read_rom80); |
| 85 | }; |
| 86 | |
| 87 | // ======================> crvision_rom18k_device |
| 88 | |
| 89 | class crvision_rom18k_device : public crvision_rom_device |
| 90 | { |
| 91 | public: |
| 92 | // construction/destruction |
| 93 | crvision_rom18k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 94 | |
| 95 | // reading and writing |
| 96 | virtual DECLARE_READ8_MEMBER(read_rom40); |
| 97 | virtual DECLARE_READ8_MEMBER(read_rom80); |
| 98 | }; |
| 99 | |
| 100 | |
| 101 | |
| 102 | |
| 103 | |
| 104 | // device type definition |
| 105 | extern const device_type CRVISION_ROM_4K; |
| 106 | extern const device_type CRVISION_ROM_6K; |
| 107 | extern const device_type CRVISION_ROM_8K; |
| 108 | extern const device_type CRVISION_ROM_10K; |
| 109 | extern const device_type CRVISION_ROM_12K; |
| 110 | extern const device_type CRVISION_ROM_16K; |
| 111 | extern const device_type CRVISION_ROM_18K; |
| 112 | |
| 113 | |
| 114 | #endif |
trunk/src/emu/bus/crvision/slot.h
| r0 | r32625 | |
| 1 | #ifndef __CRVISION_SLOT_H |
| 2 | #define __CRVISION_SLOT_H |
| 3 | |
| 4 | /*************************************************************************** |
| 5 | TYPE DEFINITIONS |
| 6 | ***************************************************************************/ |
| 7 | |
| 8 | |
| 9 | /* PCB */ |
| 10 | enum |
| 11 | { |
| 12 | CRV_4K = 0, |
| 13 | CRV_6K, |
| 14 | CRV_8K, |
| 15 | CRV_10K, |
| 16 | CRV_12K, |
| 17 | CRV_16K, |
| 18 | CRV_18K |
| 19 | }; |
| 20 | |
| 21 | |
| 22 | // ======================> device_crvision_cart_interface |
| 23 | |
| 24 | class device_crvision_cart_interface : public device_slot_card_interface |
| 25 | { |
| 26 | public: |
| 27 | // construction/destruction |
| 28 | device_crvision_cart_interface(const machine_config &mconfig, device_t &device); |
| 29 | virtual ~device_crvision_cart_interface(); |
| 30 | |
| 31 | // reading and writing |
| 32 | virtual DECLARE_READ8_MEMBER(read_rom40) { return 0xff; } |
| 33 | virtual DECLARE_READ8_MEMBER(read_rom80) { return 0xff; } |
| 34 | |
| 35 | void rom_alloc(UINT32 size, const char *tag); |
| 36 | UINT8* get_rom_base() { return m_rom; } |
| 37 | UINT32 get_rom_size() { return m_rom_size; } |
| 38 | |
| 39 | protected: |
| 40 | // internal state |
| 41 | UINT8 *m_rom; |
| 42 | UINT32 m_rom_size; |
| 43 | }; |
| 44 | |
| 45 | |
| 46 | // ======================> crvision_cart_slot_device |
| 47 | |
| 48 | class crvision_cart_slot_device : public device_t, |
| 49 | public device_image_interface, |
| 50 | public device_slot_interface |
| 51 | { |
| 52 | public: |
| 53 | // construction/destruction |
| 54 | crvision_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 55 | virtual ~crvision_cart_slot_device(); |
| 56 | |
| 57 | // device-level overrides |
| 58 | virtual void device_start(); |
| 59 | virtual void device_config_complete(); |
| 60 | |
| 61 | // image-level overrides |
| 62 | virtual bool call_load(); |
| 63 | virtual void call_unload() {} |
| 64 | virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry); |
| 65 | |
| 66 | int get_type() { return m_type; } |
| 67 | |
| 68 | virtual iodevice_t image_type() const { return IO_CARTSLOT; } |
| 69 | virtual bool is_readable() const { return 1; } |
| 70 | virtual bool is_writeable() const { return 0; } |
| 71 | virtual bool is_creatable() const { return 0; } |
| 72 | virtual bool must_be_loaded() const { return 0; } |
| 73 | virtual bool is_reset_on_load() const { return 1; } |
| 74 | virtual const option_guide *create_option_guide() const { return NULL; } |
| 75 | virtual const char *image_interface() const { return "crvision_cart"; } |
| 76 | virtual const char *file_extensions() const { return "bin,rom"; } |
| 77 | |
| 78 | // slot interface overrides |
| 79 | virtual void get_default_card_software(astring &result); |
| 80 | |
| 81 | // reading and writing |
| 82 | virtual DECLARE_READ8_MEMBER(read_rom40); |
| 83 | virtual DECLARE_READ8_MEMBER(read_rom80); |
| 84 | |
| 85 | protected: |
| 86 | |
| 87 | int m_type; |
| 88 | device_crvision_cart_interface* m_cart; |
| 89 | }; |
| 90 | |
| 91 | |
| 92 | |
| 93 | // device type definition |
| 94 | extern const device_type CRVISION_CART_SLOT; |
| 95 | |
| 96 | |
| 97 | /*************************************************************************** |
| 98 | DEVICE CONFIGURATION MACROS |
| 99 | ***************************************************************************/ |
| 100 | |
| 101 | #define CRVSLOT_ROM_REGION_TAG ":cart:rom" |
| 102 | |
| 103 | #define MCFG_CRVISION_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \ |
| 104 | MCFG_DEVICE_ADD(_tag, CRVISION_CART_SLOT, 0) \ |
| 105 | MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ |
| 106 | |
| 107 | #endif |
trunk/src/emu/bus/vectrex/slot.c
| r0 | r32625 | |
| 1 | /*********************************************************************************************************** |
| 2 | |
| 3 | GCE Vectrex cart emulation |
| 4 | (through slot devices) |
| 5 | |
| 6 | ***********************************************************************************************************/ |
| 7 | |
| 8 | |
| 9 | #include "emu.h" |
| 10 | #include "slot.h" |
| 11 | |
| 12 | //************************************************************************** |
| 13 | // GLOBAL VARIABLES |
| 14 | //************************************************************************** |
| 15 | |
| 16 | const device_type VECTREX_CART_SLOT = &device_creator<vectrex_cart_slot_device>; |
| 17 | |
| 18 | //************************************************************************** |
| 19 | // Vectrex Cartridges Interface |
| 20 | //************************************************************************** |
| 21 | |
| 22 | //------------------------------------------------- |
| 23 | // device_vectrex_cart_interface - constructor |
| 24 | //------------------------------------------------- |
| 25 | |
| 26 | device_vectrex_cart_interface::device_vectrex_cart_interface(const machine_config &mconfig, device_t &device) |
| 27 | : device_slot_card_interface(mconfig, device), |
| 28 | m_rom(NULL), |
| 29 | m_rom_size(0) |
| 30 | { |
| 31 | } |
| 32 | |
| 33 | |
| 34 | //------------------------------------------------- |
| 35 | // ~device_vectrex_cart_interface - destructor |
| 36 | //------------------------------------------------- |
| 37 | |
| 38 | device_vectrex_cart_interface::~device_vectrex_cart_interface() |
| 39 | { |
| 40 | } |
| 41 | |
| 42 | //------------------------------------------------- |
| 43 | // rom_alloc - alloc the space for the cart |
| 44 | //------------------------------------------------- |
| 45 | |
| 46 | void device_vectrex_cart_interface::rom_alloc(UINT32 size, const char *tag) |
| 47 | { |
| 48 | if (m_rom == NULL) |
| 49 | { |
| 50 | astring tempstring(tag); |
| 51 | tempstring.cat(VECSLOT_ROM_REGION_TAG); |
| 52 | m_rom = device().machine().memory().region_alloc(tempstring, size, 1, ENDIANNESS_LITTLE)->base(); |
| 53 | m_rom_size = size; |
| 54 | } |
| 55 | } |
| 56 | |
| 57 | |
| 58 | //************************************************************************** |
| 59 | // LIVE DEVICE |
| 60 | //************************************************************************** |
| 61 | |
| 62 | //------------------------------------------------- |
| 63 | // vectrex_cart_slot_device - constructor |
| 64 | //------------------------------------------------- |
| 65 | vectrex_cart_slot_device::vectrex_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : |
| 66 | device_t(mconfig, VECTREX_CART_SLOT, "GCE Vectrex Cartridge Slot", tag, owner, clock, "vectrex_cart_slot", __FILE__), |
| 67 | device_image_interface(mconfig, *this), |
| 68 | device_slot_interface(mconfig, *this), |
| 69 | m_type(VECTREX_STD), |
| 70 | m_vec3d(VEC3D_NONE) |
| 71 | { |
| 72 | } |
| 73 | |
| 74 | |
| 75 | //------------------------------------------------- |
| 76 | // vectrex_cart_slot_device - destructor |
| 77 | //------------------------------------------------- |
| 78 | |
| 79 | vectrex_cart_slot_device::~vectrex_cart_slot_device() |
| 80 | { |
| 81 | } |
| 82 | |
| 83 | //------------------------------------------------- |
| 84 | // device_start - device-specific startup |
| 85 | //------------------------------------------------- |
| 86 | |
| 87 | void vectrex_cart_slot_device::device_start() |
| 88 | { |
| 89 | m_cart = dynamic_cast<device_vectrex_cart_interface *>(get_card_device()); |
| 90 | } |
| 91 | |
| 92 | //------------------------------------------------- |
| 93 | // device_config_complete - perform any |
| 94 | // operations now that the configuration is |
| 95 | // complete |
| 96 | //------------------------------------------------- |
| 97 | |
| 98 | void vectrex_cart_slot_device::device_config_complete() |
| 99 | { |
| 100 | // set brief and instance name |
| 101 | update_names(); |
| 102 | } |
| 103 | |
| 104 | |
| 105 | //------------------------------------------------- |
| 106 | // Vectrex PCB |
| 107 | //------------------------------------------------- |
| 108 | |
| 109 | struct vectrex_slot |
| 110 | { |
| 111 | int pcb_id; |
| 112 | const char *slot_option; |
| 113 | }; |
| 114 | |
| 115 | // Here, we take the feature attribute from .xml (i.e. the PCB name) and we assign a unique ID to it |
| 116 | static const vectrex_slot slot_list[] = |
| 117 | { |
| 118 | { VECTREX_STD, "vec_rom" }, |
| 119 | { VECTREX_64K, "vec_rom64k" }, |
| 120 | { VECTREX_SRAM, "vec_sram" } |
| 121 | }; |
| 122 | |
| 123 | #if 0 |
| 124 | static int vectrex_get_pcb_id(const char *slot) |
| 125 | { |
| 126 | for (int i = 0; i < ARRAY_LENGTH(slot_list); i++) |
| 127 | { |
| 128 | if (!core_stricmp(slot_list[i].slot_option, slot)) |
| 129 | return slot_list[i].pcb_id; |
| 130 | } |
| 131 | |
| 132 | return 0; |
| 133 | } |
| 134 | #endif |
| 135 | |
| 136 | static const char *vectrex_get_slot(int type) |
| 137 | { |
| 138 | for (int i = 0; i < ARRAY_LENGTH(slot_list); i++) |
| 139 | { |
| 140 | if (slot_list[i].pcb_id == type) |
| 141 | return slot_list[i].slot_option; |
| 142 | } |
| 143 | |
| 144 | return "vec_rom"; |
| 145 | } |
| 146 | |
| 147 | /*------------------------------------------------- |
| 148 | call load |
| 149 | -------------------------------------------------*/ |
| 150 | |
| 151 | bool vectrex_cart_slot_device::call_load() |
| 152 | { |
| 153 | if (m_cart) |
| 154 | { |
| 155 | UINT32 size = (software_entry() == NULL) ? length() : get_software_region_length("rom"); |
| 156 | UINT8 *ROM; |
| 157 | |
| 158 | if (size > 0x10000) |
| 159 | { |
| 160 | seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size"); |
| 161 | return IMAGE_INIT_FAIL; |
| 162 | } |
| 163 | |
| 164 | m_cart->rom_alloc((size < 0x1000) ? 0x1000 : size, tag()); |
| 165 | ROM = m_cart->get_rom_base(); |
| 166 | |
| 167 | if (software_entry() == NULL) |
| 168 | fread(ROM, size); |
| 169 | else |
| 170 | memcpy(ROM, get_software_region("rom"), size); |
| 171 | |
| 172 | // Verify the file is accepted by the Vectrex bios |
| 173 | if (memcmp(ROM, "g GCE", 5)) |
| 174 | { |
| 175 | seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid image"); |
| 176 | return IMAGE_INIT_FAIL; |
| 177 | } |
| 178 | |
| 179 | // determine type |
| 180 | m_type = VECTREX_STD; |
| 181 | if (!memcmp(ROM + 0x06, "SRAM", 4)) |
| 182 | m_type = VECTREX_SRAM; |
| 183 | if (size > 0x8000) |
| 184 | m_type = VECTREX_64K; |
| 185 | |
| 186 | //printf("Type: %s\n", vectrex_get_slot(m_type)); |
| 187 | |
| 188 | // determine 3D setup (to help video setup at machine_start) |
| 189 | if (!memcmp(ROM + 0x11, "NARROW", 6) && (ROM[0x39] == 0x0c)) |
| 190 | m_vec3d = VEC3D_NARROW; |
| 191 | |
| 192 | if (!memcmp(ROM + 0x11, "CRAZY COASTER", 13)) |
| 193 | m_vec3d = VEC3D_CCOAST; |
| 194 | |
| 195 | if (!memcmp(ROM + 0x11, "3D MINE STORM", 13)) |
| 196 | m_vec3d = VEC3D_MINEST; |
| 197 | |
| 198 | return IMAGE_INIT_PASS; |
| 199 | } |
| 200 | |
| 201 | return IMAGE_INIT_PASS; |
| 202 | } |
| 203 | |
| 204 | |
| 205 | /*------------------------------------------------- |
| 206 | call softlist load |
| 207 | -------------------------------------------------*/ |
| 208 | |
| 209 | bool vectrex_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) |
| 210 | { |
| 211 | load_software_part_region(*this, swlist, swname, start_entry); |
| 212 | return TRUE; |
| 213 | } |
| 214 | |
| 215 | |
| 216 | /*------------------------------------------------- |
| 217 | get default card software |
| 218 | -------------------------------------------------*/ |
| 219 | |
| 220 | void vectrex_cart_slot_device::get_default_card_software(astring &result) |
| 221 | { |
| 222 | if (open_image_file(mconfig().options())) |
| 223 | { |
| 224 | const char *slot_string = "vec_rom"; |
| 225 | UINT32 size = core_fsize(m_file); |
| 226 | dynamic_buffer rom(size); |
| 227 | int type = VECTREX_STD; |
| 228 | |
| 229 | core_fread(m_file, rom, size); |
| 230 | |
| 231 | if (!memcmp(rom + 0x06, "SRAM", 4)) |
| 232 | type = VECTREX_SRAM; |
| 233 | if (size > 0x8000) |
| 234 | type = VECTREX_64K; |
| 235 | |
| 236 | slot_string = vectrex_get_slot(type); |
| 237 | |
| 238 | //printf("type: %s\n", slot_string); |
| 239 | clear(); |
| 240 | |
| 241 | result.cpy(slot_string); |
| 242 | return; |
| 243 | } |
| 244 | |
| 245 | software_get_default_slot(result, "vec_rom"); |
| 246 | } |
| 247 | |
| 248 | /*------------------------------------------------- |
| 249 | read_rom |
| 250 | -------------------------------------------------*/ |
| 251 | |
| 252 | READ8_MEMBER(vectrex_cart_slot_device::read_rom) |
| 253 | { |
| 254 | if (m_cart) |
| 255 | return m_cart->read_rom(space, offset); |
| 256 | else |
| 257 | return 0xff; |
| 258 | } |
| 259 | |
| 260 | /*------------------------------------------------- |
| 261 | write_ram |
| 262 | -------------------------------------------------*/ |
| 263 | |
| 264 | WRITE8_MEMBER(vectrex_cart_slot_device::write_ram) |
| 265 | { |
| 266 | if (m_cart) |
| 267 | m_cart->write_ram(space, offset, data); |
| 268 | } |
| 269 | |
| 270 | /*------------------------------------------------- |
| 271 | write_bank |
| 272 | -------------------------------------------------*/ |
| 273 | |
| 274 | WRITE8_MEMBER(vectrex_cart_slot_device::write_bank) |
| 275 | { |
| 276 | if (m_cart) |
| 277 | m_cart->write_bank(space, offset, data); |
| 278 | } |
| 279 | |
| 280 | |
trunk/src/emu/bus/vectrex/slot.h
| r0 | r32625 | |
| 1 | #ifndef __VECTREX_SLOT_H |
| 2 | #define __VECTREX_SLOT_H |
| 3 | |
| 4 | /*************************************************************************** |
| 5 | TYPE DEFINITIONS |
| 6 | ***************************************************************************/ |
| 7 | |
| 8 | |
| 9 | /* PCB */ |
| 10 | enum |
| 11 | { |
| 12 | VECTREX_STD = 0, |
| 13 | VECTREX_64K, |
| 14 | VECTREX_SRAM |
| 15 | }; |
| 16 | |
| 17 | // 3D setup |
| 18 | enum |
| 19 | { |
| 20 | VEC3D_NONE = 0, |
| 21 | VEC3D_MINEST, |
| 22 | VEC3D_CCOAST, |
| 23 | VEC3D_NARROW |
| 24 | }; |
| 25 | |
| 26 | // ======================> device_vectrex_cart_interface |
| 27 | |
| 28 | class device_vectrex_cart_interface : public device_slot_card_interface |
| 29 | { |
| 30 | public: |
| 31 | // construction/destruction |
| 32 | device_vectrex_cart_interface(const machine_config &mconfig, device_t &device); |
| 33 | virtual ~device_vectrex_cart_interface(); |
| 34 | |
| 35 | // reading and writing |
| 36 | virtual DECLARE_READ8_MEMBER(read_rom) { return 0xff; } |
| 37 | virtual DECLARE_WRITE8_MEMBER(write_ram) {} |
| 38 | virtual DECLARE_WRITE8_MEMBER(write_bank) {} |
| 39 | |
| 40 | void rom_alloc(UINT32 size, const char *tag); |
| 41 | UINT8* get_rom_base() { return m_rom; } |
| 42 | UINT32 get_rom_size() { return m_rom_size; } |
| 43 | |
| 44 | protected: |
| 45 | // internal state |
| 46 | UINT8 *m_rom; |
| 47 | UINT32 m_rom_size; |
| 48 | }; |
| 49 | |
| 50 | |
| 51 | // ======================> vectrex_cart_slot_device |
| 52 | |
| 53 | class vectrex_cart_slot_device : public device_t, |
| 54 | public device_image_interface, |
| 55 | public device_slot_interface |
| 56 | { |
| 57 | public: |
| 58 | // construction/destruction |
| 59 | vectrex_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 60 | virtual ~vectrex_cart_slot_device(); |
| 61 | |
| 62 | // device-level overrides |
| 63 | virtual void device_start(); |
| 64 | virtual void device_config_complete(); |
| 65 | |
| 66 | // image-level overrides |
| 67 | virtual bool call_load(); |
| 68 | virtual void call_unload() {} |
| 69 | virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry); |
| 70 | |
| 71 | int get_type() { return m_type; } |
| 72 | int get_vec3d() { return m_vec3d; } |
| 73 | |
| 74 | virtual iodevice_t image_type() const { return IO_CARTSLOT; } |
| 75 | virtual bool is_readable() const { return 1; } |
| 76 | virtual bool is_writeable() const { return 0; } |
| 77 | virtual bool is_creatable() const { return 0; } |
| 78 | virtual bool must_be_loaded() const { return 0; } |
| 79 | virtual bool is_reset_on_load() const { return 1; } |
| 80 | virtual const option_guide *create_option_guide() const { return NULL; } |
| 81 | virtual const char *image_interface() const { return "vectrex_cart"; } |
| 82 | virtual const char *file_extensions() const { return "bin,gam,vec"; } |
| 83 | |
| 84 | // slot interface overrides |
| 85 | virtual void get_default_card_software(astring &result); |
| 86 | |
| 87 | // reading and writing |
| 88 | virtual DECLARE_READ8_MEMBER(read_rom); |
| 89 | virtual DECLARE_WRITE8_MEMBER(write_ram); |
| 90 | virtual DECLARE_WRITE8_MEMBER(write_bank); |
| 91 | |
| 92 | protected: |
| 93 | |
| 94 | int m_type, m_vec3d; |
| 95 | device_vectrex_cart_interface* m_cart; |
| 96 | }; |
| 97 | |
| 98 | |
| 99 | |
| 100 | // device type definition |
| 101 | extern const device_type VECTREX_CART_SLOT; |
| 102 | |
| 103 | |
| 104 | /*************************************************************************** |
| 105 | DEVICE CONFIGURATION MACROS |
| 106 | ***************************************************************************/ |
| 107 | |
| 108 | #define VECSLOT_ROM_REGION_TAG ":cart:rom" |
| 109 | |
| 110 | #define MCFG_VECTREX_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \ |
| 111 | MCFG_DEVICE_ADD(_tag, VECTREX_CART_SLOT, 0) \ |
| 112 | MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ |
| 113 | |
| 114 | #endif |
trunk/src/emu/bus/vectrex/rom.c
| r0 | r32625 | |
| 1 | /*********************************************************************************************************** |
| 2 | |
| 3 | |
| 4 | GCE Vectrex cart emulation |
| 5 | |
| 6 | TODO: |
| 7 | - better understand how much SRAM is expected to be present by the homebrew using |
| 8 | this cart type and use a RAM array instead of the ROM region for writes |
| 9 | |
| 10 | ***********************************************************************************************************/ |
| 11 | |
| 12 | |
| 13 | #include "emu.h" |
| 14 | #include "rom.h" |
| 15 | |
| 16 | |
| 17 | //------------------------------------------------- |
| 18 | // vectrex_rom_device - constructor |
| 19 | //------------------------------------------------- |
| 20 | |
| 21 | const device_type VECTREX_ROM_STD = &device_creator<vectrex_rom_device>; |
| 22 | const device_type VECTREX_ROM_64K = &device_creator<vectrex_rom64k_device>; |
| 23 | const device_type VECTREX_ROM_SRAM = &device_creator<vectrex_sram_device>; |
| 24 | |
| 25 | |
| 26 | vectrex_rom_device::vectrex_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) |
| 27 | : device_t(mconfig, type, name, tag, owner, clock, shortname, source), |
| 28 | device_vectrex_cart_interface(mconfig, *this) |
| 29 | { |
| 30 | } |
| 31 | |
| 32 | vectrex_rom_device::vectrex_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 33 | : device_t(mconfig, VECTREX_ROM_STD, "Vectrex Standard Carts", tag, owner, clock, "vectrex_rom", __FILE__), |
| 34 | device_vectrex_cart_interface(mconfig, *this) |
| 35 | { |
| 36 | } |
| 37 | |
| 38 | vectrex_rom64k_device::vectrex_rom64k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 39 | : vectrex_rom_device(mconfig, VECTREX_ROM_64K, "Vectrex Carts w/ Bankswitch", tag, owner, clock, "vectrex_64k", __FILE__) |
| 40 | { |
| 41 | } |
| 42 | |
| 43 | vectrex_sram_device::vectrex_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 44 | : vectrex_rom_device(mconfig, VECTREX_ROM_SRAM, "Vectrex Carts w/ SRAM", tag, owner, clock, "vectrex_sram", __FILE__) |
| 45 | { |
| 46 | } |
| 47 | |
| 48 | |
| 49 | void vectrex_rom64k_device::device_start() |
| 50 | { |
| 51 | save_item(NAME(m_bank)); |
| 52 | } |
| 53 | |
| 54 | void vectrex_rom64k_device::device_reset() |
| 55 | { |
| 56 | m_bank = 0; |
| 57 | } |
| 58 | |
| 59 | |
| 60 | /*------------------------------------------------- |
| 61 | mapper specific handlers |
| 62 | -------------------------------------------------*/ |
| 63 | |
| 64 | READ8_MEMBER(vectrex_rom_device::read_rom) |
| 65 | { |
| 66 | if (offset < m_rom_size) |
| 67 | return m_rom[offset]; |
| 68 | else |
| 69 | return 0xff; |
| 70 | } |
| 71 | |
| 72 | |
| 73 | READ8_MEMBER(vectrex_rom64k_device::read_rom) |
| 74 | { |
| 75 | return m_rom[(offset + m_bank * 0x8000) & (m_rom_size - 1)]; |
| 76 | } |
| 77 | |
| 78 | WRITE8_MEMBER(vectrex_rom64k_device::write_bank) |
| 79 | { |
| 80 | m_bank = data >> 6; |
| 81 | } |
| 82 | |
| 83 | WRITE8_MEMBER(vectrex_sram_device::write_ram) |
| 84 | { |
| 85 | m_rom[offset & (m_rom_size - 1)] = data; |
| 86 | } |
trunk/src/mess/drivers/crvision.c
| r32624 | r32625 | |
| 699 | 699 | // state saving |
| 700 | 700 | save_item(NAME(m_keylatch)); |
| 701 | 701 | save_item(NAME(m_joylatch)); |
| 702 | |
| 703 | if (m_cart->exists()) |
| 704 | { |
| 705 | m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x7fff, read8_delegate(FUNC(crvision_cart_slot_device::read_rom40),(crvision_cart_slot_device*)m_cart)); |
| 706 | m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(FUNC(crvision_cart_slot_device::read_rom80),(crvision_cart_slot_device*)m_cart)); |
| 707 | } |
| 702 | 708 | } |
| 703 | 709 | |
| 704 | 710 | void crvision_pal_state::machine_start() |
| r32624 | r32625 | |
| 706 | 712 | // state saving |
| 707 | 713 | save_item(NAME(m_keylatch)); |
| 708 | 714 | save_item(NAME(m_joylatch)); |
| 715 | |
| 716 | if (m_cart->exists()) |
| 717 | { |
| 718 | m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x7fff, read8_delegate(FUNC(crvision_cart_slot_device::read_rom40),(crvision_cart_slot_device*)m_cart)); |
| 719 | m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(FUNC(crvision_cart_slot_device::read_rom80),(crvision_cart_slot_device*)m_cart)); |
| 720 | } |
| 709 | 721 | } |
| 710 | 722 | |
| 711 | 723 | /*------------------------------------------------- |
| r32624 | r32625 | |
| 717 | 729 | // state saving |
| 718 | 730 | save_item(NAME(m_keylatch)); |
| 719 | 731 | save_item(NAME(m_joylatch)); |
| 720 | | } |
| 721 | | |
| 722 | | /*************************************************************************** |
| 723 | | CARTRIDGE |
| 724 | | ***************************************************************************/ |
| 725 | | |
| 726 | | DEVICE_IMAGE_LOAD_MEMBER( crvision_state, crvision_cart ) |
| 727 | | { |
| 728 | | UINT32 size; |
| 729 | | dynamic_buffer temp_copy; |
| 730 | | UINT8 *mem = memregion(M6502_TAG)->base(); |
| 731 | | address_space &program = m_maincpu->space(AS_PROGRAM); |
| 732 | | |
| 733 | | if (image.software_entry() == NULL) |
| 732 | |
| 733 | if (m_cart->exists()) |
| 734 | 734 | { |
| 735 | | size = image.length(); |
| 736 | | temp_copy.resize(size); |
| 737 | | image.fread( temp_copy, size); |
| 735 | m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x7fff, read8_delegate(FUNC(crvision_cart_slot_device::read_rom40),(crvision_cart_slot_device*)m_cart)); |
| 736 | m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(FUNC(crvision_cart_slot_device::read_rom80),(crvision_cart_slot_device*)m_cart)); |
| 738 | 737 | } |
| 739 | | else |
| 740 | | { |
| 741 | | size= image.get_software_region_length("rom"); |
| 742 | | temp_copy.resize(size); |
| 743 | | memcpy(temp_copy, image.get_software_region("rom"), size); |
| 744 | | } |
| 745 | | |
| 746 | | switch (size) |
| 747 | | { |
| 748 | | case 0x1000: // 4K |
| 749 | | memcpy(mem + 0x9000, temp_copy, 0x1000); // load 4KB at 0x9000 |
| 750 | | memcpy(mem + 0xb000, mem + 0x9000, 0x1000); // mirror 4KB at 0xb000 |
| 751 | | program.install_read_bank(0x8000, 0xbfff, 0, 0x2000, BANK_ROM1); |
| 752 | | break; |
| 753 | | |
| 754 | | case 0x1800: // 6K |
| 755 | | memcpy(mem + 0x9000, temp_copy, 0x1000); // load lower 4KB at 0x9000 |
| 756 | | memcpy(mem + 0xb000, mem + 0x9000, 0x1000); // mirror lower 4KB at 0xb000 |
| 757 | | memcpy(mem + 0x8000, temp_copy + 0x1000, 0x0800); // load higher 2KB at 0x8000 |
| 758 | | memcpy(mem + 0x8800, mem + 0x8000, 0x0800); // mirror higher 2KB at 0x8800 |
| 759 | | memcpy(mem + 0xa000, mem + 0x8000, 0x0800); // mirror higher 2KB at 0xa000 |
| 760 | | memcpy(mem + 0xa800, mem + 0x8000, 0x0800); // mirror higher 2KB at 0xa800 |
| 761 | | program.install_read_bank(0x8000, 0xbfff, 0, 0x2000, BANK_ROM1); |
| 762 | | break; |
| 763 | | |
| 764 | | case 0x2000: // 8K |
| 765 | | memcpy(mem + 0x8000, temp_copy, 0x2000); // load 8KB at 0x8000 |
| 766 | | memcpy(mem + 0xa000, mem + 0x8000, 0x2000); // mirror 8KB at 0xa000 |
| 767 | | program.install_read_bank(0x8000, 0xbfff, 0, 0x2000, BANK_ROM1); |
| 768 | | break; |
| 769 | | |
| 770 | | case 0x2800: // 10K |
| 771 | | memcpy(mem + 0x8000, temp_copy, 0x2000); // load lower 8KB at 0x8000 |
| 772 | | memcpy(mem + 0xa000, mem + 0x8000, 0x2000); // mirror lower 8KB at 0xa000 |
| 773 | | memcpy(mem + 0x4000, temp_copy + 0x2000, 0x0800); // load higher 2KB at 0x4000 |
| 774 | | memcpy(mem + 0x4800, mem + 0x4000, 0x0800); // mirror higher 2KB at 0x4800 |
| 775 | | memcpy(mem + 0x5000, mem + 0x4000, 0x0800); // mirror higher 2KB at 0x5000 |
| 776 | | memcpy(mem + 0x5800, mem + 0x4000, 0x0800); // mirror higher 2KB at 0x5800 |
| 777 | | memcpy(mem + 0x6000, mem + 0x4000, 0x0800); // mirror higher 2KB at 0x6000 |
| 778 | | memcpy(mem + 0x6800, mem + 0x4000, 0x0800); // mirror higher 2KB at 0x6800 |
| 779 | | memcpy(mem + 0x7000, mem + 0x4000, 0x0800); // mirror higher 2KB at 0x7000 |
| 780 | | memcpy(mem + 0x7800, mem + 0x4000, 0x0800); // mirror higher 2KB at 0x7800 |
| 781 | | program.install_read_bank(0x8000, 0xbfff, BANK_ROM1); |
| 782 | | program.install_read_bank(0x4000, 0x7fff, BANK_ROM2); |
| 783 | | break; |
| 784 | | |
| 785 | | case 0x3000: // 12K |
| 786 | | memcpy(mem + 0x8000, temp_copy, 0x2000); // load lower 8KB at 0x8000 |
| 787 | | memcpy(mem + 0xa000, mem + 0x8000, 0x2000); // mirror lower 8KB at 0xa000 |
| 788 | | memcpy(mem + 0x4000, temp_copy + 0x2000, 0x1000); // load higher 4KB at 0x4000 |
| 789 | | memcpy(mem + 0x5000, mem + 0x4000, 0x1000); // mirror higher 4KB at 0x5000 |
| 790 | | memcpy(mem + 0x6000, mem + 0x4000, 0x1000); // mirror higher 4KB at 0x6000 |
| 791 | | memcpy(mem + 0x7000, mem + 0x4000, 0x1000); // mirror higher 4KB at 0x7000 |
| 792 | | program.install_read_bank(0x8000, 0xbfff, BANK_ROM1); |
| 793 | | program.install_read_bank(0x4000, 0x7fff, BANK_ROM2); |
| 794 | | break; |
| 795 | | |
| 796 | | case 0x4000: // 16K |
| 797 | | memcpy(mem + 0xa000, temp_copy, 0x2000); // load lower 8KB at 0xa000 |
| 798 | | memcpy(mem + 0x8000, temp_copy + 0x2000, 0x2000); // load higher 8KB at 0x8000 |
| 799 | | program.install_read_bank(0x8000, 0xbfff, BANK_ROM1); |
| 800 | | program.install_read_bank(0x4000, 0x7fff, BANK_ROM2); |
| 801 | | break; |
| 802 | | |
| 803 | | case 0x4800: // 18K |
| 804 | | memcpy(mem + 0xa000, temp_copy, 0x2000); // load lower 8KB at 0xa000 |
| 805 | | memcpy(mem + 0x8000, temp_copy + 0x2000, 0x2000); // load higher 8KB at 0x8000 |
| 806 | | memcpy(mem + 0x4000, temp_copy + 0x4000, 0x0800); // load higher 2KB at 0x4000 |
| 807 | | memcpy(mem + 0x4800, mem + 0x4000, 0x0800); // mirror higher 2KB at 0x4800 |
| 808 | | memcpy(mem + 0x5000, mem + 0x4000, 0x0800); // mirror higher 2KB at 0x5000 |
| 809 | | memcpy(mem + 0x5800, mem + 0x4000, 0x0800); // mirror higher 2KB at 0x5800 |
| 810 | | memcpy(mem + 0x6000, mem + 0x4000, 0x0800); // mirror higher 2KB at 0x6000 |
| 811 | | memcpy(mem + 0x6800, mem + 0x4000, 0x0800); // mirror higher 2KB at 0x6800 |
| 812 | | memcpy(mem + 0x7000, mem + 0x4000, 0x0800); // mirror higher 2KB at 0x7000 |
| 813 | | memcpy(mem + 0x7800, mem + 0x4000, 0x0800); // mirror higher 2KB at 0x7800 |
| 814 | | program.install_read_bank(0x8000, 0xbfff, BANK_ROM1); |
| 815 | | program.install_read_bank(0x4000, 0x7fff, BANK_ROM2); |
| 816 | | break; |
| 817 | | |
| 818 | | default: |
| 819 | | auto_free(machine(), temp_copy); |
| 820 | | return IMAGE_INIT_FAIL; |
| 821 | | } |
| 822 | | |
| 823 | | membank(BANK_ROM1)->configure_entry(0, mem + 0x8000); |
| 824 | | membank(BANK_ROM1)->set_entry(0); |
| 825 | | |
| 826 | | membank(BANK_ROM2)->configure_entry(0, mem + 0x4000); |
| 827 | | membank(BANK_ROM2)->set_entry(0); |
| 828 | | |
| 829 | | return IMAGE_INIT_PASS; |
| 830 | 738 | } |
| 831 | 739 | |
| 740 | |
| 832 | 741 | /*************************************************************************** |
| 833 | 742 | MACHINE DRIVERS |
| 834 | 743 | ***************************************************************************/ |
| 835 | 744 | |
| 745 | static SLOT_INTERFACE_START(crvision_cart) |
| 746 | SLOT_INTERFACE_INTERNAL("crv_rom4k", CRVISION_ROM_4K) |
| 747 | SLOT_INTERFACE_INTERNAL("crv_rom6k", CRVISION_ROM_6K) |
| 748 | SLOT_INTERFACE_INTERNAL("crv_rom8k", CRVISION_ROM_8K) |
| 749 | SLOT_INTERFACE_INTERNAL("crv_rom10k", CRVISION_ROM_10K) |
| 750 | SLOT_INTERFACE_INTERNAL("crv_rom12k", CRVISION_ROM_12K) |
| 751 | SLOT_INTERFACE_INTERNAL("crv_rom16k", CRVISION_ROM_16K) |
| 752 | SLOT_INTERFACE_INTERNAL("crv_rom18k", CRVISION_ROM_18K) |
| 753 | SLOT_INTERFACE_END |
| 754 | |
| 836 | 755 | /*------------------------------------------------- |
| 837 | 756 | MACHINE_CONFIG_START( creativision, crvision_state ) |
| 838 | 757 | -------------------------------------------------*/ |
| r32624 | r32625 | |
| 872 | 791 | MCFG_SOUND_ROUTE(1, "mono", 0.25) |
| 873 | 792 | |
| 874 | 793 | // cartridge |
| 875 | | MCFG_CARTSLOT_ADD("cart") |
| 876 | | MCFG_CARTSLOT_EXTENSION_LIST("bin,rom") |
| 877 | | MCFG_CARTSLOT_MANDATORY |
| 878 | | MCFG_CARTSLOT_INTERFACE("crvision_cart") |
| 879 | | MCFG_CARTSLOT_LOAD(crvision_state, crvision_cart) |
| 794 | MCFG_CRVISION_CARTRIDGE_ADD("cartslot", crvision_cart, NULL) |
| 880 | 795 | |
| 881 | 796 | // internal ram |
| 882 | 797 | MCFG_RAM_ADD(RAM_TAG) |
| r32624 | r32625 | |
| 884 | 799 | MCFG_RAM_EXTRA_OPTIONS("15K") // 16K expansion (lower 14K available only, upper 2K shared with BIOS ROM) |
| 885 | 800 | |
| 886 | 801 | // software lists |
| 887 | | MCFG_SOFTWARE_LIST_ADD("cart_list","crvision") |
| 802 | MCFG_SOFTWARE_LIST_ADD("cart_list", "crvision") |
| 888 | 803 | MACHINE_CONFIG_END |
| 889 | 804 | |
| 890 | 805 | /*------------------------------------------------- |
| r32624 | r32625 | |
| 958 | 873 | MCFG_SOUND_ROUTE(1, "mono", 0.25) |
| 959 | 874 | |
| 960 | 875 | // cartridge |
| 961 | | MCFG_CARTSLOT_ADD("cart") |
| 962 | | MCFG_CARTSLOT_EXTENSION_LIST("bin,rom") |
| 963 | | MCFG_CARTSLOT_INTERFACE("crvision_cart") |
| 964 | | MCFG_CARTSLOT_LOAD(crvision_state, crvision_cart) |
| 876 | MCFG_CRVISION_CARTRIDGE_ADD("cartslot", crvision_cart, NULL) |
| 965 | 877 | |
| 966 | 878 | // internal ram |
| 967 | 879 | MCFG_RAM_ADD(RAM_TAG) |