hash/vidbrain.xml
| r0 | r7803 | |
| 1 | <?xml version="1.0"?> |
| 2 | <!DOCTYPE softwarelist SYSTEM "softwarelist.dtd"> |
| 3 | <!-- |
| 4 | |
| 5 | Undumped cartridges: |
| 6 | |
| 7 | Expanders |
| 8 | EXP 1 Expander 1 |
| 9 | EXP 2 Expander 2 |
| 10 | |
| 11 | Money Management Series |
| 12 | APL/S The Computational Language |
| 13 | VB-59 The Programmable |
| 14 | VB-81 The Financier |
| 15 | VB-1000 Money Manager |
| 16 | VB-1100 Budget System |
| 17 | VB-1200 Information Manager |
| 18 | |
| 19 | Communication Series |
| 20 | CM01 Timeshare |
| 21 | |
| 22 | Education Series |
| 23 | ED07 Musicianship 1 |
| 24 | ED08 Number Cross |
| 25 | ED09 Historical Simulation - France in the Old Regime |
| 26 | |
| 27 | Entertainment Series |
| 28 | EN07 Challenge Racer |
| 29 | EN08 Music Programmer |
| 30 | EN09 Programmable Football |
| 31 | EN10 Computer Life |
| 32 | |
| 33 | Demonstration Series |
| 34 | ST01 Demonstration |
| 35 | |
| 36 | --> |
| 37 | <softwarelist name="vidbrain" description="VideoBrain Family Computer cartridges"> |
| 38 | |
| 39 | <!-- Education Series --> |
| 40 | |
| 41 | <software name="musictch"> |
| 42 | <description>Music Teacher 1</description> |
| 43 | <year>1978</year> |
| 44 | <publisher>VideoBrain Computer Company</publisher> |
| 45 | <!-- <serial>ED01</serial> --> |
| 46 | <part name="cart" interface="vidbrain_cart"> |
| 47 | <dataarea name="rom" size="2048"> |
| 48 | <rom name="musicteacher1-ed01.bin" size="2048" crc="c8fee8cd" sha1="1a0a19ecedfb2d918e4e1a4eb604a07dc5e1113f" offset="0" /> |
| 49 | </dataarea> |
| 50 | </part> |
| 51 | </software> |
| 52 | <software name="mathttr1"> |
| 53 | <description>Math Tutor 1</description> |
| 54 | <year>1978</year> |
| 55 | <publisher>VideoBrain Computer Company</publisher> |
| 56 | <!-- <serial>ED02</serial> --> |
| 57 | <part name="cart" interface="vidbrain_cart"> |
| 58 | <dataarea name="rom" size="4096"> |
| 59 | <rom name="mathtutor1-ed02.bin" size="4096" crc="db47f770" sha1="efe9e5f7ee95e157af892b84de5653c0f85a13b0" offset="0" /> |
| 60 | </dataarea> |
| 61 | </part> |
| 62 | </software> |
| 63 | <software name="wrdwise1"> |
| 64 | <description>Wordwise 1</description> |
| 65 | <year>1978</year> |
| 66 | <publisher>VideoBrain Computer Company</publisher> |
| 67 | <!-- <serial>ED03</serial> --> |
| 68 | <part name="cart" interface="vidbrain_cart"> |
| 69 | <dataarea name="rom" size="2048"> |
| 70 | <rom name="wordwise1-ed03.bin" size="2048" crc="d1546212" sha1="91594485442e2dfad059e4ce42aa60b7a0519d91" offset="0" /> |
| 71 | </dataarea> |
| 72 | </part> |
| 73 | </software> |
| 74 | <software name="wrdwise2"> |
| 75 | <description>Wordwise 2</description> |
| 76 | <year>1978</year> |
| 77 | <publisher>VideoBrain Computer Company</publisher> |
| 78 | <!-- <serial>ED04</serial> --> |
| 79 | <part name="cart" interface="vidbrain_cart"> |
| 80 | <dataarea name="rom" size="2048"> |
| 81 | <rom name="wordwise2-ed04.bin" size="2048" crc="4a08e999" sha1="0b17ead29aea643da84d495ebab5220e547abf99" offset="0" /> |
| 82 | </dataarea> |
| 83 | </part> |
| 84 | </software> |
| 85 | <software name="vidartst"> |
| 86 | <description>VideoArtist</description> |
| 87 | <year>1978</year> |
| 88 | <publisher>VideoBrain Computer Company</publisher> |
| 89 | <!-- <serial>ED05</serial> --> |
| 90 | <part name="cart" interface="vidbrain_cart"> |
| 91 | <dataarea name="rom" size="4096"> |
| 92 | <rom name="videoartist-ed05.bin" size="4096" crc="d68795f8" sha1="dfb118d6bba837aa8e6b7feb19be7de40cd1e4fa" offset="0" /> |
| 93 | </dataarea> |
| 94 | </part> |
| 95 | </software> |
| 96 | <software name="lemstand"> |
| 97 | <description>Lemonade Stand</description> |
| 98 | <year>1978</year> |
| 99 | <publisher>VideoBrain Computer Company</publisher> |
| 100 | <!-- <serial>ED06</serial> --> |
| 101 | <part name="cart" interface="vidbrain_cart"> |
| 102 | <dataarea name="rom" size="4096"> |
| 103 | <rom name="lemonadestand-ed06.bin" size="4096" crc="27c08d93" sha1="faf47261797692e9081dc24f957f8f38dc1a975d" offset="0" /> |
| 104 | </dataarea> |
| 105 | </part> |
| 106 | </software> |
| 107 | |
| 108 | <!-- Entertainment Series --> |
| 109 | |
| 110 | <software name="gladiatr"> |
| 111 | <description>Gladiator</description> |
| 112 | <year>1978</year> |
| 113 | <publisher>VideoBrain Computer Company</publisher> |
| 114 | <!-- <serial>EN01</serial> --> |
| 115 | <part name="cart" interface="vidbrain_cart"> |
| 116 | <dataarea name="rom" size="4096"> |
| 117 | <rom name="gladiator-en01.bin" size="4096" crc="e6a88a49" sha1="ffdb06a714cc5bafa980db0742d0364ee5658c05" offset="0" /> |
| 118 | </dataarea> |
| 119 | </part> |
| 120 | </software> |
| 121 | <software name="pinball"> |
| 122 | <description>Pinball</description> |
| 123 | <year>1978</year> |
| 124 | <publisher>VideoBrain Computer Company</publisher> |
| 125 | <!-- <serial>EN02</serial> --> |
| 126 | <part name="cart" interface="vidbrain_cart"> |
| 127 | <dataarea name="rom" size="2048"> |
| 128 | <rom name="pinball-en02.bin" size="2048" crc="484331ff" sha1="0bd04368692a55bf89f8ec7ff1a29cff3a398b9f" offset="0" /> |
| 129 | </dataarea> |
| 130 | </part> |
| 131 | </software> |
| 132 | <software name="tennis"> |
| 133 | <description>Tennis</description> |
| 134 | <year>1978</year> |
| 135 | <publisher>VideoBrain Computer Company</publisher> |
| 136 | <!-- <serial>EN03</serial> --> |
| 137 | <part name="cart" interface="vidbrain_cart"> |
| 138 | <dataarea name="rom" size="4096"> |
| 139 | <rom name="tennis-en03.bin" size="4096" crc="1942f852" sha1="74e8304d8ad0328655627e21c0305b72c11a5dda" offset="0" /> |
| 140 | </dataarea> |
| 141 | </part> |
| 142 | </software> |
| 143 | <software name="checkers"> |
| 144 | <description>Checkers</description> |
| 145 | <year>1978</year> |
| 146 | <publisher>VideoBrain Computer Company</publisher> |
| 147 | <!-- <serial>EN04</serial> --> |
| 148 | <part name="cart" interface="vidbrain_cart"> |
| 149 | <dataarea name="rom" size="4096"> |
| 150 | <rom name="checkers-en04.bin" size="4096" crc="24c53410" sha1="f12f448d1f62b56318cb94b8f802180d561e3ee5" offset="0" /> |
| 151 | </dataarea> |
| 152 | </part> |
| 153 | </software> |
| 154 | <software name="blakjack"> |
| 155 | <description>Blackjack</description> |
| 156 | <year>1978</year> |
| 157 | <publisher>VideoBrain Computer Company</publisher> |
| 158 | <!-- <serial>EN05</serial> --> |
| 159 | <part name="cart" interface="vidbrain_cart"> |
| 160 | <dataarea name="rom" size="2048"> |
| 161 | <rom name="blackjack-en05.bin" size="2048" crc="47f02b92" sha1="23fd10c9674d304f2a0a4ae37e3afb6a25906b1c" offset="0" /> |
| 162 | </dataarea> |
| 163 | </part> |
| 164 | </software> |
| 165 | <software name="vicevers"> |
| 166 | <description>Vice Versa</description> |
| 167 | <year>1978</year> |
| 168 | <publisher>VideoBrain Computer Company</publisher> |
| 169 | <!-- <serial>EN06</serial> --> |
| 170 | <part name="cart" interface="vidbrain_cart"> |
| 171 | <dataarea name="rom" size="4096"> |
| 172 | <rom name="viceversa-en06.bin" size="4096" crc="e23504ee" sha1="c5b4b62c9e0db998c2c4df6f71713a1df35c8bf4" offset="0" /> |
| 173 | </dataarea> |
| 174 | </part> |
| 175 | </software> |
| 176 | </softwarelist> |
src/mess/drivers/vidbrain.c
| r7802 | r7803 | |
| 1 | 1 | /*************************************************************************** |
| 2 | 2 | |
| 3 | | VideoBrain Family Computer |
| 3 | VideoBrain FamilyComputer |
| 4 | 4 | |
| 5 | http://www.atariprotos.com/othersystems/videobrain/videobrain.htm |
| 5 | 6 | http://www.seanriddle.com/vbinfo.html |
| 6 | 7 | http://www.seanriddle.com/videobrain.html |
| 7 | 8 | |
| r7802 | r7803 | |
| 16 | 17 | - colors |
| 17 | 18 | - low resolution mode |
| 18 | 19 | - discrete sound |
| 19 | | - keyboard column 8 |
| 20 | 20 | - joystick scan timer 555 |
| 21 | 21 | - reset on cartridge eject |
| 22 | 22 | - expander 1 (cassette, RS-232) |
| r7802 | r7803 | |
| 37 | 37 | ***************************************************************************/ |
| 38 | 38 | |
| 39 | 39 | /*------------------------------------------------- |
| 40 | vlsi_r - video VLSI read |
| 41 | -------------------------------------------------*/ |
| 42 | |
| 43 | static READ8_HANDLER( vlsi_r ) |
| 44 | { |
| 45 | switch (offset) |
| 46 | { |
| 47 | case 0xfa: |
| 48 | case 0xfb: |
| 49 | return 0xff; |
| 50 | } |
| 51 | |
| 52 | return 0; |
| 53 | } |
| 54 | |
| 55 | /*------------------------------------------------- |
| 56 | vlsi_w - video VLSI write |
| 57 | -------------------------------------------------*/ |
| 58 | |
| 59 | static WRITE8_HANDLER( vlsi_w ) |
| 60 | { |
| 61 | vidbrain_state *state = (vidbrain_state *)space->machine->driver_data; |
| 62 | |
| 63 | switch (offset) |
| 64 | { |
| 65 | case 0xf5: |
| 66 | state->bg_color = data; |
| 67 | break; |
| 68 | |
| 69 | case 0xf7: |
| 70 | /* |
| 71 | |
| 72 | bit description |
| 73 | |
| 74 | 0 |
| 75 | 1 |
| 76 | 2 |
| 77 | 3 |
| 78 | 4 keyboard column 8 |
| 79 | 5 |
| 80 | 6 |
| 81 | 7 |
| 82 | |
| 83 | */ |
| 84 | |
| 85 | state->uv201_31 = BIT(data, 4); |
| 86 | break; |
| 87 | } |
| 88 | |
| 89 | logerror("VLSI %02x = %02x\n", offset, data); |
| 90 | } |
| 91 | |
| 92 | /*------------------------------------------------- |
| 40 | 93 | keyboard_w - keyboard column write |
| 41 | 94 | -------------------------------------------------*/ |
| 42 | 95 | |
| 43 | | WRITE8_HANDLER( keyboard_w ) |
| 96 | static WRITE8_HANDLER( keyboard_w ) |
| 44 | 97 | { |
| 45 | 98 | /* |
| 46 | 99 | |
| r7802 | r7803 | |
| 66 | 119 | keyboard_r - keyboard row read |
| 67 | 120 | -------------------------------------------------*/ |
| 68 | 121 | |
| 69 | | READ8_HANDLER( keyboard_r ) |
| 122 | static READ8_HANDLER( keyboard_r ) |
| 70 | 123 | { |
| 71 | 124 | /* |
| 72 | 125 | |
| r7802 | r7803 | |
| 95 | 148 | if (BIT(state->keylatch, 5)) data |= input_port_read(space->machine, "IO05"); |
| 96 | 149 | if (BIT(state->keylatch, 6)) data |= input_port_read(space->machine, "IO06"); |
| 97 | 150 | if (BIT(state->keylatch, 7)) data |= input_port_read(space->machine, "IO07"); |
| 98 | | // if () data |= input_port_read(space->machine, "UV201-31"); |
| 151 | if (state->uv201_31) data |= input_port_read(space->machine, "UV201-31"); |
| 99 | 152 | |
| 100 | 153 | return data; |
| 101 | 154 | } |
| r7802 | r7803 | |
| 104 | 157 | sound_w - sound clock write |
| 105 | 158 | -------------------------------------------------*/ |
| 106 | 159 | |
| 107 | | WRITE8_HANDLER( sound_w ) |
| 160 | static WRITE8_HANDLER( sound_w ) |
| 108 | 161 | { |
| 109 | 162 | /* |
| 110 | 163 | |
| r7802 | r7803 | |
| 150 | 203 | -------------------------------------------------*/ |
| 151 | 204 | |
| 152 | 205 | static ADDRESS_MAP_START( vidbrain_mem, ADDRESS_SPACE_PROGRAM, 8 ) |
| 153 | | ADDRESS_MAP_UNMAP_HIGH |
| 154 | 206 | AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0xc000) AM_ROM |
| 155 | | // AM_RANGE(0x0800, 0x08ff) video chip |
| 207 | AM_RANGE(0x0800, 0x08ff) AM_READWRITE(vlsi_r, vlsi_w) |
| 156 | 208 | AM_RANGE(0x0c00, 0x0fff) AM_MIRROR(0xe000) AM_RAM AM_BASE_MEMBER(vidbrain_state, video_ram) |
| 157 | 209 | AM_RANGE(0x1000, 0x1fff) AM_ROM |
| 158 | 210 | AM_RANGE(0x2000, 0x27ff) AM_MIRROR(0xc000) AM_ROM |
| r7802 | r7803 | |
| 215 | 267 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('E') PORT_CHAR('8') |
| 216 | 268 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('F') PORT_CHAR('6') |
| 217 | 269 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('V') PORT_CHAR('+') |
| 218 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("SPECIAL ALARM") PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4)) |
| 270 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("SPECIAL ALARM") PORT_CODE(KEYCODE_F4) |
| 219 | 271 | |
| 220 | 272 | PORT_START("IO06") |
| 221 | 273 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('W') PORT_CHAR('7') |
| 222 | 274 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('D') PORT_CHAR('5') |
| 223 | 275 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('C') PORT_CHAR('3') |
| 224 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("NEXT CLOCK") PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3)) |
| 276 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("NEXT CLOCK") PORT_CODE(KEYCODE_F3) |
| 225 | 277 | |
| 226 | 278 | PORT_START("IO07") |
| 227 | 279 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') PORT_CHAR('%') |
| 228 | 280 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('S') PORT_CHAR('4') |
| 229 | 281 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('X') PORT_CHAR('2') |
| 230 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PREVIOUS COLOR") PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2)) |
| 282 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PREVIOUS COLOR") PORT_CODE(KEYCODE_F2) |
| 231 | 283 | |
| 232 | 284 | PORT_START("UV201-31") |
| 233 | 285 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('A') PORT_CHAR('.') |
| 234 | 286 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') PORT_CHAR('1') |
| 235 | 287 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('?') PORT_CHAR('0') |
| 236 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("BACK TEXT") PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1)) |
| 288 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("BACK TEXT") PORT_CODE(KEYCODE_F1) |
| 237 | 289 | |
| 238 | 290 | PORT_START("RESET") |
| 239 | 291 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("MASTER CONTROL") PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5)) PORT_CHANGED(trigger_reset, 0) |
| r7802 | r7803 | |
| 274 | 326 | ***************************************************************************/ |
| 275 | 327 | |
| 276 | 328 | /*------------------------------------------------- |
| 329 | PALETTE_INIT( vidbrain ) |
| 330 | -------------------------------------------------*/ |
| 331 | |
| 332 | static PALETTE_INIT( vidbrain ) |
| 333 | { |
| 334 | palette_set_color_rgb(machine, 0, 0x00, 0x00, 0x00 ); // |
| 335 | palette_set_color_rgb(machine, 1, 0xff, 0x00, 0x00 ); // red |
| 336 | palette_set_color_rgb(machine, 2, 0x00, 0xff, 0x00 ); // |
| 337 | palette_set_color_rgb(machine, 3, 0xff, 0xff, 0x00 ); // |
| 338 | palette_set_color_rgb(machine, 4, 0x00, 0x00, 0xff ); // blue |
| 339 | palette_set_color_rgb(machine, 5, 0xff, 0x00, 0xff ); // |
| 340 | palette_set_color_rgb(machine, 6, 0x00, 0xff, 0xff ); // |
| 341 | palette_set_color_rgb(machine, 7, 0xff, 0xff, 0xff ); // |
| 342 | |
| 343 | palette_set_color_rgb(machine, 8, 0x00, 0x00, 0x00 ); // |
| 344 | palette_set_color_rgb(machine, 9, 0x80, 0x00, 0x00 ); // red |
| 345 | palette_set_color_rgb(machine, 10, 0x00, 0x80, 0x00 ); // |
| 346 | palette_set_color_rgb(machine, 11, 0x80, 0x80, 0x00 ); // |
| 347 | palette_set_color_rgb(machine, 12, 0x00, 0x00, 0x80 ); // blue |
| 348 | palette_set_color_rgb(machine, 13, 0x80, 0x00, 0x80 ); // |
| 349 | palette_set_color_rgb(machine, 14, 0x00, 0x80, 0x80 ); // |
| 350 | palette_set_color_rgb(machine, 15, 0x80, 0x80, 0x80 ); // |
| 351 | } |
| 352 | |
| 353 | /*------------------------------------------------- |
| 277 | 354 | VIDEO_START( vidbrain ) |
| 278 | 355 | -------------------------------------------------*/ |
| 279 | 356 | |
| r7802 | r7803 | |
| 299 | 376 | |
| 300 | 377 | for (int x = 0; x < 8; x++) |
| 301 | 378 | { |
| 302 | | *BITMAP_ADDR16(bitmap, y, (sx * 8) + x) = BIT(data, 7); |
| 379 | *BITMAP_ADDR16(bitmap, y, (sx * 8) + x) = BIT(data, 7) ? 7 : state->bg_color; |
| 303 | 380 | data <<= 1; |
| 304 | 381 | } |
| 305 | 382 | } |
| r7802 | r7803 | |
| 380 | 457 | /* register for state saving */ |
| 381 | 458 | state_save_register_global(machine, state->keylatch); |
| 382 | 459 | state_save_register_global(machine, state->joy_enable); |
| 460 | state_save_register_global(machine, state->uv201_31); |
| 461 | state_save_register_global(machine, state->bg_color); |
| 383 | 462 | state_save_register_global(machine, state->sound_clk); |
| 384 | 463 | state_save_register_global_array(machine, state->sound_q); |
| 385 | 464 | } |
| r7802 | r7803 | |
| 411 | 490 | MDRV_SCREEN_VISIBLE_AREA(0, 128-1, 0, 49-1) |
| 412 | 491 | MDRV_GFXDECODE(vidbrain) |
| 413 | 492 | MDRV_PALETTE_LENGTH(16) |
| 493 | MDRV_PALETTE_INIT(vidbrain) |
| 414 | 494 | |
| 415 | 495 | MDRV_VIDEO_START(vidbrain) |
| 416 | 496 | MDRV_VIDEO_UPDATE(vidbrain) |
| r7802 | r7803 | |
| 450 | 530 | ***************************************************************************/ |
| 451 | 531 | |
| 452 | 532 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
| 453 | | COMP( 1977, vidbrain, 0, 0, vidbrain, vidbrain, 0, "VideoBrain Computer Company", "VideoBrain Family Computer", GAME_NOT_WORKING | GAME_NO_SOUND ) |
| 533 | COMP( 1977, vidbrain, 0, 0, vidbrain, vidbrain, 0, "VideoBrain Computer Company", "VideoBrain FamilyComputer", GAME_NOT_WORKING | GAME_NO_SOUND ) |