trunk/src/mame/drivers/mpu12wbk.c
| r0 | r18399 | |
| 1 | /**************************************************************************************** |
| 2 | |
| 3 | WEBAK MPU-12 PLATFORM |
| 4 | --------------------- |
| 5 | |
| 6 | Preliminary driver by Roberto Fresca. |
| 7 | |
| 8 | |
| 9 | Games running on this hardware: |
| 10 | |
| 11 | * Fruit Star Bonus. 1997, Webak Elektronik. |
| 12 | |
| 13 | |
| 14 | ***************************************************************************************** |
| 15 | |
| 16 | General notes: |
| 17 | |
| 18 | "The first Webak video-based game, the Fruit Star Bonus, was a success 15 years ago |
| 19 | when it was written on Assembler and was running on the MPU 12 at the time. Because |
| 20 | this game has achieved such a great success to this day Webak has now transferred it |
| 21 | on a 1:1 basis for the new Linux-Game box. Despite its age, it has experience a re- |
| 22 | naissance in different countries, especially the Czech Republic." |
| 23 | |
| 24 | |
| 25 | ***************************************************************************************** |
| 26 | |
| 27 | Hardware Notes: |
| 28 | --------------- |
| 29 | |
| 30 | CPU: 1x M68B09P \ |
| 31 | Program ROM: 1x P28F512 (IC2) > Inside the MPU12 epoxy block. |
| 32 | PLD: 1x TIBPAL16V8 / |
| 33 | |
| 34 | Video: 1x MC68B45P CRTC. |
| 35 | Sound: 1x AY-3-8910A. |
| 36 | ROMS: 3x 27C512 (IC37-IC38-IC39) for graphics. |
| 37 | 1x Empty socket (IC4) for unknown purposes. |
| 38 | |
| 39 | Bipolar PROMs: 1x 82S147; 1x 82S131. |
| 40 | |
| 41 | Xtal: 1x 8MHz. |
| 42 | |
| 43 | |
| 44 | ***************************************************************************************** |
| 45 | |
| 46 | PCB Layout: |
| 47 | |
| 48 | .--------------------------------------------------------------------------------------. |
| 49 | | .---------. .---------. | |
| 50 | | |74LS174N | |74LS174N | .------------. | |
| 51 | | '---------' '---------' |8 1| .------------. | |
| 52 | | | DIP1 | | DM74LS245N | | |
| 53 | | .------------. .---------. '------------' '------------' | |
| 54 | | | N82S147AN | |N82S131AN| 2x17 connector | |
| 55 | | '------------' '---------' .---------------------------------. | |
| 56 | | .-------. |o o o o o o o o o o o o o o o o o| | |
| 57 | | .------------------. .---------. | XTAL | |o o o o o o o o o o o o o o o o o| | |
| 58 | | | Fruit 3 | |74LS194AN| | 8 Mhz | '---------------------------------' | |
| 59 | | | 27C512 | '---------' '-------' | |
| 60 | | | IC39| .---------. .--. .--------------------. .----------. | |
| 61 | | '------------------' |74LS194AN| |SN| | | |SN74LS02N | | |
| 62 | | '---------' |74| | EMPTY SOCKET | '----------' | |
| 63 | | .------------------. .---------. |LS| .--. | | | |
| 64 | | | Fruit 2 | |74LS194AN| |00| |SN| | IC4| | |
| 65 | | | 27C512 | '---------' |N | |74| '--------------------' .------. | |
| 66 | | | IC38| '--' |LS| | | | |
| 67 | | '------------------' .---------. .--. |00| .------------------. | | | |
| 68 | | |74LS194AN| |SN| |N | | MB8464A-10L-SK | | | | |
| 69 | | .------------------. '---------' |74| '--' '------------------' |AY-3 | | |
| 70 | | | Fruit 1 | |LS| |8910A | | |
| 71 | | | 27C512 | .---------. |02| .-------------------------------. | | | |
| 72 | | | IC37| |74LS194AN| |N | |EPOXY BLOCK | | | | |
| 73 | | '------------------' '---------' | | | .------. | | | | |
| 74 | | '--' | | | | | | | |
| 75 | | .---------. .--. | | | | | | | |
| 76 | | .-------------. |74LS194AN| |DM| | | | | | | | |
| 77 | | | DM74LS374N | '---------' |74| | | | | | | | |
| 78 | | '-------------' |LS| | | | | | | | |
| 79 | | .---------. |74| | | MCU | | | | | |
| 80 | | .-------------. |74LS174N | |AN| | | | | | | | |
| 81 | | | DM74LS245N | '---------' | | | |68B09P| | | | | |
| 82 | | '-------------' '--' | | | | | | | |
| 83 | | .-------------. .--. | | | | | | | |
| 84 | | | DM74LS374N | |DM| | | | | | | | |
| 85 | | .-------. '-------------' |74| | | | | '------' | |
| 86 | | | | |LS| | | | | | |
| 87 | | | | .----------------. .--. |24| | | | .------. | | |
| 88 | | | | | MB8464A-10L-SK | |SN| |5N| | | | |FLASH | | .--. | |
| 89 | | | | '----------------' |74| | | | | | | | | |LM| | |
| 90 | | | | |LS| | | | | | | P28F | | |35| | |
| 91 | | | | .---------. .--. |59| | | | '------' | 512 | | |8N| | |
| 92 | | | MC | |74LS157N | |MB| |0N| | | | | | | '--' | |
| 93 | | | | '---------' |84| | | '--' | | | | | |
| 94 | | |68B45P | |64| '--' | | | | .--------.| |
| 95 | | | | .---------. |A-| .--. | .---. | | | | LM380N || |
| 96 | | | | |74LS157N | |10| .--. |DM| | | | | | | '--------'| |
| 97 | | | | '---------' |L-| |SN| |74| | |TIB| | | | | |
| 98 | | | | |SK| |74| |LS| | |PAL| | | | .--. | |
| 99 | | | | .---------. | | |LS| |24| | |16 | | IC2| | |SN| | |
| 100 | | | | |74LS157N | | | |59| |5N| | |L8 | '------' | |74| | |
| 101 | | | | '---------' | | |0N| | | | | | | |LS| | |
| 102 | | | | | | | | | | | | | | |27| | |
| 103 | | | | .---------. | | '--' | | | | | | |3N| | |
| 104 | | | | |74LS157N | | | | | | '---' | | | | |
| 105 | | '-------' '---------' '--' '--' | | | | | |
| 106 | | | | | | | |
| 107 | | .---------. .-------------. '-------------------------------' '--' | |
| 108 | | |74LS174N | | DM74LS245N | | |
| 109 | | '---------' '-------------' .---. .---------. .---------. .---------. | |
| 110 | | |A00| | 74LS138N| | 74LS138N| |74LS245N | | |
| 111 | | .-----------. .-------------. '---' '---------' '---------' '---------' | |
| 112 | | |DM74LS245N | | DM74LS245N | | |
| 113 | | '-----------' '-------------' .--------. .------------. .------------. .----------. | |
| 114 | | |74LS174N| | SN74LS273N | | SN74LS273N | |898-3-R220| | |
| 115 | | .----------. .----------. '--------' '------------' '------------' '----------' | |
| 116 | | |898-3-R220| |898-3-R220| | |
| 117 | | '----------' '----------' .--------. .--------. .--------. | |
| 118 | | |ULN2003A| |ULN2003A| |ULN2003A| | |
| 119 | | '--------' '--------' '--------' | |
| 120 | | | |
| 121 | '------.- - - - - -2x22 edge connector- - - - - - -.-------.2x10 edge connector.-------' |
| 122 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| 123 | '-------------------------------------------' '-------------------' |
| 124 | |
| 125 | A00 = PCF1251P |
| 126 | |
| 127 | |
| 128 | DIP Switches bank: |
| 129 | .---------------. |
| 130 | | |#| |#| |#| | | |
| 131 | |-+-+-+-+-+-+-+-| |
| 132 | |#| |#| |#| |#|#| |
| 133 | '---------------' |
| 134 | 1 2 3 4 5 6 7 8 |
| 135 | |
| 136 | |
| 137 | Epoxy block - cover: |
| 138 | .--------------------------------------------------------------------------------. |
| 139 | | .-----------------------. | |
| 140 | | ####################################### | VERSION | | |
| 141 | | # ## ## # | Fruit | | |
| 142 | | # ## # # ##### #### ### # # ## # '-----------------------' | |
| 143 | | ### # # # # # # # # # ### | |
| 144 | | ##### # # # ### #### ##### ### ##### .-----------------------. | |
| 145 | | ### # # # # # # # # # # ### | NO: | | |
| 146 | | # ## # # ##### #### # # # # ## # | --------------------- | | |
| 147 | | # ## ## # | DATE: 12/97 | | |
| 148 | | ####################################### | --------------------- | | |
| 149 | | | CUST: | | |
| 150 | | SCHWANENSTADT - AUSTRIA '-----------------------' | |
| 151 | | Tel.: 43 (7673) 4201-0 | |
| 152 | | Fax : 43 (7673) 4201-23 | |
| 153 | | | |
| 154 | | #################################################################### | |
| 155 | | # ## ## ## #### # # ## #### ## # | |
| 156 | | # ## # # # # # # # # # # # ## # | |
| 157 | | # ### # # # #### # # # # # ### # | |
| 158 | | # ## # # # # # # # ## # | |
| 159 | | # ## # # # ### # ##### ## # | |
| 160 | | #################################################################### | |
| 161 | | | |
| 162 | '--------------------------------------------------------------------------------' |
| 163 | |
| 164 | |
| 165 | ***************************************************************************************** |
| 166 | |
| 167 | -------------------- |
| 168 | *** Memory Map *** |
| 169 | -------------------- |
| 170 | |
| 171 | 0x1400 - 0x1401 ; M6845 CRTC. OK |
| 172 | 0x1800 - 0x1801 ; ????. |
| 173 | 0x1E00 - 0x1E01 ; AY-3-8910?. |
| 174 | 0x???? - 0x???? ; Video RAM. |
| 175 | 0x???? - 0x???? ; Color RAM. |
| 176 | 0x2000 - 0x3FFF ; RAM. OK |
| 177 | 0x8000 - 0xFFFF ; ROM space. OK |
| 178 | |
| 179 | |
| 180 | *** CRTC Initialization *** |
| 181 | ---------------------------------------------------------------------------------------------------------------------- |
| 182 | register: R00 R01 R02 R03 R04 R05 R06 R07 R08 R09 R10 R11 R12 R13 R14 R15 R16 R17 |
| 183 | ---------------------------------------------------------------------------------------------------------------------- |
| 184 | value: 0x7F 0x60 0x6A 0x88 0x22 0x08 0x20 0x20 0x00 0x07 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00. |
| 185 | |
| 186 | |
| 187 | ***************************************************************************************** |
| 188 | |
| 189 | |
| 190 | DRIVER UPDATES: |
| 191 | |
| 192 | |
| 193 | [2012-10-10] |
| 194 | |
| 195 | - Initial release. |
| 196 | - Added technical notes. |
| 197 | |
| 198 | |
| 199 | TODO: |
| 200 | |
| 201 | - A lot of work. |
| 202 | |
| 203 | |
| 204 | *****************************************************************************************/ |
| 205 | |
| 206 | |
| 207 | #define MASTER_CLOCK XTAL_8MHz |
| 208 | |
| 209 | #include "emu.h" |
| 210 | #include "cpu/m6809/m6809.h" |
| 211 | #include "video/mc6845.h" |
| 212 | #include "sound/ay8910.h" |
| 213 | //#include "machine/nvram.h" |
| 214 | |
| 215 | |
| 216 | class mpu12wbk_state : public driver_device |
| 217 | { |
| 218 | public: |
| 219 | mpu12wbk_state(const machine_config &mconfig, device_type type, const char *tag) |
| 220 | : driver_device(mconfig, type, tag) , |
| 221 | m_videoram(*this, "videoram"), |
| 222 | m_colorram(*this, "colorram"){ } |
| 223 | |
| 224 | required_shared_ptr<UINT8> m_videoram; |
| 225 | required_shared_ptr<UINT8> m_colorram; |
| 226 | tilemap_t *m_bg_tilemap; |
| 227 | DECLARE_WRITE8_MEMBER(mpu12wbk_videoram_w); |
| 228 | DECLARE_WRITE8_MEMBER(mpu12wbk_colorram_w); |
| 229 | DECLARE_DRIVER_INIT(mpu12wbk); |
| 230 | TILE_GET_INFO_MEMBER(get_bg_tile_info); |
| 231 | virtual void video_start(); |
| 232 | virtual void palette_init(); |
| 233 | UINT32 screen_update_mpu12wbk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 234 | }; |
| 235 | |
| 236 | |
| 237 | /************************* |
| 238 | * Video Hardware * |
| 239 | *************************/ |
| 240 | |
| 241 | |
| 242 | WRITE8_MEMBER(mpu12wbk_state::mpu12wbk_videoram_w) |
| 243 | { |
| 244 | m_videoram[offset] = data; |
| 245 | m_bg_tilemap->mark_tile_dirty(offset); |
| 246 | } |
| 247 | |
| 248 | |
| 249 | WRITE8_MEMBER(mpu12wbk_state::mpu12wbk_colorram_w) |
| 250 | { |
| 251 | m_colorram[offset] = data; |
| 252 | m_bg_tilemap->mark_tile_dirty(offset); |
| 253 | } |
| 254 | |
| 255 | |
| 256 | TILE_GET_INFO_MEMBER(mpu12wbk_state::get_bg_tile_info) |
| 257 | { |
| 258 | /* - bits - |
| 259 | 7654 3210 |
| 260 | ---- ---- bank select. |
| 261 | ---- ---- color code. |
| 262 | */ |
| 263 | // int attr = m_colorram[tile_index]; |
| 264 | // int code = m_videoram[tile_index] | ((attr & 0xc0) << 2); |
| 265 | // int color = (attr & 0x0f); |
| 266 | |
| 267 | // SET_TILE_INFO_MEMBER( 0, code, color, 0); |
| 268 | SET_TILE_INFO_MEMBER( 0, 0 ,0 ,0); |
| 269 | } |
| 270 | |
| 271 | |
| 272 | void mpu12wbk_state::video_start() |
| 273 | { |
| 274 | m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(mpu12wbk_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); |
| 275 | } |
| 276 | |
| 277 | |
| 278 | UINT32 mpu12wbk_state::screen_update_mpu12wbk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 279 | { |
| 280 | m_bg_tilemap->draw(bitmap, cliprect, 0, 0); |
| 281 | return 0; |
| 282 | } |
| 283 | |
| 284 | |
| 285 | void mpu12wbk_state::palette_init() |
| 286 | { |
| 287 | |
| 288 | } |
| 289 | |
| 290 | |
| 291 | /************************* |
| 292 | * Machine Init * |
| 293 | *************************/ |
| 294 | |
| 295 | |
| 296 | /***************************** |
| 297 | * Read/Write Handlers * |
| 298 | *****************************/ |
| 299 | |
| 300 | |
| 301 | /************************* |
| 302 | * Memory Map Information * |
| 303 | *************************/ |
| 304 | |
| 305 | static ADDRESS_MAP_START( mpu12wbk_map, AS_PROGRAM, 8, mpu12wbk_state ) |
| 306 | AM_RANGE(0x1400, 0x1400) AM_DEVWRITE("crtc", mc6845_device, address_w) // OK |
| 307 | AM_RANGE(0x1401, 0x1401) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) // OK |
| 308 | AM_RANGE(0x1e00, 0x1e01) AM_DEVREADWRITE_LEGACY("ay8910", ay8910_r, ay8910_address_data_w) // hmmmmm.... |
| 309 | AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(mpu12wbk_videoram_w) AM_SHARE("videoram") // FIXME |
| 310 | AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(mpu12wbk_colorram_w) AM_SHARE("colorram") // FIXME |
| 311 | AM_RANGE(0x2800, 0x3fff) AM_RAM // RAM (from 2000-3fff) |
| 312 | AM_RANGE(0x6000, 0x6000) AM_READ_PORT("SW1") // dummy, placeholder |
| 313 | AM_RANGE(0x6001, 0x6001) AM_READ_PORT("SW2") // dummy, placeholder |
| 314 | AM_RANGE(0x6002, 0x6002) AM_READ_PORT("IN0") // dummy, placeholder |
| 315 | AM_RANGE(0x6003, 0x6003) AM_READ_PORT("IN1") // dummy, placeholder |
| 316 | AM_RANGE(0x6004, 0x6004) AM_READ_PORT("IN2") // dummy, placeholder |
| 317 | AM_RANGE(0x6005, 0x6005) AM_READ_PORT("IN3") // dummy, placeholder |
| 318 | |
| 319 | AM_RANGE(0x8000, 0xffff) AM_ROM // OK |
| 320 | ADDRESS_MAP_END |
| 321 | |
| 322 | /* |
| 323 | |
| 324 | unknown writes: |
| 325 | |
| 326 | 1400-1401 CRTC |
| 327 | |
| 328 | 1800-1801 R (input?) |
| 329 | 1e00-1e01 RW (psg?) |
| 330 | |
| 331 | */ |
| 332 | |
| 333 | |
| 334 | /************************* |
| 335 | * Input Ports * |
| 336 | *************************/ |
| 337 | |
| 338 | static INPUT_PORTS_START( mpu12wbk ) |
| 339 | PORT_START("IN0") |
| 340 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("0-1") PORT_CODE(KEYCODE_1) |
| 341 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("0-2") PORT_CODE(KEYCODE_2) |
| 342 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("0-3") PORT_CODE(KEYCODE_3) |
| 343 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("0-4") PORT_CODE(KEYCODE_4) |
| 344 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("0-5") PORT_CODE(KEYCODE_5) |
| 345 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("0-6") PORT_CODE(KEYCODE_6) |
| 346 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("0-7") PORT_CODE(KEYCODE_7) |
| 347 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("0-8") PORT_CODE(KEYCODE_8) |
| 348 | |
| 349 | PORT_START("IN1") |
| 350 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1-1") PORT_CODE(KEYCODE_Q) |
| 351 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1-2") PORT_CODE(KEYCODE_W) |
| 352 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1-3") PORT_CODE(KEYCODE_E) |
| 353 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1-4") PORT_CODE(KEYCODE_R) |
| 354 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1-5") PORT_CODE(KEYCODE_T) |
| 355 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1-6") PORT_CODE(KEYCODE_Y) |
| 356 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1-7") PORT_CODE(KEYCODE_U) |
| 357 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1-8") PORT_CODE(KEYCODE_I) |
| 358 | |
| 359 | PORT_START("IN2") |
| 360 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2-1") PORT_CODE(KEYCODE_A) |
| 361 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2-2") PORT_CODE(KEYCODE_S) |
| 362 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2-3") PORT_CODE(KEYCODE_D) |
| 363 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2-4") PORT_CODE(KEYCODE_F) |
| 364 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2-5") PORT_CODE(KEYCODE_G) |
| 365 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2-6") PORT_CODE(KEYCODE_H) |
| 366 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2-7") PORT_CODE(KEYCODE_J) |
| 367 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2-8") PORT_CODE(KEYCODE_K) |
| 368 | |
| 369 | PORT_START("IN3") |
| 370 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("3-1") PORT_CODE(KEYCODE_Z) |
| 371 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("3-2") PORT_CODE(KEYCODE_X) |
| 372 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("3-3") PORT_CODE(KEYCODE_C) |
| 373 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("3-4") PORT_CODE(KEYCODE_V) |
| 374 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("3-5") PORT_CODE(KEYCODE_B) |
| 375 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("3-6") PORT_CODE(KEYCODE_N) |
| 376 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("3-7") PORT_CODE(KEYCODE_M) |
| 377 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("3-8") PORT_CODE(KEYCODE_L) |
| 378 | |
| 379 | PORT_START("SW1") |
| 380 | PORT_DIPNAME( 0x01, 0x01, "SW1" ) |
| 381 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 382 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 383 | PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) |
| 384 | PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) |
| 385 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 386 | PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) |
| 387 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 388 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 389 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) |
| 390 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 391 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 392 | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) |
| 393 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 394 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 395 | PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) |
| 396 | PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) |
| 397 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 398 | PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) |
| 399 | PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) |
| 400 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 401 | PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) |
| 402 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
| 403 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 404 | |
| 405 | PORT_START("SW2") |
| 406 | PORT_DIPNAME( 0x01, 0x01, "SW2" ) |
| 407 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 408 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 409 | PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) |
| 410 | PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) |
| 411 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 412 | PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) |
| 413 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 414 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 415 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) |
| 416 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 417 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 418 | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) |
| 419 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 420 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 421 | PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) |
| 422 | PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) |
| 423 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 424 | PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) |
| 425 | PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) |
| 426 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 427 | PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) |
| 428 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
| 429 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 430 | INPUT_PORTS_END |
| 431 | |
| 432 | |
| 433 | /************************* |
| 434 | * Graphics Layouts * |
| 435 | *************************/ |
| 436 | |
| 437 | static const gfx_layout charlayout = |
| 438 | |
| 439 | { |
| 440 | // 8, 8, |
| 441 | // RGN_FRAC(3,3), |
| 442 | // 1, /* 1 bpp */ |
| 443 | // { 0 }, |
| 444 | // { 0, 1, 2, 3, 4, 5, 6, 7 }, |
| 445 | // { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, |
| 446 | // 8*8 /* every char takes 8 consecutive bytes */ |
| 447 | |
| 448 | // 8, 8, |
| 449 | // RGN_FRAC(1,3), |
| 450 | // 3, |
| 451 | // { 0, RGN_FRAC(1,3), RGN_FRAC(2,3) }, /* bitplanes are separated */ |
| 452 | // { 0, 1, 2, 3, 4, 5, 6, 7 }, |
| 453 | // { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, |
| 454 | // 8*8 |
| 455 | |
| 456 | 4,8, |
| 457 | RGN_FRAC(1,2), |
| 458 | 4, |
| 459 | { RGN_FRAC(0,2), RGN_FRAC(0,2) + 4, RGN_FRAC(1,2), RGN_FRAC(1,2) + 4 }, |
| 460 | { 3, 2, 1, 0 }, |
| 461 | { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, |
| 462 | 8*4*2 |
| 463 | |
| 464 | }; |
| 465 | |
| 466 | |
| 467 | /****************************** |
| 468 | * Graphics Decode Information * |
| 469 | ******************************/ |
| 470 | |
| 471 | static GFXDECODE_START( mpu12wbk ) |
| 472 | GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 ) |
| 473 | GFXDECODE_END |
| 474 | |
| 475 | |
| 476 | /************************* |
| 477 | * Sound Interface * |
| 478 | *************************/ |
| 479 | |
| 480 | static const ay8910_interface ay8910_config = |
| 481 | { |
| 482 | AY8910_LEGACY_OUTPUT, |
| 483 | AY8910_DEFAULT_LOADS, |
| 484 | DEVCB_NULL, |
| 485 | DEVCB_NULL, |
| 486 | DEVCB_NULL, |
| 487 | DEVCB_NULL |
| 488 | }; |
| 489 | |
| 490 | |
| 491 | /************************ |
| 492 | * CRTC Interface * |
| 493 | ************************/ |
| 494 | |
| 495 | static const mc6845_interface mc6845_intf = |
| 496 | { |
| 497 | "screen", /* screen we are acting on */ |
| 498 | 4, /* number of pixels per video memory address */ |
| 499 | NULL, /* before pixel update callback */ |
| 500 | NULL, /* row update callback */ |
| 501 | NULL, /* after pixel update callback */ |
| 502 | DEVCB_NULL, /* callback for display state changes */ |
| 503 | DEVCB_NULL, /* callback for cursor state changes */ |
| 504 | DEVCB_NULL, /* HSYNC callback */ |
| 505 | DEVCB_NULL, /* VSYNC callback */ |
| 506 | NULL /* update address callback */ |
| 507 | }; |
| 508 | |
| 509 | |
| 510 | /************************* |
| 511 | * Machine Drivers * |
| 512 | *************************/ |
| 513 | |
| 514 | static MACHINE_CONFIG_START( mpu12wbk, mpu12wbk_state ) |
| 515 | |
| 516 | /* basic machine hardware */ |
| 517 | MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/2) /* guess */ |
| 518 | MCFG_CPU_PROGRAM_MAP(mpu12wbk_map) |
| 519 | MCFG_CPU_VBLANK_INT_DRIVER("screen", mpu12wbk_state, nmi_line_pulse) |
| 520 | |
| 521 | // MCFG_NVRAM_ADD_0FILL("nvram") |
| 522 | |
| 523 | /* video hardware */ |
| 524 | MCFG_SCREEN_ADD("screen", RASTER) |
| 525 | MCFG_SCREEN_REFRESH_RATE(60) |
| 526 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 527 | MCFG_SCREEN_SIZE((32+1)*8, (32+1)*8) /* From MC6845, registers 00 & 04. (value-1) */ |
| 528 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) /* Driven by MC6845, registers 01 & 06 */ |
| 529 | MCFG_SCREEN_UPDATE_DRIVER(mpu12wbk_state, screen_update_mpu12wbk) |
| 530 | |
| 531 | MCFG_GFXDECODE(mpu12wbk) |
| 532 | MCFG_PALETTE_LENGTH(512) |
| 533 | |
| 534 | MCFG_MC6845_ADD("crtc", MC6845, MASTER_CLOCK/4, mc6845_intf) /* guess */ |
| 535 | |
| 536 | /* sound hardware */ |
| 537 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 538 | |
| 539 | MCFG_SOUND_ADD("ay8910", AY8910, MASTER_CLOCK/8) /* guess */ |
| 540 | MCFG_SOUND_CONFIG(ay8910_config) |
| 541 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 542 | |
| 543 | MACHINE_CONFIG_END |
| 544 | |
| 545 | |
| 546 | /************************* |
| 547 | * Rom Load * |
| 548 | *************************/ |
| 549 | /* |
| 550 | |
| 551 | Program is inside a CPU epoxy block |
| 552 | with a m6809 and PLD. |
| 553 | |
| 554 | Version 8.20PIR |
| 555 | |
| 556 | */ |
| 557 | ROM_START( fruitstb ) |
| 558 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 559 | ROM_LOAD( "p28f512_box.ic2", 0x8000, 0x8000, CRC(95d4ddaa) SHA1(498f841b3cd12ac128954841dd463b62c335e038) ) |
| 560 | ROM_IGNORE( 0x8000 ) // second half is filled with 0xff, vectors are at the end of the 1st half |
| 561 | |
| 562 | ROM_REGION( 0x20000, "gfx1", 0 ) |
| 563 | ROM_LOAD( "fruit1.ic37", 0x00000, 0x10000, CRC(c1834a6d) SHA1(ece1e47641087be342d3c5c092d8a7233ae871f3) ) |
| 564 | ROM_LOAD( "fruit2.ic38", 0x10000, 0x10000, CRC(32d282a8) SHA1(792174d75dc7ec5f1e6f145539a5ec8e3953e1dd) ) |
| 565 | // ROM_LOAD( "fruit3.ic39", 0x20000, 0x10000, CRC(311a6d4e) SHA1(62cf670b605906f7f4225905118524ee30d0e85b) ) // and this one? |
| 566 | |
| 567 | ROM_REGION( 0x0400, "proms", 0 ) |
| 568 | ROM_LOAD( "82s131.ic47", 0x0000, 0x0200, CRC(54565d41) SHA1(8e412a3441c9c1e7f8309f2087389ac4250896e6) ) |
| 569 | ROM_LOAD( "82s147.ic46", 0x0200, 0x0200, CRC(ee576268) SHA1(8964526fa253f484d784aec46c4c31358bc1667b) ) |
| 570 | |
| 571 | ROM_END |
| 572 | |
| 573 | |
| 574 | /************************ |
| 575 | * Driver Init * |
| 576 | ************************/ |
| 577 | |
| 578 | DRIVER_INIT_MEMBER(mpu12wbk_state, mpu12wbk) |
| 579 | { |
| 580 | // just in case... |
| 581 | } |
| 582 | |
| 583 | |
| 584 | /************************* |
| 585 | * Game Drivers * |
| 586 | *************************/ |
| 587 | |
| 588 | /* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ |
| 589 | GAME( 1997, fruitstb, 0, mpu12wbk, mpu12wbk, mpu12wbk_state, mpu12wbk, ROT0, "Webak Elektronik", "Fruit Star Bonus (Ver 8.20PIR)", GAME_NO_SOUND | GAME_NOT_WORKING ) |