trunk/src/mame/drivers/fcrash.c
| r19326 | r19327 | |
| 51 | 51 | } |
| 52 | 52 | } |
| 53 | 53 | |
| 54 | WRITE16_MEMBER(cps_state::cawingbl_soundlatch_w) |
| 55 | { |
| 56 | cps_state *state = space.machine().driver_data<cps_state>(); |
| 57 | |
| 58 | if (ACCESSING_BITS_8_15) |
| 59 | { |
| 60 | state->soundlatch_byte_w(space, 0, data >> 8); |
| 61 | state->m_audiocpu->set_input_line(0, HOLD_LINE); |
| 62 | } |
| 63 | } |
| 64 | |
| 54 | 65 | static WRITE8_HANDLER( fcrash_snd_bankswitch_w ) |
| 55 | 66 | { |
| 56 | 67 | cps_state *state = space.machine().driver_data<cps_state>(); |
| r19326 | r19327 | |
| 103 | 114 | { |
| 104 | 115 | cps_state *state = machine.driver_data<cps_state>(); |
| 105 | 116 | int i; |
| 106 | | int priority[4]; |
| 107 | 117 | |
| 108 | | priority[0] = 0x26; |
| 109 | | priority[1] = 0x30; |
| 110 | | priority[2] = 0x28; |
| 111 | | priority[3] = 0x32; |
| 112 | | |
| 113 | 118 | for (i = 0; i < 4; i++) |
| 114 | 119 | { |
| 115 | 120 | int mask; |
| 116 | 121 | |
| 117 | 122 | /* Get transparency registers */ |
| 118 | | if (priority[i]) |
| 119 | | mask = state->m_cps_b_regs[priority[i] / 2] ^ 0xffff; |
| 123 | if (state->m_layer_mask_reg[i]) |
| 124 | mask = state->m_cps_b_regs[state->m_layer_mask_reg[i] / 2] ^ 0xffff; |
| 120 | 125 | else |
| 121 | 126 | mask = 0xffff; /* completely transparent if priority masks not defined (mercs, qad) */ |
| 122 | 127 | |
| r19326 | r19327 | |
| 130 | 135 | { |
| 131 | 136 | cps_state *state = machine.driver_data<cps_state>(); |
| 132 | 137 | int pos; |
| 133 | | int base = 0x50c8 / 2; |
| 138 | int base = state->m_sprite_base / 2; |
| 139 | int num_sprites = machine.gfx[2]->elements(); |
| 134 | 140 | |
| 135 | 141 | // sprite base registers need hooking up properly.. on fcrash it is NOT cps1_cps_a_regs[0] |
| 136 | 142 | // on kodb, it might still be, unless that's just a leftover and it writes somewhere else too |
| 137 | 143 | // if (state->m_cps_a_regs[0] & 0x00ff) base = 0x10c8/2; |
| 138 | 144 | // printf("cps1_cps_a_regs %04x\n", state->m_cps_a_regs[0]); |
| 139 | 145 | |
| 146 | /* get end of sprite list marker */ |
| 147 | int last_sprite_offset = 0x1ffc; |
| 148 | |
| 140 | 149 | for (pos = 0x1ffc; pos >= 0x0000; pos -= 4) |
| 141 | 150 | { |
| 151 | if (state->m_gfxram[base + pos - 1] == 0x8000) last_sprite_offset = pos; |
| 152 | } |
| 153 | |
| 154 | for (pos = last_sprite_offset; pos >= 0x0000; pos -= 4) |
| 155 | { |
| 142 | 156 | int tileno; |
| 143 | 157 | int xpos; |
| 144 | 158 | int ypos; |
| 145 | 159 | int flipx, flipy; |
| 146 | 160 | int colour; |
| 147 | 161 | |
| 148 | | tileno = state->m_gfxram[base +pos]; |
| 149 | | xpos = state->m_gfxram[base +pos + 2]; |
| 150 | | ypos = state->m_gfxram[base +pos - 1] & 0xff; |
| 151 | | flipx = state->m_gfxram[base +pos + 1] & 0x20; |
| 152 | | flipy = state->m_gfxram[base +pos + 1] & 0x40; |
| 153 | | colour = state->m_gfxram[base +pos + 1] & 0x1f; |
| 154 | | ypos = 256 - ypos; |
| 155 | | |
| 162 | tileno = state->m_gfxram[base + pos]; |
| 163 | if (tileno >= num_sprites) continue; /* don't render anything outside our tiles */ |
| 164 | xpos = state->m_gfxram[base + pos + 2] & 0x1ff; |
| 165 | ypos = state->m_gfxram[base + pos - 1] & 0x1ff; |
| 166 | flipx = state->m_gfxram[base + pos + 1] & 0x20; |
| 167 | flipy = state->m_gfxram[base + pos + 1] & 0x40; |
| 168 | colour = state->m_gfxram[base + pos + 1] & 0x1f; |
| 169 | ypos = 256 - ypos; |
| 170 | |
| 156 | 171 | pdrawgfx_transpen(bitmap, cliprect, machine.gfx[2], tileno, colour, flipx, flipy, xpos + 49, ypos - 16, machine.priority_bitmap, 0x02, 15); |
| 157 | 172 | |
| 158 | 173 | } |
| r19326 | r19327 | |
| 198 | 213 | { |
| 199 | 214 | cps_state *state = machine.driver_data<cps_state>(); |
| 200 | 215 | int offset; |
| 201 | | |
| 216 | |
| 217 | // all the bootlegs seem to write the palette offset as usual |
| 218 | int palettebase = (state->m_cps_a_regs[0x0a / 2] << 8) & 0x1ffff; |
| 219 | |
| 202 | 220 | for (offset = 0; offset < 32 * 6 * 16; offset++) |
| 203 | 221 | { |
| 204 | | int palette = state->m_gfxram[0x14000 / 2 + offset]; |
| 222 | int palette = state->m_gfxram[palettebase / 2 + offset]; |
| 205 | 223 | int r, g, b, bright; |
| 206 | 224 | |
| 207 | 225 | // from my understanding of the schematics, when the 'brightness' |
| r19326 | r19327 | |
| 225 | 243 | |
| 226 | 244 | flip_screen_set(videocontrol & 0x8000); |
| 227 | 245 | |
| 228 | | layercontrol = m_cps_b_regs[0x20 / 2]; |
| 246 | layercontrol = m_cps_b_regs[m_layer_enable_reg / 2]; |
| 229 | 247 | |
| 230 | 248 | /* Get video memory base registers */ |
| 231 | 249 | cps1_get_video_base(machine()); |
| r19326 | r19327 | |
| 235 | 253 | |
| 236 | 254 | fcrash_update_transmasks(machine()); |
| 237 | 255 | |
| 238 | | m_bg_tilemap[0]->set_scrollx(0, m_scroll1x - 62); |
| 256 | m_bg_tilemap[0]->set_scrollx(0, m_scroll1x - m_layer_scroll1x_offset); |
| 239 | 257 | m_bg_tilemap[0]->set_scrolly(0, m_scroll1y); |
| 240 | 258 | |
| 241 | 259 | if (videocontrol & 0x01) /* linescroll enable */ |
| r19326 | r19327 | |
| 254 | 272 | else |
| 255 | 273 | { |
| 256 | 274 | m_bg_tilemap[1]->set_scroll_rows(1); |
| 257 | | m_bg_tilemap[1]->set_scrollx(0, m_scroll2x - 60); |
| 275 | m_bg_tilemap[1]->set_scrollx(0, m_scroll2x - m_layer_scroll2x_offset); |
| 258 | 276 | } |
| 259 | 277 | m_bg_tilemap[1]->set_scrolly(0, m_scroll2y); |
| 260 | | m_bg_tilemap[2]->set_scrollx(0, m_scroll3x - 64); |
| 278 | m_bg_tilemap[2]->set_scrollx(0, m_scroll3x - m_layer_scroll3x_offset); |
| 261 | 279 | m_bg_tilemap[2]->set_scrolly(0, m_scroll3y); |
| 262 | 280 | |
| 263 | 281 | |
| r19326 | r19327 | |
| 580 | 598 | PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 581 | 599 | INPUT_PORTS_END |
| 582 | 600 | |
| 601 | static INPUT_PORTS_START( cawingbl ) |
| 602 | PORT_START("IN0") |
| 603 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 604 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 605 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) |
| 606 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 607 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) |
| 608 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) |
| 609 | PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW ) |
| 610 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 611 | |
| 612 | PORT_START("IN1") |
| 613 | PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) |
| 614 | PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) |
| 615 | PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) |
| 616 | PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) |
| 617 | PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) |
| 618 | PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) |
| 619 | PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) |
| 620 | PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 621 | PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) |
| 622 | PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) |
| 623 | PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) |
| 624 | PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) |
| 625 | PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) |
| 626 | PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) |
| 627 | PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) |
| 628 | PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 583 | 629 | |
| 630 | PORT_START("DSWA") |
| 631 | CPS1_COINAGE_1 |
| 632 | PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) |
| 633 | PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) // Overrides all other coinage settings |
| 634 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // according to manual |
| 635 | PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW ) // This switch is not documented |
| 636 | |
| 637 | PORT_START("DSWB") |
| 638 | PORT_DIPNAME( 0x07, 0x04, "Difficulty Level (Enemy's Strength)" ) PORT_DIPLOCATION("SW(B):1,2,3") |
| 639 | PORT_DIPSETTING( 0x07, "1 (Easiest)" ) |
| 640 | PORT_DIPSETTING( 0x06, "2" ) |
| 641 | PORT_DIPSETTING( 0x05, "3" ) |
| 642 | PORT_DIPSETTING( 0x04, "4 (Normal)" ) |
| 643 | PORT_DIPSETTING( 0x03, "5" ) |
| 644 | PORT_DIPSETTING( 0x02, "6" ) |
| 645 | PORT_DIPSETTING( 0x01, "7" ) |
| 646 | PORT_DIPSETTING( 0x00, "8 (Hardest)" ) |
| 647 | PORT_DIPNAME( 0x18, 0x18, "Difficulty Level (Player's Strength)" ) PORT_DIPLOCATION("SW(B):4,5") |
| 648 | PORT_DIPSETTING( 0x10, DEF_STR( Easy ) ) |
| 649 | PORT_DIPSETTING( 0x18, DEF_STR( Normal ) ) |
| 650 | PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) |
| 651 | PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) |
| 652 | PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" ) // This switch is not documented |
| 653 | PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" ) // This switch is not documented |
| 654 | PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" ) // This switch is not documented |
| 655 | |
| 656 | PORT_START("DSWC") |
| 657 | PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" ) // This switch is not documented |
| 658 | PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" ) // This switch is not documented |
| 659 | PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3") |
| 660 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 661 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 662 | PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4") |
| 663 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 664 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 665 | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5") |
| 666 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 667 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 668 | PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6") |
| 669 | PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) |
| 670 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 671 | PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7") |
| 672 | PORT_DIPSETTING( 0x40, DEF_STR( No ) ) |
| 673 | PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) |
| 674 | PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8") |
| 675 | PORT_DIPSETTING( 0x80, "Game" ) |
| 676 | PORT_DIPSETTING( 0x00, DEF_STR( Test ) ) |
| 677 | INPUT_PORTS_END |
| 678 | |
| 679 | |
| 584 | 680 | static INPUT_PORTS_START( kodb ) |
| 585 | 681 | PORT_START("IN0") |
| 586 | 682 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) |
| r19326 | r19327 | |
| 698 | 794 | m_audiocpu = machine().device<cpu_device>("soundcpu"); |
| 699 | 795 | m_msm_1 = machine().device<msm5205_device>("msm1"); |
| 700 | 796 | m_msm_2 = machine().device<msm5205_device>("msm2"); |
| 797 | |
| 798 | m_layer_enable_reg = 0x20; |
| 799 | m_layer_mask_reg[0] = 0x26; |
| 800 | m_layer_mask_reg[1] = 0x30; |
| 801 | m_layer_mask_reg[2] = 0x28; |
| 802 | m_layer_mask_reg[3] = 0x32; |
| 803 | m_layer_scroll1x_offset = 62; |
| 804 | m_layer_scroll2x_offset = 60; |
| 805 | m_layer_scroll3x_offset = 64; |
| 806 | m_sprite_base = 0x50c8; |
| 701 | 807 | |
| 702 | 808 | save_item(NAME(m_sample_buffer1)); |
| 703 | 809 | save_item(NAME(m_sample_buffer2)); |
| r19326 | r19327 | |
| 705 | 811 | save_item(NAME(m_sample_select2)); |
| 706 | 812 | } |
| 707 | 813 | |
| 814 | MACHINE_START_MEMBER(cps_state, cawingbl) |
| 815 | { |
| 816 | MACHINE_START_CALL_MEMBER(fcrash); |
| 817 | |
| 818 | m_layer_enable_reg = 0x0c; |
| 819 | m_layer_mask_reg[0] = 0x0a; |
| 820 | m_layer_mask_reg[1] = 0x08; |
| 821 | m_layer_mask_reg[2] = 0x06; |
| 822 | m_layer_mask_reg[3] = 0x04; |
| 823 | m_layer_scroll1x_offset = 63; |
| 824 | m_layer_scroll2x_offset = 62; |
| 825 | m_layer_scroll3x_offset = 65; |
| 826 | m_sprite_base = 0x1000; |
| 827 | } |
| 828 | |
| 708 | 829 | MACHINE_START_MEMBER(cps_state,kodb) |
| 709 | 830 | { |
| 710 | 831 | |
| r19326 | r19327 | |
| 772 | 893 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 773 | 894 | MACHINE_CONFIG_END |
| 774 | 895 | |
| 896 | static MACHINE_CONFIG_DERIVED( cawingbl, fcrash ) |
| 897 | /* basic machine hardware */ |
| 898 | MCFG_CPU_MODIFY("maincpu") |
| 899 | MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, irq6_line_hold) /* needed to write to scroll values */ |
| 900 | |
| 901 | MCFG_MACHINE_START_OVERRIDE(cps_state, cawingbl) |
| 902 | MACHINE_CONFIG_END |
| 903 | |
| 775 | 904 | static MACHINE_CONFIG_START( kodb, cps_state ) |
| 776 | 905 | |
| 777 | 906 | /* basic machine hardware */ |
| r19326 | r19327 | |
| 909 | 1038 | ROM_LOAD( "2.ic19", 0x00000, 0x40000, CRC(a2db1575) SHA1(1a4a29e4b045af50700adf1665697feab12cc234) ) |
| 910 | 1039 | ROM_END |
| 911 | 1040 | |
| 1041 | |
| 912 | 1042 | ROM_START( cawingbl ) |
| 913 | 1043 | ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */ |
| 914 | 1044 | ROM_LOAD16_BYTE( "caw2.bin", 0x00000, 0x80000, CRC(8125d3f0) SHA1(a0e48c326c6164ca189c9372f5c38a7c103772c1) ) |
| 915 | 1045 | ROM_LOAD16_BYTE( "caw1.bin", 0x00001, 0x80000, CRC(b19b10ce) SHA1(3c71f1dc830d1e8b8ba26d8a71e12f477659480c) ) |
| 916 | 1046 | |
| 917 | 1047 | ROM_REGION( 0x200000, "gfx", 0 ) |
| 918 | | ROMX_LOAD( "caw4.bin", 0x000000, 0x80000, CRC(4937fc41) SHA1(dac179715be483a521df8e515afc1fb7a2cd8f13) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 919 | | ROMX_LOAD( "caw5.bin", 0x000002, 0x80000, CRC(30dd78db) SHA1(e0295001d6f5fb4a9276c432f971e88f73c5e39a) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 920 | | ROMX_LOAD( "caw6.bin", 0x000004, 0x80000, CRC(61192f7c) SHA1(86643c62653a62a5c7541d50cfdecae9b607440d) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 921 | | ROMX_LOAD( "caw7.bin", 0x000006, 0x80000, CRC(a045c689) SHA1(8946c55635121282ea03586a278e50de20d92633) , ROM_GROUPWORD | ROM_SKIP(6) ) |
| 922 | | |
| 1048 | ROMX_LOAD( "caw7.bin", 0x000000, 0x80000, CRC(a045c689) SHA1(8946c55635121282ea03586a278e50de20d92633) , ROM_SKIP(3) ) |
| 1049 | ROMX_LOAD( "caw6.bin", 0x000001, 0x80000, CRC(61192f7c) SHA1(86643c62653a62a5c7541d50cfdecae9b607440d) , ROM_SKIP(3) ) |
| 1050 | ROMX_LOAD( "caw5.bin", 0x000002, 0x80000, CRC(30dd78db) SHA1(e0295001d6f5fb4a9276c432f971e88f73c5e39a) , ROM_SKIP(3) ) |
| 1051 | ROMX_LOAD( "caw4.bin", 0x000003, 0x80000, CRC(4937fc41) SHA1(dac179715be483a521df8e515afc1fb7a2cd8f13) , ROM_SKIP(3) ) |
| 1052 | |
| 923 | 1053 | ROM_REGION( 0x30000, "soundcpu", 0 ) /* 64k for the audio CPU (+banks) */ |
| 924 | 1054 | ROM_LOAD( "caw3.bin", 0x00000, 0x20000, CRC(ffe16cdc) SHA1(8069ea69f0b89d61c35995c8040a4989d7be9c1f) ) |
| 925 | | ROM_RELOAD( 0x10000, 0x20000 ) |
| 1055 | ROM_RELOAD( 0x10000, 0x20000 ) |
| 926 | 1056 | ROM_END |
| 927 | 1057 | |
| 1058 | ROM_START( cawingb2 ) |
| 1059 | ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */ |
| 1060 | ROM_LOAD16_BYTE( "8.8", 0x00000, 0x20000, CRC(f655708c) SHA1(9962a1c96ea08bc71b25d4f58e5d1fb1beebf0dc) ) |
| 1061 | ROM_LOAD16_BYTE( "4.4", 0x00001, 0x20000, CRC(a02fb5aa) SHA1(c9c064a83899c48f681ac803cfc5886503b9d992) ) |
| 1062 | ROM_LOAD16_BYTE( "7.7", 0x40000, 0x20000, CRC(8c6c7430) SHA1(3ed5713caf774b050b41a6adea026e1307b570df) ) |
| 1063 | ROM_LOAD16_BYTE( "3.3", 0x40001, 0x20000, CRC(f585bf2c) SHA1(3a3169791f8deace8d9bee1adb08f19fbcd309c6) ) |
| 1064 | ROM_LOAD16_BYTE( "6.6", 0x80000, 0x20000, CRC(5fda906e) SHA1(7b3ef17d494a2f92e58ab7e34a3beaad8c149fca) ) |
| 1065 | ROM_LOAD16_BYTE( "2.2", 0x80001, 0x20000, CRC(736c1835) SHA1(a91f479fab30603a111304adc0478d430faa80fc) ) |
| 1066 | ROM_LOAD16_BYTE( "5.5", 0xc0000, 0x20000, CRC(76458083) SHA1(cbb4ef5f7615c834b2ee1ad3c86e7262f2f62c01) ) |
| 1067 | ROM_LOAD16_BYTE( "1.1", 0xc0001, 0x20000, CRC(d3523f34) SHA1(005ea378c2b78782f85ecc591946c027ca2ca023) ) |
| 1068 | |
| 1069 | ROM_REGION( 0x200000, "gfx", 0 ) |
| 1070 | ROMX_LOAD( "17.17", 0x000000, 0x20000, CRC(0b538062) SHA1(ac6e5dc82efdca311adfe6e6cdda160ad4a0d04d) , ROM_SKIP(3) ) |
| 1071 | ROMX_LOAD( "19.19", 0x000001, 0x20000, CRC(3ad62311) SHA1(1c132696b55191d16af30ebd36d2320d979eab36) , ROM_SKIP(3) ) |
| 1072 | ROMX_LOAD( "21.21", 0x000002, 0x20000, CRC(1b872a98) SHA1(7a3f72c6d384dfa8e224f93604997a7b6e5c8926) , ROM_SKIP(3) ) |
| 1073 | ROMX_LOAD( "23.23", 0x000003, 0x20000, CRC(ad49eecd) SHA1(39909996765391ed734a02c74f683e1bd9ce1561) , ROM_SKIP(3) ) |
| 1074 | ROMX_LOAD( "9.9", 0x080000, 0x20000, CRC(8cd4df5b) SHA1(771b6d6a6baa95a669335fe64e2219fe7226e140) , ROM_SKIP(3) ) |
| 1075 | ROMX_LOAD( "11.11", 0x080001, 0x20000, CRC(bf14418a) SHA1(7a0e1c65b8825a252338d6c1db59a88966ec6cfb) , ROM_SKIP(3) ) |
| 1076 | ROMX_LOAD( "13.13", 0x080002, 0x20000, CRC(cef1aab8) SHA1(677a889b939ff00e95737a4a53053744bb6744c0) , ROM_SKIP(3) ) |
| 1077 | ROMX_LOAD( "15.15", 0x080003, 0x20000, CRC(397725dc) SHA1(9450362bbf2f91b4225a088d6e283d7b16407b74) , ROM_SKIP(3) ) |
| 1078 | ROMX_LOAD( "18.18", 0x100000, 0x20000, CRC(9b14f7ed) SHA1(72b6e1174d4faab487261aa6739de842d2423e1a) , ROM_SKIP(3) ) |
| 1079 | ROMX_LOAD( "20.20", 0x100001, 0x20000, CRC(59bcc1bb) SHA1(c725060e068294dea1d962c54a9018050fa70297) , ROM_SKIP(3) ) |
| 1080 | ROMX_LOAD( "22.22", 0x100002, 0x20000, CRC(23dc647a) SHA1(2d8d4c4c7b2d0616430360d1639b07216dd731d6) , ROM_SKIP(3) ) |
| 1081 | ROMX_LOAD( "24.24", 0x100003, 0x20000, CRC(eda9fa6b) SHA1(4a3510ce71b015a1ea568fd0bbe61c5c093a2fbf) , ROM_SKIP(3) ) |
| 1082 | ROMX_LOAD( "10.10", 0x180000, 0x20000, CRC(17174249) SHA1(71c6424ab4629065dd6af8bb47b18f5b5d0fbe49) , ROM_SKIP(3) ) |
| 1083 | ROMX_LOAD( "12.12", 0x180001, 0x20000, CRC(490440b2) SHA1(2597bf16340308f84b32cfa048c426db571b4a35) , ROM_SKIP(3) ) |
| 1084 | ROMX_LOAD( "14.14", 0x180002, 0x20000, CRC(344a8270) SHA1(fdb588a7ba60783225e3b5c72446f79625de4f9c) , ROM_SKIP(3) ) |
| 1085 | ROMX_LOAD( "16.16", 0x180003, 0x20000, CRC(b991ad91) SHA1(5c59131ddf068cb54d23f8836293360fbc967d58) , ROM_SKIP(3) ) |
| 1086 | |
| 1087 | ROM_REGION( 0x30000, "soundcpu", 0 ) /* 64k for the audio CPU (+banks) */ |
| 1088 | ROM_LOAD( "5.a", 0x00000, 0x20000, CRC(ffe16cdc) SHA1(8069ea69f0b89d61c35995c8040a4989d7be9c1f) ) |
| 1089 | ROM_RELOAD( 0x10000, 0x20000 ) |
| 1090 | ROM_END |
| 1091 | |
| 928 | 1092 | // 24mhz crystal (maincpu), 28.322 crystal (video), 3.579545 crystal (sound) |
| 929 | 1093 | // sound cpu is (239 V 249521 VC5006 KABUKI DL-030P-110V) - recycled Kabuki Z80 from genuine Capcom HW? |
| 930 | 1094 | // 3x8 dsws |
| r19326 | r19327 | |
| 974 | 1138 | ROM_END |
| 975 | 1139 | |
| 976 | 1140 | |
| 1141 | DRIVER_INIT_MEMBER(cps_state, cawingbl) |
| 1142 | { |
| 1143 | machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_port(0x882000, 0x882001, "IN1"); |
| 1144 | machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x882006, 0x882007, write16_delegate(FUNC(cps_state::cawingbl_soundlatch_w),this)); |
| 1145 | machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x882008, 0x88200f, read16_delegate(FUNC(cps_state::cps1_dsw_r),this)); |
| 977 | 1146 | |
| 1147 | DRIVER_INIT_CALL(cps1); |
| 1148 | } |
| 978 | 1149 | |
| 979 | 1150 | |
| 980 | | |
| 981 | | GAME( 1990, fcrash, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg (Playmark)", "Final Crash (bootleg of Final Fight)", GAME_SUPPORTS_SAVE ) |
| 982 | | GAME( 1991, kodb, kod, kodb, kodb, cps_state, cps1, ROT0, "bootleg (Playmark)", "The King of Dragons (bootleg)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) // 910731 "ETC" |
| 983 | | GAME( 1990, cawingbl, cawing, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203)", GAME_NOT_WORKING ) |
| 984 | | GAME( 199?, sgyxz, wof, sgyxz, fcrash, cps_state, cps1, ROT0, "bootleg (All-In Electronic)", "Warriors of Fate ('sgyxz' bootleg)", GAME_NOT_WORKING | GAME_NO_SOUND ) |
| 1151 | GAME( 1990, fcrash, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg (Playmark)", "Final Crash (bootleg of Final Fight)", GAME_SUPPORTS_SAVE ) |
| 1152 | GAME( 1991, kodb, kod, kodb, kodb, cps_state, cps1, ROT0, "bootleg (Playmark)", "The King of Dragons (bootleg)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) // 910731 "ETC" |
| 1153 | GAME( 1990, cawingbl, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 1)", GAME_SUPPORTS_SAVE ) |
| 1154 | GAME( 1990, cawingb2, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 2)", GAME_SUPPORTS_SAVE ) |
| 1155 | GAME( 199?, sgyxz, wof, sgyxz, fcrash, cps_state, cps1, ROT0, "bootleg (All-In Electronic)", "Warriors of Fate ('sgyxz' bootleg)", GAME_NOT_WORKING | GAME_NO_SOUND ) |