Previous 199869 Revisions Next

r19327 Wednesday 5th December, 2012 at 09:13:36 UTC by Robbbert
Fixed cawingbl [Barry Harris]

(Clean build needed)
[src/mame]mame.lst
[src/mame/drivers]fcrash.c
[src/mame/includes]cps1.h

trunk/src/mame/drivers/fcrash.c
r19326r19327
5151   }
5252}
5353
54WRITE16_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
5465static WRITE8_HANDLER( fcrash_snd_bankswitch_w )
5566{
5667   cps_state *state = space.machine().driver_data<cps_state>();
r19326r19327
103114{
104115   cps_state *state = machine.driver_data<cps_state>();
105116   int i;
106   int priority[4];
107117
108   priority[0] = 0x26;
109   priority[1] = 0x30;
110   priority[2] = 0x28;
111   priority[3] = 0x32;
112
113118   for (i = 0; i < 4; i++)
114119   {
115120      int mask;
116121
117122      /* 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;
120125      else
121126         mask = 0xffff;   /* completely transparent if priority masks not defined (mercs, qad) */
122127
r19326r19327
130135{
131136   cps_state *state = machine.driver_data<cps_state>();
132137   int pos;
133   int base = 0x50c8 / 2;
138   int base = state->m_sprite_base / 2;
139   int num_sprites = machine.gfx[2]->elements();
134140
135141   // sprite base registers need hooking up properly.. on fcrash it is NOT cps1_cps_a_regs[0]
136142   //  on kodb, it might still be, unless that's just a leftover and it writes somewhere else too
137143//  if (state->m_cps_a_regs[0] & 0x00ff) base = 0x10c8/2;
138144//  printf("cps1_cps_a_regs %04x\n", state->m_cps_a_regs[0]);
139145
146   /* get end of sprite list marker */
147   int last_sprite_offset = 0x1ffc;
148   
140149   for (pos = 0x1ffc; pos >= 0x0000; pos -= 4)
141150   {
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   {
142156      int tileno;
143157      int xpos;
144158      int ypos;
145159      int flipx, flipy;
146160      int colour;
147161
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     
156171      pdrawgfx_transpen(bitmap, cliprect, machine.gfx[2], tileno, colour, flipx, flipy, xpos + 49, ypos - 16, machine.priority_bitmap, 0x02, 15);
157172
158173   }
r19326r19327
198213{
199214   cps_state *state = machine.driver_data<cps_state>();
200215   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   
202220   for (offset = 0; offset < 32 * 6 * 16; offset++)
203221   {
204      int palette = state->m_gfxram[0x14000 / 2 + offset];
222      int palette = state->m_gfxram[palettebase / 2 + offset];
205223      int r, g, b, bright;
206224
207225      // from my understanding of the schematics, when the 'brightness'
r19326r19327
225243
226244   flip_screen_set(videocontrol & 0x8000);
227245
228   layercontrol = m_cps_b_regs[0x20 / 2];
246   layercontrol = m_cps_b_regs[m_layer_enable_reg / 2];
229247
230248   /* Get video memory base registers */
231249   cps1_get_video_base(machine());
r19326r19327
235253
236254   fcrash_update_transmasks(machine());
237255
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);
239257   m_bg_tilemap[0]->set_scrolly(0, m_scroll1y);
240258
241259   if (videocontrol & 0x01)   /* linescroll enable */
r19326r19327
254272   else
255273   {
256274      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);
258276   }
259277   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);
261279   m_bg_tilemap[2]->set_scrolly(0, m_scroll3y);
262280
263281
r19326r19327
580598   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
581599INPUT_PORTS_END
582600
601static 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 )
583629
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 ) )
677INPUT_PORTS_END
678
679
584680static INPUT_PORTS_START( kodb )
585681   PORT_START("IN0")
586682   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
r19326r19327
698794   m_audiocpu = machine().device<cpu_device>("soundcpu");
699795   m_msm_1 = machine().device<msm5205_device>("msm1");
700796   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;
701807
702808   save_item(NAME(m_sample_buffer1));
703809   save_item(NAME(m_sample_buffer2));
r19326r19327
705811   save_item(NAME(m_sample_select2));
706812}
707813
814MACHINE_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
708829MACHINE_START_MEMBER(cps_state,kodb)
709830{
710831
r19326r19327
772893   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
773894MACHINE_CONFIG_END
774895
896static 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)
902MACHINE_CONFIG_END
903
775904static MACHINE_CONFIG_START( kodb, cps_state )
776905
777906   /* basic machine hardware */
r19326r19327
9091038   ROM_LOAD( "2.ic19",      0x00000, 0x40000, CRC(a2db1575) SHA1(1a4a29e4b045af50700adf1665697feab12cc234) )
9101039ROM_END
9111040
1041
9121042ROM_START( cawingbl )
9131043   ROM_REGION( 0x400000, "maincpu", 0 )      /* 68000 code */
9141044   ROM_LOAD16_BYTE( "caw2.bin",    0x00000, 0x80000, CRC(8125d3f0) SHA1(a0e48c326c6164ca189c9372f5c38a7c103772c1) )
9151045   ROM_LOAD16_BYTE( "caw1.bin",    0x00001, 0x80000, CRC(b19b10ce) SHA1(3c71f1dc830d1e8b8ba26d8a71e12f477659480c) )
9161046
9171047   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   
9231053   ROM_REGION( 0x30000, "soundcpu", 0 ) /* 64k for the audio CPU (+banks) */
9241054   ROM_LOAD( "caw3.bin",  0x00000, 0x20000, CRC(ffe16cdc) SHA1(8069ea69f0b89d61c35995c8040a4989d7be9c1f) )
925   ROM_RELOAD(          0x10000, 0x20000 )
1055   ROM_RELOAD(            0x10000, 0x20000 )
9261056ROM_END
9271057
1058ROM_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 )
1090ROM_END
1091
9281092// 24mhz crystal (maincpu), 28.322 crystal (video), 3.579545 crystal (sound)
9291093// sound cpu is (239 V 249521 VC5006 KABUKI DL-030P-110V) - recycled Kabuki Z80 from genuine Capcom HW?
9301094// 3x8 dsws
r19326r19327
9741138ROM_END
9751139
9761140
1141DRIVER_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));
9771146
1147   DRIVER_INIT_CALL(cps1);
1148}
9781149
9791150
980
981GAME( 1990, fcrash,   ffight,  fcrash,     fcrash, cps_state,   cps1,     ROT0,   "bootleg (Playmark)", "Final Crash (bootleg of Final Fight)", GAME_SUPPORTS_SAVE )
982GAME( 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"
983GAME( 1990, cawingbl, cawing,  fcrash,     fcrash, cps_state,   cps1,     ROT0,   "bootleg", "Carrier Air Wing (bootleg with 2xYM2203)", GAME_NOT_WORKING )
984GAME( 199?, sgyxz,    wof,     sgyxz,     fcrash, cps_state,    cps1,     ROT0,   "bootleg (All-In Electronic)", "Warriors of Fate ('sgyxz' bootleg)", GAME_NOT_WORKING | GAME_NO_SOUND )
1151GAME( 1990, fcrash,    ffight,  fcrash,    fcrash,   cps_state, cps1,     ROT0,   "bootleg (Playmark)", "Final Crash (bootleg of Final Fight)", GAME_SUPPORTS_SAVE )
1152GAME( 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"
1153GAME( 1990, cawingbl,  cawing,  cawingbl,  cawingbl, cps_state, cawingbl, ROT0,   "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 1)", GAME_SUPPORTS_SAVE )
1154GAME( 1990, cawingb2,  cawing,  cawingbl,  cawingbl, cps_state, cawingbl, ROT0,   "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 2)", GAME_SUPPORTS_SAVE )
1155GAME( 199?, sgyxz,     wof,     sgyxz,     fcrash,   cps_state, cps1,     ROT0,   "bootleg (All-In Electronic)", "Warriors of Fate ('sgyxz' bootleg)", GAME_NOT_WORKING | GAME_NO_SOUND )
trunk/src/mame/mame.lst
r19326r19327
28882888cawingu         // 12/10/1990 (c) 1990 (USA)
28892889cawingj         // 12/10/1990 (c) 1990 (Japan)
28902890cawingbl      // bootleg
2891//cawingb2      // bootleg
28912892nemo         // 30/11/1990 (c) 1990 (World)
28922893nemoj         // 20/11/1990 (c) 1990 (Japan)
28932894sf2            // 22/05/1991 (c) 1991 (World)
trunk/src/mame/includes/cps1.h
r19326r19327
139139   int          m_stars_rom_size;
140140   UINT8        m_empty_tile[32*32];
141141   int          m_cps_version;
142   
143   /* fcrash video config */
144   UINT8        m_layer_enable_reg;
145   UINT8        m_layer_mask_reg[4];
146   int          m_layer_scroll1x_offset;
147   int          m_layer_scroll2x_offset;
148   int          m_layer_scroll3x_offset;
149   int          m_sprite_base;
142150
143151   /* devices */
144152   cpu_device *m_maincpu;
r19326r19327
207215   DECLARE_MACHINE_START(common);
208216   DECLARE_MACHINE_START(cps2);
209217   DECLARE_VIDEO_START(cps2);
210   DECLARE_MACHINE_START(fcrash);
211   DECLARE_MACHINE_RESET(fcrash);
212   DECLARE_MACHINE_START(kodb);
213218   DECLARE_MACHINE_START(qsound);
214219   DECLARE_MACHINE_RESET(cps);
215220   DECLARE_VIDEO_START(cps);
216221   UINT32 screen_update_cps1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
217   UINT32 screen_update_fcrash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
218   UINT32 screen_update_kodb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
219222   void screen_eof_cps1(screen_device &screen, bool state);
220223   INTERRUPT_GEN_MEMBER(cps1_interrupt);
221224   INTERRUPT_GEN_MEMBER(cps1_qsound_interrupt);
222225   TIMER_DEVICE_CALLBACK_MEMBER(cps2_interrupt);
226   
227   /* fcrash handlers */
228   DECLARE_DRIVER_INIT(cawingbl);
229   DECLARE_MACHINE_START(fcrash);
230   DECLARE_MACHINE_RESET(fcrash);
231   DECLARE_MACHINE_START(kodb);
232   DECLARE_MACHINE_START(cawingbl);
233   DECLARE_WRITE16_MEMBER(cawingbl_soundlatch_w);
234   UINT32 screen_update_fcrash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
235   UINT32 screen_update_kodb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
223236};
224237
225238/*----------- defined in drivers/cps1.c -----------*/

Previous 199869 Revisions Next


© 1997-2024 The MAME Team