1 #include "../vidhrdw/phoenix.c" 2 #include "../sndhrdw/phoenix.c" 3 4 /*************************************************************************** 5 6 Phoenix memory map 7 8 driver by Richard Davies 9 10 Note: 11 pleiads is using another sound driver, sndhrdw\pleiads.c 12 Andrew Scott (ascott@utkux.utcc.utk.edu) 13 14 0000-3fff 16Kb Program ROM 15 4000-43ff 1Kb Video RAM Charset A (4340-43ff variables) 16 4800-4bff 1Kb Video RAM Charset B (4b40-4bff variables) 17 5000-53ff 1Kb Video Control write-only (mirrored) 18 5800-5bff 1Kb Video Scroll Register (mirrored) 19 6000-63ff 1Kb Sound Control A (mirrored) 20 6800-6bff 1Kb Sound Control B (mirrored) 21 7000-73ff 1Kb 8bit Game Control read-only (mirrored) 22 7800-7bff 1Kb 8bit Dip Switch read-only (mirrored) 23 24 memory mapped ports: 25 26 read-only: 27 7000-73ff IN 28 7800-7bff DSW 29 30 * IN (all bits are inverted) 31 * bit 7 : Shield 32 * bit 6 : Left 33 * bit 5 : Right 34 * bit 4 : Fire 35 * bit 3 : - 36 * bit 2 : Start 2 37 * bit 1 : Start 1 38 * bit 0 : Coin 39 40 * DSW 41 * bit 7 : VBlank 42 * bit 6 : free play (pleiads only) 43 * bit 5 : attract sound 0 = off 1 = on (pleiads only?) 44 * bit 4 : coins per play 0 = 1 coin 1 = 2 coins 45 * bit 3 :\ bonus 46 * bit 2 :/ 00 = 3000 01 = 4000 10 = 5000 11 = 6000 47 * bit 1 :\ number of lives 48 * bit 0 :/ 00 = 3 01 = 4 10 = 5 11 = 6 49 50 ***************************************************************************/ 51 52 #include "driver.h" 53 54 55 READ_HANDLER( phoenix_paged_ram_r ); 56 WRITE_HANDLER( phoenix_paged_ram_w ); 57 WRITE_HANDLER( phoenix_videoreg_w ); 58 WRITE_HANDLER( phoenix_scroll_w ); 59 READ_HANDLER( phoenix_input_port_0_r ); 60 void phoenix_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom); 61 int phoenix_vh_start(void); 62 void phoenix_vh_stop(void); 63 void phoenix_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh); 64 65 WRITE_HANDLER( phoenix_sound_control_a_w ); 66 WRITE_HANDLER( phoenix_sound_control_b_w ); 67 int phoenix_sh_start(const struct MachineSound *msound); 68 void phoenix_sh_stop(void); 69 void phoenix_sh_update(void); 70 71 WRITE_HANDLER( pleiads_sound_control_a_w ); 72 WRITE_HANDLER( pleiads_sound_control_b_w ); 73 int pleiads_sh_start(const struct MachineSound *msound); 74 void pleiads_sh_stop(void); 75 void pleiads_sh_update(void); 76 77 78 static struct MemoryReadAddress readmem[] = 79 { 80 { 0x0000, 0x3fff, MRA_ROM }, 81 { 0x4000, 0x4fff, phoenix_paged_ram_r }, /* 2 pages selected by Bit 0 of videoregister */ 82 { 0x7000, 0x73ff, phoenix_input_port_0_r }, /* IN0 */ 83 { 0x7800, 0x7bff, input_port_1_r }, /* DSW */ 84 { -1 } /* end of table */ 85 }; 86 87 88 #define WRITEMEM(GAMENAME) \ 89 \ 90 static struct MemoryWriteAddress GAMENAME##_writemem[] = \ 91 { \ 92 { 0x0000, 0x3fff, MWA_ROM }, \ 93 { 0x4000, 0x4fff, phoenix_paged_ram_w }, /* 2 pages selected by Bit 0 of the video register */ \ 94 { 0x5000, 0x53ff, phoenix_videoreg_w }, \ 95 { 0x5800, 0x5bff, phoenix_scroll_w }, /* the game sometimes writes at mirror addresses */ \ 96 { 0x6000, 0x63ff, GAMENAME##_sound_control_a_w }, \ 97 { 0x6800, 0x6bff, GAMENAME##_sound_control_b_w }, \ 98 { -1 } /* end of table */ \ 99 }; 100 101 WRITEMEM(phoenix) 102 WRITEMEM(pleiads) 103 104 105 106 INPUT_PORTS_START( phoenix ) 107 PORT_START /* IN0 */ 108 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) 109 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) 110 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) 111 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) 112 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) 113 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY ) 114 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY ) 115 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) 116 117 PORT_START /* DSW0 */ 118 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) 119 PORT_DIPSETTING( 0x00, "3" ) 120 PORT_DIPSETTING( 0x01, "4" ) 121 PORT_DIPSETTING( 0x02, "5" ) 122 PORT_DIPSETTING( 0x03, "6" ) 123 PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) 124 PORT_DIPSETTING( 0x00, "3000" ) 125 PORT_DIPSETTING( 0x04, "4000" ) 126 PORT_DIPSETTING( 0x08, "5000" ) 127 PORT_DIPSETTING( 0x0c, "6000" ) 128 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Coinage ) ) 129 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) 130 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) 131 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) 132 PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) 133 PORT_DIPSETTING( 0x00, DEF_STR( On ) ) 134 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) 135 PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) 136 PORT_DIPSETTING( 0x00, DEF_STR( On ) ) 137 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK ) 138 INPUT_PORTS_END 139 140 INPUT_PORTS_START( phoenixa ) 141 PORT_START /* IN0 */ 142 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) 143 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) 144 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) 145 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) 146 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) 147 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY ) 148 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY ) 149 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) 150 151 PORT_START /* DSW0 */ 152 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) 153 PORT_DIPSETTING( 0x00, "3" ) 154 PORT_DIPSETTING( 0x01, "4" ) 155 PORT_DIPSETTING( 0x02, "5" ) 156 PORT_DIPSETTING( 0x03, "6" ) 157 PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) 158 PORT_DIPSETTING( 0x00, "3000" ) 159 PORT_DIPSETTING( 0x04, "4000" ) 160 PORT_DIPSETTING( 0x08, "5000" ) 161 PORT_DIPSETTING( 0x0c, "6000" ) 162 /* Coinage is backwards from phoenix (Amstar) */ 163 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Coinage ) ) 164 PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) 165 PORT_DIPSETTING( 0x10, DEF_STR( 1C_1C ) ) 166 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) 167 PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) 168 PORT_DIPSETTING( 0x00, DEF_STR( On ) ) 169 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) 170 PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) 171 PORT_DIPSETTING( 0x00, DEF_STR( On ) ) 172 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK ) 173 INPUT_PORTS_END 174 175 176 INPUT_PORTS_START( phoenixt ) 177 PORT_START /* IN0 */ 178 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) 179 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) 180 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) 181 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) 182 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) 183 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY ) 184 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY ) 185 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) 186 187 PORT_START /* DSW0 */ 188 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) 189 PORT_DIPSETTING( 0x00, "3" ) 190 PORT_DIPSETTING( 0x01, "4" ) 191 PORT_DIPSETTING( 0x02, "5" ) 192 PORT_DIPSETTING( 0x03, "6" ) 193 PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) 194 PORT_DIPSETTING( 0x00, "3000" ) 195 PORT_DIPSETTING( 0x04, "4000" ) 196 PORT_DIPSETTING( 0x08, "5000" ) 197 PORT_DIPSETTING( 0x0c, "6000" ) 198 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) 199 PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) 200 PORT_DIPSETTING( 0x00, DEF_STR( On ) ) 201 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) 202 PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) 203 PORT_DIPSETTING( 0x00, DEF_STR( On ) ) 204 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) 205 PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) 206 PORT_DIPSETTING( 0x00, DEF_STR( On ) ) 207 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK ) 208 INPUT_PORTS_END 209 210 INPUT_PORTS_START( phoenix3 ) 211 PORT_START /* IN0 */ 212 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) 213 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) 214 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) 215 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) 216 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) 217 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY ) 218 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY ) 219 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) 220 PORT_START /* DSW0 */ 221 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) 222 PORT_DIPSETTING( 0x00, "3" ) 223 PORT_DIPSETTING( 0x01, "4" ) 224 PORT_DIPSETTING( 0x02, "5" ) 225 PORT_DIPSETTING( 0x03, "6" ) 226 PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) 227 PORT_DIPSETTING( 0x00, "3000" ) 228 PORT_DIPSETTING( 0x04, "4000" ) 229 PORT_DIPSETTING( 0x08, "5000" ) 230 PORT_DIPSETTING( 0x0c, "6000" ) 231 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) 232 PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) 233 PORT_DIPSETTING( 0x00, DEF_STR( On ) ) 234 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) 235 PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) 236 PORT_DIPSETTING( 0x00, DEF_STR( On ) ) 237 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Coinage ) ) 238 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) 239 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) 240 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK ) 241 INPUT_PORTS_END 242 243 244 INPUT_PORTS_START( pleiads ) 245 PORT_START /* IN0 */ 246 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) 247 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) 248 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) 249 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Protection. See 0x0552 */ 250 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) 251 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY ) 252 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY ) 253 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) 254 PORT_START /* DSW0 */ 255 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) 256 PORT_DIPSETTING( 0x00, "3" ) 257 PORT_DIPSETTING( 0x01, "4" ) 258 PORT_DIPSETTING( 0x02, "5" ) 259 PORT_DIPSETTING( 0x03, "6" ) 260 PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) 261 PORT_DIPSETTING( 0x00, "3000" ) 262 PORT_DIPSETTING( 0x04, "4000" ) 263 PORT_DIPSETTING( 0x08, "5000" ) 264 PORT_DIPSETTING( 0x0c, "6000" ) 265 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Coinage ) ) 266 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) 267 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) 268 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) 269 PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) 270 PORT_DIPSETTING( 0x00, DEF_STR( On ) ) 271 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) 272 PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) 273 PORT_DIPSETTING( 0x00, DEF_STR( On ) ) 274 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK ) 275 INPUT_PORTS_END 276 277 278 static struct GfxLayout charlayout = 279 { 280 8,8, /* 8*8 characters */ 281 256, /* 256 characters */ 282 2, /* 2 bits per pixel */ 283 { 256*8*8, 0 }, /* the two bitplanes are separated */ 284 { 7, 6, 5, 4, 3, 2, 1, 0 }, /* pretty straightforward layout */ 285 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, 286 8*8 /* every char takes 8 consecutive bytes */ 287 }; 288 289 static struct GfxDecodeInfo gfxdecodeinfo[] = 290 { 291 { REGION_GFX1, 0, &charlayout, 0, 16 }, 292 { REGION_GFX2, 0, &charlayout, 16*4, 16 }, 293 { -1 } /* end of array */ 294 }; 295 296 297 298 static struct TMS36XXinterface phoenix_tms36xx_interface = 299 { 300 1, 301 { 50 }, /* mixing levels */ 302 { MM6221AA }, /* TMS36xx subtype(s) */ 303 { 372 }, /* base frequency */ 304 { {0.50,0,0,1.05,0,0} }, /* decay times of voices */ 305 { 0.21 }, /* tune speed (time between beats) */ 306 }; 307 308 static struct CustomSound_interface phoenix_custom_interface = 309 { 310 phoenix_sh_start, 311 phoenix_sh_stop, 312 phoenix_sh_update 313 }; 314 315 static struct TMS36XXinterface pleiads_tms36xx_interface = 316 { 317 1, 318 { 75 }, /* mixing levels */ 319 { TMS3615 }, /* TMS36xx subtype(s) */ 320 { 247 }, /* base frequencies (one octave below A) */ 321 /* 322 * Decay times of the voices; NOTE: it's unknown if 323 * the the TMS3615 mixes more than one voice internally. 324 * A wav taken from Pop Flamer sounds like there 325 * are at least no 'odd' harmonics (5 1/3' and 2 2/3') 326 */ 327 { {0.33,0.33,0,0.33,0,0.33} } 328 }; 329 330 static struct CustomSound_interface pleiads_custom_interface = 331 { 332 pleiads_sh_start, 333 pleiads_sh_stop, 334 pleiads_sh_update 335 }; 336 337 #define MACHINE_DRIVER(GAMENAME) \ 338 \ 339 static struct MachineDriver machine_driver_##GAMENAME = \ 340 { \ 341 /* basic machine hardware */ \ 342 { \ 343 { \ 344 CPU_8080, \ 345 3072000, /* 3 Mhz ? */ \ 346 readmem,GAMENAME##_writemem,0,0, \ 347 ignore_interrupt,1 \ 348 } \ 349 }, \ 350 60, DEFAULT_REAL_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */ \ 351 1, /* single CPU, no need for interleaving */ \ 352 0, \ 353 \ 354 /* video hardware */ \ 355 32*8, 32*8, { 0*8, 31*8-1, 0*8, 26*8-1 }, \ 356 gfxdecodeinfo, \ 357 256,16*4+16*4, \ 358 phoenix_vh_convert_color_prom, \ 359 \ 360 VIDEO_TYPE_RASTER, \ 361 0, \ 362 phoenix_vh_start, \ 363 phoenix_vh_stop, \ 364 phoenix_vh_screenrefresh, \ 365 \ 366 /* sound hardware */ \ 367 0,0,0,0, \ 368 { \ 369 { \ 370 SOUND_TMS36XX, \ 371 &GAMENAME##_tms36xx_interface \ 372 }, \ 373 { \ 374 SOUND_CUSTOM, \ 375 &GAMENAME##_custom_interface \ 376 } \ 377 } \ 378 }; 379 380 381 MACHINE_DRIVER(phoenix) 382 MACHINE_DRIVER(pleiads) 383 384 385 386 /*************************************************************************** 387 388 Game driver(s) 389 390 ***************************************************************************/ 391 392 ROM_START( phoenix ) 393 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */ 394 ROM_LOAD( "ic45", 0x0000, 0x0800, 0x9f68086b ) 395 ROM_LOAD( "ic46", 0x0800, 0x0800, 0x273a4a82 ) 396 ROM_LOAD( "ic47", 0x1000, 0x0800, 0x3d4284b9 ) 397 ROM_LOAD( "ic48", 0x1800, 0x0800, 0xcb5d9915 ) 398 ROM_LOAD( "ic49", 0x2000, 0x0800, 0xa105e4e7 ) 399 ROM_LOAD( "ic50", 0x2800, 0x0800, 0xac5e9ec1 ) 400 ROM_LOAD( "ic51", 0x3000, 0x0800, 0x2eab35b4 ) 401 ROM_LOAD( "ic52", 0x3800, 0x0800, 0xaff8e9c5 ) 402 403 ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE ) 404 ROM_LOAD( "ic23", 0x0000, 0x0800, 0x3c7e623f ) 405 ROM_LOAD( "ic24", 0x0800, 0x0800, 0x59916d3b ) 406 407 ROM_REGION( 0x1000, REGION_GFX2 | REGIONFLAG_DISPOSE ) 408 ROM_LOAD( "ic39", 0x0000, 0x0800, 0x53413e8f ) 409 ROM_LOAD( "ic40", 0x0800, 0x0800, 0x0be2ba91 ) 410 411 ROM_REGION( 0x0200, REGION_PROMS ) 412 ROM_LOAD( "ic40_b.bin", 0x0000, 0x0100, 0x79350b25 ) /* palette low bits */ 413 ROM_LOAD( "ic41_a.bin", 0x0100, 0x0100, 0xe176b768 ) /* palette high bits */ 414 ROM_END 415 416 ROM_START( phoenixa ) 417 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */ 418 ROM_LOAD( "ic45.k1", 0x0000, 0x0800, 0xc7a9b499 ) 419 ROM_LOAD( "ic46.k2", 0x0800, 0x0800, 0xd0e6ae1b ) 420 ROM_LOAD( "ic47.k3", 0x1000, 0x0800, 0x64bf463a ) 421 ROM_LOAD( "ic48.k4", 0x1800, 0x0800, 0x1b20fe62 ) 422 ROM_LOAD( "phoenixc.49", 0x2000, 0x0800, 0x1a1ce0d0 ) 423 ROM_LOAD( "ic50", 0x2800, 0x0800, 0xac5e9ec1 ) 424 ROM_LOAD( "ic51", 0x3000, 0x0800, 0x2eab35b4 ) 425 ROM_LOAD( "ic52", 0x3800, 0x0800, 0xaff8e9c5 ) 426 427 ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE ) 428 ROM_LOAD( "ic23", 0x0000, 0x0800, 0x3c7e623f ) 429 ROM_LOAD( "ic24", 0x0800, 0x0800, 0x59916d3b ) 430 431 ROM_REGION( 0x1000, REGION_GFX2 | REGIONFLAG_DISPOSE ) 432 ROM_LOAD( "phoenixc.39", 0x0000, 0x0800, 0xbb0525ed ) 433 ROM_LOAD( "phoenixc.40", 0x0800, 0x0800, 0x4178aa4f ) 434 435 ROM_REGION( 0x0200, REGION_PROMS ) 436 ROM_LOAD( "ic40_b.bin", 0x0000, 0x0100, 0x79350b25 ) /* palette low bits */ 437 ROM_LOAD( "ic41_a.bin", 0x0100, 0x0100, 0xe176b768 ) /* palette high bits */ 438 ROM_END 439 440 ROM_START( phoenixt ) 441 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */ 442 ROM_LOAD( "phoenix.45", 0x0000, 0x0800, 0x5b8c55a8 ) 443 ROM_LOAD( "phoenix.46", 0x0800, 0x0800, 0xdbc942fa ) 444 ROM_LOAD( "phoenix.47", 0x1000, 0x0800, 0xcbbb8839 ) 445 ROM_LOAD( "phoenix.48", 0x1800, 0x0800, 0xcb65eff8 ) 446 ROM_LOAD( "phoenix.49", 0x2000, 0x0800, 0xc8a5d6d6 ) 447 ROM_LOAD( "ic50", 0x2800, 0x0800, 0xac5e9ec1 ) 448 ROM_LOAD( "ic51", 0x3000, 0x0800, 0x2eab35b4 ) 449 ROM_LOAD( "phoenix.52", 0x3800, 0x0800, 0xb9915263 ) 450 451 ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE ) 452 ROM_LOAD( "ic23", 0x0000, 0x0800, 0x3c7e623f ) 453 ROM_LOAD( "ic24", 0x0800, 0x0800, 0x59916d3b ) 454 455 ROM_REGION( 0x1000, REGION_GFX2 | REGIONFLAG_DISPOSE ) 456 ROM_LOAD( "ic39", 0x0000, 0x0800, 0x53413e8f ) 457 ROM_LOAD( "ic40", 0x0800, 0x0800, 0x0be2ba91 ) 458 459 ROM_REGION( 0x0200, REGION_PROMS ) 460 ROM_LOAD( "ic40_b.bin", 0x0000, 0x0100, 0x79350b25 ) /* palette low bits */ 461 ROM_LOAD( "ic41_a.bin", 0x0100, 0x0100, 0xe176b768 ) /* palette high bits */ 462 ROM_END 463 464 ROM_START( phoenix3 ) 465 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */ 466 ROM_LOAD( "phoenix3.45", 0x0000, 0x0800, 0xa362cda0 ) 467 ROM_LOAD( "phoenix3.46", 0x0800, 0x0800, 0x5748f486 ) 468 ROM_LOAD( "phoenix.47", 0x1000, 0x0800, 0xcbbb8839 ) 469 ROM_LOAD( "phoenix3.48", 0x1800, 0x0800, 0xb5d97a4d ) 470 ROM_LOAD( "ic49", 0x2000, 0x0800, 0xa105e4e7 ) 471 ROM_LOAD( "ic50", 0x2800, 0x0800, 0xac5e9ec1 ) 472 ROM_LOAD( "ic51", 0x3000, 0x0800, 0x2eab35b4 ) 473 ROM_LOAD( "phoenix3.52", 0x3800, 0x0800, 0xd2c5c984 ) 474 475 ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE ) 476 ROM_LOAD( "ic23", 0x0000, 0x0800, 0x3c7e623f ) 477 ROM_LOAD( "ic24", 0x0800, 0x0800, 0x59916d3b ) 478 479 ROM_REGION( 0x1000, REGION_GFX2 | REGIONFLAG_DISPOSE ) 480 ROM_LOAD( "ic39", 0x0000, 0x0800, 0x53413e8f ) 481 ROM_LOAD( "ic40", 0x0800, 0x0800, 0x0be2ba91 ) 482 483 ROM_REGION( 0x0200, REGION_PROMS ) 484 ROM_LOAD( "ic40_b.bin", 0x0000, 0x0100, 0x79350b25 ) /* palette low bits */ 485 ROM_LOAD( "ic41_a.bin", 0x0100, 0x0100, 0xe176b768 ) /* palette high bits */ 486 ROM_END 487 488 ROM_START( phoenixc ) 489 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */ 490 ROM_LOAD( "phoenix.45", 0x0000, 0x0800, 0x5b8c55a8 ) 491 ROM_LOAD( "phoenix.46", 0x0800, 0x0800, 0xdbc942fa ) 492 ROM_LOAD( "phoenix.47", 0x1000, 0x0800, 0xcbbb8839 ) 493 ROM_LOAD( "phoenixc.48", 0x1800, 0x0800, 0x5ae0b215 ) 494 ROM_LOAD( "phoenixc.49", 0x2000, 0x0800, 0x1a1ce0d0 ) 495 ROM_LOAD( "ic50", 0x2800, 0x0800, 0xac5e9ec1 ) 496 ROM_LOAD( "ic51", 0x3000, 0x0800, 0x2eab35b4 ) 497 ROM_LOAD( "phoenixc.52", 0x3800, 0x0800, 0x8424d7c4 ) 498 499 ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE ) 500 ROM_LOAD( "ic23", 0x0000, 0x0800, 0x3c7e623f ) 501 ROM_LOAD( "ic24", 0x0800, 0x0800, 0x59916d3b ) 502 503 ROM_REGION( 0x1000, REGION_GFX2 | REGIONFLAG_DISPOSE ) 504 ROM_LOAD( "phoenixc.39", 0x0000, 0x0800, 0xbb0525ed ) 505 ROM_LOAD( "phoenixc.40", 0x0800, 0x0800, 0x4178aa4f ) 506 507 ROM_REGION( 0x0200, REGION_PROMS ) 508 ROM_LOAD( "ic40_b.bin", 0x0000, 0x0100, 0x79350b25 ) /* palette low bits */ 509 ROM_LOAD( "ic41_a.bin", 0x0100, 0x0100, 0xe176b768 ) /* palette high bits */ 510 ROM_END 511 512 ROM_START( pleiads ) 513 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */ 514 ROM_LOAD( "ic47.r1", 0x0000, 0x0800, 0x960212c8 ) 515 ROM_LOAD( "ic48.r2", 0x0800, 0x0800, 0xb254217c ) 516 ROM_LOAD( "ic47.bin", 0x1000, 0x0800, 0x87e700bb ) /* IC 49 on real board */ 517 ROM_LOAD( "ic48.bin", 0x1800, 0x0800, 0x2d5198d0 ) /* IC 50 on real board */ 518 ROM_LOAD( "ic51.r5", 0x2000, 0x0800, 0x49c629bc ) 519 ROM_LOAD( "ic50.bin", 0x2800, 0x0800, 0xf1a8a00d ) /* IC 52 on real board */ 520 ROM_LOAD( "ic53.r7", 0x3000, 0x0800, 0xb5f07fbc ) 521 ROM_LOAD( "ic52.bin", 0x3800, 0x0800, 0xb1b5a8a6 ) /* IC 54 on real board */ 522 523 ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE ) 524 ROM_LOAD( "ic23.bin", 0x0000, 0x0800, 0x4e30f9e7 ) /* IC 45 on real board */ 525 ROM_LOAD( "ic24.bin", 0x0800, 0x0800, 0x5188fc29 ) /* IC 44 on real board */ 526 527 ROM_REGION( 0x1000, REGION_GFX2 | REGIONFLAG_DISPOSE ) 528 ROM_LOAD( "ic39.bin", 0x0000, 0x0800, 0x85866607 ) /* IC 27 on real board */ 529 ROM_LOAD( "ic40.bin", 0x0800, 0x0800, 0xa841d511 ) /* IC 26 on real board */ 530 531 ROM_REGION( 0x0200, REGION_PROMS ) 532 ROM_LOAD( "7611-5.26", 0x0000, 0x0100, 0x7a1bcb1e ) /* palette low bits */ 533 ROM_LOAD( "7611-5.33", 0x0100, 0x0100, 0xe38eeb83 ) /* palette high bits */ 534 ROM_END 535 536 ROM_START( pleiadbl ) 537 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */ 538 ROM_LOAD( "ic45.bin", 0x0000, 0x0800, 0x93fc2958 ) 539 ROM_LOAD( "ic46.bin", 0x0800, 0x0800, 0xe2b5b8cd ) 540 ROM_LOAD( "ic47.bin", 0x1000, 0x0800, 0x87e700bb ) 541 ROM_LOAD( "ic48.bin", 0x1800, 0x0800, 0x2d5198d0 ) 542 ROM_LOAD( "ic49.bin", 0x2000, 0x0800, 0x9dc73e63 ) 543 ROM_LOAD( "ic50.bin", 0x2800, 0x0800, 0xf1a8a00d ) 544 ROM_LOAD( "ic51.bin", 0x3000, 0x0800, 0x6f56f317 ) 545 ROM_LOAD( "ic52.bin", 0x3800, 0x0800, 0xb1b5a8a6 ) 546 547 ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE ) 548 ROM_LOAD( "ic23.bin", 0x0000, 0x0800, 0x4e30f9e7 ) 549 ROM_LOAD( "ic24.bin", 0x0800, 0x0800, 0x5188fc29 ) 550 551 ROM_REGION( 0x1000, REGION_GFX2 | REGIONFLAG_DISPOSE ) 552 ROM_LOAD( "ic39.bin", 0x0000, 0x0800, 0x85866607 ) 553 ROM_LOAD( "ic40.bin", 0x0800, 0x0800, 0xa841d511 ) 554 555 ROM_REGION( 0x0200, REGION_PROMS ) 556 ROM_LOAD( "7611-5.26", 0x0000, 0x0100, 0x7a1bcb1e ) /* palette low bits */ 557 ROM_LOAD( "7611-5.33", 0x0100, 0x0100, 0xe38eeb83 ) /* palette high bits */ 558 ROM_END 559 560 ROM_START( pleiadce ) 561 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */ 562 ROM_LOAD( "pleiades.47", 0x0000, 0x0800, 0x711e2ba0 ) 563 ROM_LOAD( "pleiades.48", 0x0800, 0x0800, 0x93a36943 ) 564 ROM_LOAD( "ic47.bin", 0x1000, 0x0800, 0x87e700bb ) 565 ROM_LOAD( "pleiades.50", 0x1800, 0x0800, 0x5a9beba0 ) 566 ROM_LOAD( "pleiades.51", 0x2000, 0x0800, 0x1d828719 ) 567 ROM_LOAD( "ic50.bin", 0x2800, 0x0800, 0xf1a8a00d ) 568 ROM_LOAD( "pleiades.53", 0x3000, 0x0800, 0x037b319c ) 569 ROM_LOAD( "pleiades.54", 0x3800, 0x0800, 0xca264c7c ) 570 571 ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE ) 572 ROM_LOAD( "pleiades.45", 0x0000, 0x0800, 0x8dbd3785 ) 573 ROM_LOAD( "pleiades.44", 0x0800, 0x0800, 0x0db3e436 ) 574 575 ROM_REGION( 0x1000, REGION_GFX2 | REGIONFLAG_DISPOSE ) 576 ROM_LOAD( "ic39.bin", 0x0000, 0x0800, 0x85866607 ) 577 ROM_LOAD( "ic40.bin", 0x0800, 0x0800, 0xa841d511 ) 578 579 ROM_REGION( 0x0200, REGION_PROMS ) 580 ROM_LOAD( "7611-5.26", 0x0000, 0x0100, 0x7a1bcb1e ) /* palette low bits */ 581 ROM_LOAD( "7611-5.33", 0x0100, 0x0100, 0xe38eeb83 ) /* palette high bits */ 582 ROM_END 583 584 585 586 GAMEX( 1980, phoenix, 0, phoenix, phoenix, 0, ROT90, "Amstar", "Phoenix (Amstar)", GAME_NO_COCKTAIL ) 587 GAMEX( 1980, phoenixa, phoenix, phoenix, phoenixa, 0, ROT90, "Amstar (Centuri license)", "Phoenix (Centuri)", GAME_NO_COCKTAIL ) 588 GAMEX( 1980, phoenixt, phoenix, phoenix, phoenixt, 0, ROT90, "Taito", "Phoenix (Taito)", GAME_NO_COCKTAIL ) 589 GAMEX( 1980, phoenix3, phoenix, phoenix, phoenix3, 0, ROT90, "bootleg", "Phoenix (T.P.N.)", GAME_NO_COCKTAIL ) 590 GAMEX( 1981, phoenixc, phoenix, phoenix, phoenixt, 0, ROT90, "bootleg?", "Phoenix (IRECSA, G.G.I Corp)", GAME_NO_COCKTAIL ) 591 GAMEX( 1981, pleiads, 0, pleiads, pleiads, 0, ROT90, "Tehkan", "Pleiads (Tehkan)", GAME_NO_COCKTAIL ) 592 GAMEX( 1981, pleiadbl, pleiads, pleiads, pleiads, 0, ROT90, "bootleg", "Pleiads (bootleg)", GAME_NO_COCKTAIL ) 593 GAMEX( 1981, pleiadce, pleiads, pleiads, pleiads, 0, ROT90, "Tehkan (Centuri license)", "Pleiads (Centuri)", GAME_NO_COCKTAIL ) 594 595