trunk/src/mame/drivers/xexex.c
| r30688 | r30689 | |
| 287 | 287 | return soundlatch3_byte_r(space, 0); |
| 288 | 288 | } |
| 289 | 289 | |
| 290 | | void xexex_state::reset_sound_region() |
| 291 | | { |
| 292 | | membank("bank2")->set_entry(m_cur_sound_region & 0x07); |
| 293 | | } |
| 294 | | |
| 295 | 290 | WRITE8_MEMBER(xexex_state::sound_bankswitch_w) |
| 296 | 291 | { |
| 297 | | m_cur_sound_region = data & 7; |
| 298 | | reset_sound_region(); |
| 292 | membank("z80bank")->set_entry(data & 0x07); |
| 299 | 293 | } |
| 300 | 294 | |
| 301 | 295 | static void ym_set_mixing(device_t *device, double left, double right) |
| r30688 | r30689 | |
| 409 | 403 | |
| 410 | 404 | |
| 411 | 405 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, xexex_state ) |
| 412 | | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") |
| 413 | | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 406 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 407 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank") |
| 414 | 408 | AM_RANGE(0xc000, 0xdfff) AM_RAM |
| 415 | 409 | AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) |
| 416 | 410 | AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) |
| r30688 | r30689 | |
| 465 | 459 | "gfx1", 0, |
| 466 | 460 | K056832_BPP_4, |
| 467 | 461 | 1, 0, |
| 468 | | KONAMI_ROM_DEINTERLEAVE_2, |
| 462 | KONAMI_ROM_DEINTERLEAVE_NONE, |
| 469 | 463 | xexex_tile_callback, "none" |
| 470 | 464 | }; |
| 471 | 465 | |
| r30688 | r30689 | |
| 474 | 468 | "gfx2", 1, |
| 475 | 469 | NORMAL_PLANE_ORDER, |
| 476 | 470 | -48, 32, |
| 477 | | KONAMI_ROM_DEINTERLEAVE_4, |
| 471 | KONAMI_ROM_DEINTERLEAVE_NONE, |
| 478 | 472 | xexex_sprite_callback |
| 479 | 473 | }; |
| 480 | 474 | |
| 481 | 475 | void xexex_state::xexex_postload() |
| 482 | 476 | { |
| 483 | 477 | parse_control2(); |
| 484 | | reset_sound_region(); |
| 485 | 478 | } |
| 486 | 479 | |
| 487 | 480 | void xexex_state::machine_start() |
| 488 | 481 | { |
| 489 | | UINT8 *ROM = memregion("audiocpu")->base(); |
| 482 | membank("z80bank")->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000); |
| 483 | membank("z80bank")->set_entry(0); |
| 490 | 484 | |
| 491 | | membank("bank2")->configure_entries(0, 8, &ROM[0x10000], 0x4000); |
| 492 | | membank("bank2")->set_entry(0); |
| 493 | | |
| 494 | 485 | save_item(NAME(m_cur_alpha)); |
| 495 | 486 | save_item(NAME(m_sprite_colorbase)); |
| 496 | 487 | save_item(NAME(m_layer_colorbase)); |
| r30688 | r30689 | |
| 500 | 491 | save_item(NAME(m_frame)); |
| 501 | 492 | |
| 502 | 493 | save_item(NAME(m_cur_control2)); |
| 503 | | save_item(NAME(m_cur_sound_region)); |
| 504 | 494 | machine().save().register_postload(save_prepost_delegate(FUNC(xexex_state::xexex_postload), this)); |
| 505 | 495 | |
| 506 | 496 | m_dmadelay_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(xexex_state::dmaend_callback),this)); |
| r30688 | r30689 | |
| 519 | 509 | m_sprite_colorbase = 0; |
| 520 | 510 | |
| 521 | 511 | m_cur_control2 = 0; |
| 522 | | m_cur_sound_region = 0; |
| 523 | 512 | m_suspension_active = 0; |
| 524 | 513 | m_resume_trigger = 1000; |
| 525 | 514 | m_frame = -1; |
| r30688 | r30689 | |
| 602 | 591 | ROM_LOAD16_BYTE( "067b03.13d", 0x100000, 0x040000, CRC(97833086) SHA1(a564f7b1b52c774d78a59f4418c7ecccaf94ad41) ) |
| 603 | 592 | ROM_LOAD16_BYTE( "067b04.13f", 0x100001, 0x040000, CRC(26ec5dc8) SHA1(9da62683bfa8f16607cbea2d59a1446ec8588c5b) ) |
| 604 | 593 | |
| 605 | | ROM_REGION( 0x030000, "audiocpu", 0 ) |
| 594 | ROM_REGION( 0x020000, "audiocpu", 0 ) |
| 606 | 595 | ROM_LOAD( "067eaa05.4e", 0x000000, 0x020000, CRC(0e33d6ec) SHA1(4dd68cb78c779e2d035e43fec35a7672ed1c259b) ) |
| 607 | | ROM_RELOAD( 0x010000, 0x020000 ) |
| 608 | 596 | |
| 609 | 597 | ROM_REGION( 0x200000, "gfx1", 0 ) |
| 610 | | ROM_LOAD( "067b14.1n", 0x000000, 0x100000, CRC(02a44bfa) SHA1(ad95df4dbf8842820ef20f54407870afb6d0e4a3) ) |
| 611 | | ROM_LOAD( "067b13.2n", 0x100000, 0x100000, CRC(633c8eb5) SHA1(a11f78003a1dffe2d8814d368155059719263082) ) |
| 598 | ROM_LOAD32_WORD( "067b14.1n", 0x000000, 0x100000, CRC(02a44bfa) SHA1(ad95df4dbf8842820ef20f54407870afb6d0e4a3) ) |
| 599 | ROM_LOAD32_WORD( "067b13.2n", 0x000002, 0x100000, CRC(633c8eb5) SHA1(a11f78003a1dffe2d8814d368155059719263082) ) |
| 612 | 600 | |
| 613 | 601 | ROM_REGION( 0x400000, "gfx2", 0 ) |
| 614 | | ROM_LOAD( "067b12.17n", 0x000000, 0x100000, CRC(08d611b0) SHA1(9cac60131e0411f173acd8ef3f206e5e58a7e5d2) ) |
| 615 | | ROM_LOAD( "067b11.19n", 0x100000, 0x100000, CRC(a26f7507) SHA1(6bf717cb9fcad59a2eafda967f14120b9ebbc8c5) ) |
| 616 | | ROM_LOAD( "067b10.20n", 0x200000, 0x100000, CRC(ee31db8d) SHA1(c41874fb8b401ea9cdd327ee6239b5925418cf7b) ) |
| 617 | | ROM_LOAD( "067b09.22n", 0x300000, 0x100000, CRC(88f072ef) SHA1(7ecc04dbcc29b715117e970cc96e11137a21b83a) ) |
| 602 | ROM_LOAD64_WORD( "067b12.17n", 0x000000, 0x100000, CRC(08d611b0) SHA1(9cac60131e0411f173acd8ef3f206e5e58a7e5d2) ) |
| 603 | ROM_LOAD64_WORD( "067b11.19n", 0x000002, 0x100000, CRC(a26f7507) SHA1(6bf717cb9fcad59a2eafda967f14120b9ebbc8c5) ) |
| 604 | ROM_LOAD64_WORD( "067b10.20n", 0x000004, 0x100000, CRC(ee31db8d) SHA1(c41874fb8b401ea9cdd327ee6239b5925418cf7b) ) |
| 605 | ROM_LOAD64_WORD( "067b09.22n", 0x000006, 0x100000, CRC(88f072ef) SHA1(7ecc04dbcc29b715117e970cc96e11137a21b83a) ) |
| 618 | 606 | |
| 619 | 607 | ROM_REGION( 0x080000, "k053250", 0 ) |
| 620 | 608 | ROM_LOAD( "067b08.22f", 0x000000, 0x080000, CRC(ca816b7b) SHA1(769ce3700e41200c34adec98598c0fe371fe1e6d) ) |
| r30688 | r30689 | |
| 634 | 622 | ROM_LOAD16_BYTE( "067b03.13d", 0x100000, 0x040000, CRC(97833086) SHA1(a564f7b1b52c774d78a59f4418c7ecccaf94ad41) ) |
| 635 | 623 | ROM_LOAD16_BYTE( "067b04.13f", 0x100001, 0x040000, CRC(26ec5dc8) SHA1(9da62683bfa8f16607cbea2d59a1446ec8588c5b) ) |
| 636 | 624 | |
| 637 | | ROM_REGION( 0x030000, "audiocpu", 0 ) |
| 625 | ROM_REGION( 0x020000, "audiocpu", 0 ) |
| 638 | 626 | ROM_LOAD( "067eaa05.4e", 0x000000, 0x020000, CRC(0e33d6ec) SHA1(4dd68cb78c779e2d035e43fec35a7672ed1c259b) ) |
| 639 | | ROM_RELOAD( 0x010000, 0x020000 ) |
| 640 | 627 | |
| 641 | 628 | ROM_REGION( 0x200000, "gfx1", 0 ) |
| 642 | | ROM_LOAD( "067b14.1n", 0x000000, 0x100000, CRC(02a44bfa) SHA1(ad95df4dbf8842820ef20f54407870afb6d0e4a3) ) |
| 643 | | ROM_LOAD( "067b13.2n", 0x100000, 0x100000, CRC(633c8eb5) SHA1(a11f78003a1dffe2d8814d368155059719263082) ) |
| 629 | ROM_LOAD32_WORD( "067b14.1n", 0x000000, 0x100000, CRC(02a44bfa) SHA1(ad95df4dbf8842820ef20f54407870afb6d0e4a3) ) |
| 630 | ROM_LOAD32_WORD( "067b13.2n", 0x000002, 0x100000, CRC(633c8eb5) SHA1(a11f78003a1dffe2d8814d368155059719263082) ) |
| 644 | 631 | |
| 645 | 632 | ROM_REGION( 0x400000, "gfx2", 0 ) |
| 646 | | ROM_LOAD( "067b12.17n", 0x000000, 0x100000, CRC(08d611b0) SHA1(9cac60131e0411f173acd8ef3f206e5e58a7e5d2) ) |
| 647 | | ROM_LOAD( "067b11.19n", 0x100000, 0x100000, CRC(a26f7507) SHA1(6bf717cb9fcad59a2eafda967f14120b9ebbc8c5) ) |
| 648 | | ROM_LOAD( "067b10.20n", 0x200000, 0x100000, CRC(ee31db8d) SHA1(c41874fb8b401ea9cdd327ee6239b5925418cf7b) ) |
| 649 | | ROM_LOAD( "067b09.22n", 0x300000, 0x100000, CRC(88f072ef) SHA1(7ecc04dbcc29b715117e970cc96e11137a21b83a) ) |
| 633 | ROM_LOAD64_WORD( "067b12.17n", 0x000000, 0x100000, CRC(08d611b0) SHA1(9cac60131e0411f173acd8ef3f206e5e58a7e5d2) ) |
| 634 | ROM_LOAD64_WORD( "067b11.19n", 0x000002, 0x100000, CRC(a26f7507) SHA1(6bf717cb9fcad59a2eafda967f14120b9ebbc8c5) ) |
| 635 | ROM_LOAD64_WORD( "067b10.20n", 0x000004, 0x100000, CRC(ee31db8d) SHA1(c41874fb8b401ea9cdd327ee6239b5925418cf7b) ) |
| 636 | ROM_LOAD64_WORD( "067b09.22n", 0x000006, 0x100000, CRC(88f072ef) SHA1(7ecc04dbcc29b715117e970cc96e11137a21b83a) ) |
| 650 | 637 | |
| 651 | 638 | ROM_REGION( 0x080000, "k053250", 0 ) |
| 652 | 639 | ROM_LOAD( "067b08.22f", 0x000000, 0x080000, CRC(ca816b7b) SHA1(769ce3700e41200c34adec98598c0fe371fe1e6d) ) |
| r30688 | r30689 | |
| 666 | 653 | ROM_LOAD16_BYTE( "067b03.13d", 0x100000, 0x040000, CRC(97833086) SHA1(a564f7b1b52c774d78a59f4418c7ecccaf94ad41) ) |
| 667 | 654 | ROM_LOAD16_BYTE( "067b04.13f", 0x100001, 0x040000, CRC(26ec5dc8) SHA1(9da62683bfa8f16607cbea2d59a1446ec8588c5b) ) |
| 668 | 655 | |
| 669 | | ROM_REGION( 0x030000, "audiocpu", 0 ) |
| 656 | ROM_REGION( 0x020000, "audiocpu", 0 ) |
| 670 | 657 | ROM_LOAD( "067jaa05.4e", 0x000000, 0x020000, CRC(2f4dd0a8) SHA1(bfa76c9c968f1beba648a2911510e3d666a8fe3a) ) |
| 671 | | ROM_RELOAD( 0x010000, 0x020000 ) |
| 672 | 658 | |
| 673 | 659 | ROM_REGION( 0x200000, "gfx1", 0 ) |
| 674 | | ROM_LOAD( "067b14.1n", 0x000000, 0x100000, CRC(02a44bfa) SHA1(ad95df4dbf8842820ef20f54407870afb6d0e4a3) ) |
| 675 | | ROM_LOAD( "067b13.2n", 0x100000, 0x100000, CRC(633c8eb5) SHA1(a11f78003a1dffe2d8814d368155059719263082) ) |
| 660 | ROM_LOAD32_WORD( "067b14.1n", 0x000000, 0x100000, CRC(02a44bfa) SHA1(ad95df4dbf8842820ef20f54407870afb6d0e4a3) ) |
| 661 | ROM_LOAD32_WORD( "067b13.2n", 0x000002, 0x100000, CRC(633c8eb5) SHA1(a11f78003a1dffe2d8814d368155059719263082) ) |
| 676 | 662 | |
| 677 | 663 | ROM_REGION( 0x400000, "gfx2", 0 ) |
| 678 | | ROM_LOAD( "067b12.17n", 0x000000, 0x100000, CRC(08d611b0) SHA1(9cac60131e0411f173acd8ef3f206e5e58a7e5d2) ) |
| 679 | | ROM_LOAD( "067b11.19n", 0x100000, 0x100000, CRC(a26f7507) SHA1(6bf717cb9fcad59a2eafda967f14120b9ebbc8c5) ) |
| 680 | | ROM_LOAD( "067b10.20n", 0x200000, 0x100000, CRC(ee31db8d) SHA1(c41874fb8b401ea9cdd327ee6239b5925418cf7b) ) |
| 681 | | ROM_LOAD( "067b09.22n", 0x300000, 0x100000, CRC(88f072ef) SHA1(7ecc04dbcc29b715117e970cc96e11137a21b83a) ) |
| 664 | ROM_LOAD64_WORD( "067b12.17n", 0x000000, 0x100000, CRC(08d611b0) SHA1(9cac60131e0411f173acd8ef3f206e5e58a7e5d2) ) |
| 665 | ROM_LOAD64_WORD( "067b11.19n", 0x000002, 0x100000, CRC(a26f7507) SHA1(6bf717cb9fcad59a2eafda967f14120b9ebbc8c5) ) |
| 666 | ROM_LOAD64_WORD( "067b10.20n", 0x000004, 0x100000, CRC(ee31db8d) SHA1(c41874fb8b401ea9cdd327ee6239b5925418cf7b) ) |
| 667 | ROM_LOAD64_WORD( "067b09.22n", 0x000006, 0x100000, CRC(88f072ef) SHA1(7ecc04dbcc29b715117e970cc96e11137a21b83a) ) |
| 682 | 668 | |
| 683 | 669 | ROM_REGION( 0x080000, "k053250", 0 ) |
| 684 | 670 | ROM_LOAD( "067b08.22f", 0x000000, 0x080000, CRC(ca816b7b) SHA1(769ce3700e41200c34adec98598c0fe371fe1e6d) ) |
trunk/src/mame/video/neogeo.c
| r30688 | r30689 | |
| 48 | 48 | } |
| 49 | 49 | |
| 50 | 50 | |
| 51 | void neogeo_state::create_rgb_lookups() |
| 52 | { |
| 53 | static const int resistances[] = {3900, 2200, 1000, 470, 220}; |
| 54 | |
| 55 | /* compute four sets of weights - with or without the pulldowns - |
| 56 | ensuring that we use the same scaler for all */ |
| 57 | double weights_normal[5]; |
| 58 | double scaler = compute_resistor_weights(0, 255, -1, |
| 59 | 5, resistances, weights_normal, 0, 0, |
| 60 | 0, NULL, NULL, 0, 0, |
| 61 | 0, NULL, NULL, 0, 0); |
| 62 | |
| 63 | double weights_dark[5]; |
| 64 | compute_resistor_weights(0, 255, scaler, |
| 65 | 5, resistances, weights_dark, 8200, 0, |
| 66 | 0, NULL, NULL, 0, 0, |
| 67 | 0, NULL, NULL, 0, 0); |
| 68 | |
| 69 | double weights_shadow[5]; |
| 70 | compute_resistor_weights(0, 255, scaler, |
| 71 | 5, resistances, weights_shadow, 150, 0, |
| 72 | 0, NULL, NULL, 0, 0, |
| 73 | 0, NULL, NULL, 0, 0); |
| 74 | |
| 75 | double weights_dark_shadow[5]; |
| 76 | compute_resistor_weights(0, 255, scaler, |
| 77 | 5, resistances, weights_dark_shadow, 1.0 / ((1.0 / 8200) + (1.0 / 150)), 0, |
| 78 | 0, NULL, NULL, 0, 0, |
| 79 | 0, NULL, NULL, 0, 0); |
| 80 | |
| 81 | for (int i = 0; i < 32; i++) |
| 82 | { |
| 83 | int i4 = (i >> 4) & 1; |
| 84 | int i3 = (i >> 3) & 1; |
| 85 | int i2 = (i >> 2) & 1; |
| 86 | int i1 = (i >> 1) & 1; |
| 87 | int i0 = (i >> 0) & 1; |
| 88 | m_palette_lookup[i][0] = combine_5_weights(weights_normal, i0, i1, i2, i3, i4); |
| 89 | m_palette_lookup[i][1] = combine_5_weights(weights_dark, i0, i1, i2, i3, i4); |
| 90 | m_palette_lookup[i][2] = combine_5_weights(weights_shadow, i0, i1, i2, i3, i4); |
| 91 | m_palette_lookup[i][3] = combine_5_weights(weights_dark_shadow, i0, i1, i2, i3, i4); |
| 92 | } |
| 93 | } |
| 94 | |
| 95 | |
| 51 | 96 | pen_t neogeo_state::get_pen( UINT16 data ) |
| 52 | 97 | { |
| 53 | 98 | double *weights; |
| r30688 | r30689 | |
| 155 | 200 | m_pens = auto_alloc_array(machine(), pen_t, NUM_PENS); |
| 156 | 201 | |
| 157 | 202 | compute_rgb_weights(); |
| 203 | create_rgb_lookups(); |
| 158 | 204 | |
| 159 | 205 | memset(m_palettes[0], 0x00, NUM_PENS * sizeof(UINT16)); |
| 160 | 206 | memset(m_palettes[1], 0x00, NUM_PENS * sizeof(UINT16)); |