Previous 199869 Revisions Next

r22693 Tuesday 7th May, 2013 at 15:49:01 UTC by hap
new NOT_WORKING game added
---------------------------
Time Fighter (Time Pilot conversion on Galaxian hardware) [Marcello Mancini, the hands of the hap]
[src/mame/drivers]galaxian.c galdrvr.c
[src/mame/includes]galaxian.h
[src/mame/video]galaxian.c

trunk/src/mame/drivers/galaxian.c
r22692r22693
6969  'BONUS SHIP' text is printed on a different line.
7070
7171
72TODO:
73----
7472
75- Problems with Galaxian based on the observation of a real machine:
76
77  - Background humming is incorrect.  It's faster on a real machine
78  - Explosion sound is much softer.  Filter involved?
79
80- $4800-4bff in Streaking/Ghost Muncher
81
82
83
8473Moon Cresta versions supported:
8574------------------------------
8675
r22692r22693
395384
396385
397386
398TO DO :
399-------
387TODO:
388----
389- Problems with Galaxian based on the observation of a real machine:
390  - Background humming is incorrect.  It's faster on a real machine
391  - Explosion sound is much softer.  Filter involved?
392- streakng/ghostmun: $4800-4bff
393- smooncrs : fix read/writes at/to unmapped memory (when player 2, "cocktail" mode) + fix the ?#! bug with "bullets" (when player 2, "cocktail" mode)
394- timefgtr : missing player bullets, sprite ROM extend(see later levels), sound is too slow, some sprites missing
395- zigzag   : full Dip Switches and Inputs
396- zigzag2  : full Dip Switches and Inputs
397- jumpbug  : full Dip Switches and Inputs
398- jumpbugb : full Dip Switches and Inputs
399- levers   : full Dip Switches and Inputs
400- kingball : full Dip Switches and Inputs
401- kingbalj : full Dip Switches and Inputs
402- frogg    : fix read/writes at/to unmapped/wrong memory
403- scprpng  : fix read/writes at/to unmapped/wrong memory
404- scorpion : check whether konami filters are used
405- explorer : check whether konami filters are used
400406
401  - smooncrs : fix read/writes at/to unmapped memory (when player 2, "cocktail" mode)
402               fix the ?#! bug with "bullets" (when player 2, "cocktail" mode)
403  - zigzag   : full Dip Switches and Inputs
404  - zigzag2  : full Dip Switches and Inputs
405  - jumpbug  : full Dip Switches and Inputs
406  - jumpbugb : full Dip Switches and Inputs
407  - levers   : full Dip Switches and Inputs
408  - kingball : full Dip Switches and Inputs
409  - kingbalj : full Dip Switches and Inputs
410  - frogg    : fix read/writes at/to unmapped/wrong memory
411  - scprpng  : fix read/writes at/to unmapped/wrong memory
412  - scorpion : check whether konami filters are used
413  - explorer : check whether konami filters are used
414
415407***************************************************************************/
416408
417409#include "emu.h"
r22692r22693
14741466   AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2")
14751467   AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
14761468   AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_READ(watchdog_reset_r)
1477   AM_RANGE(0xfffe, 0xfffe) AM_NOP //?
1469   AM_RANGE(0xfffe, 0xfffe) AM_NOP // ?
14781470ADDRESS_MAP_END
14791471
1472static ADDRESS_MAP_START( timefgtr_map, AS_PROGRAM, 8, galaxian_state )
1473   ADDRESS_MAP_UNMAP_HIGH
1474   AM_RANGE(0x0000, 0x7fff) AM_ROM
1475   AM_RANGE(0x8000, 0x87ff) AM_RAM
1476   AM_RANGE(0x8803, 0x8803) AM_DEVWRITE_LEGACY("8910.0", ay8910_address_w)
1477   AM_RANGE(0x880b, 0x880b) AM_DEVWRITE_LEGACY("8910.0", ay8910_data_w)
1478   AM_RANGE(0x880c, 0x880c) AM_DEVWRITE_LEGACY("8910.1", ay8910_address_w)
1479   AM_RANGE(0x880e, 0x880e) AM_DEVWRITE_LEGACY("8910.1", ay8910_data_w)
1480   AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
1481   AM_RANGE(0x9800, 0x9bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
1482   AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0")
1483   AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1")
1484   AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2")
1485   AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
1486   AM_RANGE(0xb004, 0xb004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
1487   AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_READ(watchdog_reset_r)
1488//   AM_RANGE(0xb800, 0xb800) AM_WRITENOP // ?
1489//   AM_RANGE(0xfff8, 0xffff) AM_WRITENOP // sound related?
1490ADDRESS_MAP_END
14801491
1492
14811493/* map derived from schematics */
14821494#if 0
14831495static ADDRESS_MAP_START( dambustr_map, AS_PROGRAM, 8, galaxian_state )
r22692r22693
22342246MACHINE_CONFIG_END
22352247
22362248
2249TIMER_DEVICE_CALLBACK_MEMBER(galaxian_state::timefgtr_scanline)
2250{
2251   UINT8 split = param + 16;
2252
2253   // change spriteram base per each 64-line part of the screen
2254   if ((split & 0x3f) == 0)
2255   {
2256      machine().primary_screen->update_now();
2257      m_sprites_base = 0x40 | (split << 2 & 0x300);
2258   }
2259}
2260
2261static MACHINE_CONFIG_DERIVED( timefgtr, galaxian_base )
2262
2263   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", galaxian_state, timefgtr_scanline, "screen", 0, 1)
2264
2265   /* alternate memory map */
2266   MCFG_CPU_MODIFY("maincpu")
2267   MCFG_CPU_PROGRAM_MAP(timefgtr_map)
2268
2269   /* sound hardware */
2270   MCFG_SOUND_ADD("8910.0", AY8910, GALAXIAN_PIXEL_CLOCK/3/2) // 3.072MHz
2271   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
2272
2273   MCFG_SOUND_ADD("8910.1", AY8910, GALAXIAN_PIXEL_CLOCK/3/2) // 3.072MHz
2274   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
2275MACHINE_CONFIG_END
2276
2277
22372278static MACHINE_CONFIG_DERIVED( jumpbug, galaxian_base )
22382279
22392280   MCFG_WATCHDOG_VBLANK_INIT(0)
r22692r22693
27202761   m_irq_line = INPUT_LINE_NMI;
27212762   m_numspritegens = 1;
27222763   m_bullets_base = 0x60;
2764   m_sprites_base = 0x40;
27232765   m_frogger_adjust = FALSE;
27242766   m_sfx_tilemap = FALSE;
27252767   m_draw_bullet_ptr = (draw_bullet != NULL) ? draw_bullet : &galaxian_state::galaxian_draw_bullet;
r22692r22693
32393281}
32403282
32413283
3284DRIVER_INIT_MEMBER(galaxian_state,timefgtr)
3285{
3286   /* two sprite generators */
3287   m_numspritegens = 2;
3288
3289   /* bullets moved from $60 to $c0 */
3290   m_bullets_base = 0xc0;
3291
3292   /* video extensions */
3293   common_init(&galaxian_state::galaxian_draw_bullet, &galaxian_state::galaxian_draw_background, NULL, &galaxian_state::upper_extend_sprite_info);
3294}
3295
3296
32423297DRIVER_INIT_MEMBER(galaxian_state,kingball)
32433298{
32443299   address_space &space = m_maincpu->space(AS_PROGRAM);
trunk/src/mame/drivers/galdrvr.c
r22692r22693
12241224INPUT_PORTS_END
12251225
12261226
1227static INPUT_PORTS_START( timefgtr )
1228   PORT_START("IN0")
1229   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1230   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 )
1231   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
1232   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
1233   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
1234   PORT_DIPNAME( 0x20, 0x00, "255 Lives (Cheat)" )
1235   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1236   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1237   PORT_DIPNAME( 0x40, 0x40, "Extended Bonus Life" )
1238   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1239   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
1240   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
1241
1242   PORT_START("IN1")
1243   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
1244   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
1245   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // tilt? freeze?
1246   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1247   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1248   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
1249   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Coinage ) )
1250   PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
1251   PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
1252   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Lives ) )
1253   PORT_DIPSETTING(    0x00, "3" )
1254   PORT_DIPSETTING(    0x80, "5" )
1255
1256   PORT_START("IN2")
1257   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) // if 01 and 02 are both set, bonus life is 00
1258   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1259   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1260   PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) // "
1261   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1262   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1263   PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
1264   PORT_DIPSETTING(    0x00, "10000 50000" )
1265   PORT_DIPSETTING(    0x04, "20000 50000" )
1266   PORT_DIPSETTING(    0x08, "10000 60000" )
1267   PORT_DIPSETTING(    0x0c, "20000 60000" )
1268   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1269   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1270   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1271   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1272INPUT_PORTS_END
1273
1274
12271275static INPUT_PORTS_START( kong )
12281276   PORT_START("IN0")
12291277   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
r22692r22693
12571305   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Lives ) )
12581306   PORT_DIPSETTING(    0x00, "3" )
12591307   PORT_DIPSETTING(    0x40, "5" )
1260   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coin_A ) )
1308   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) )
12611309   PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
12621310   PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
12631311
r22692r22693
46354683   ROM_LOAD( "prom-74g138", 0x0000, 0x0020, CRC(800f5718) SHA1(5387b24934c8130726180159e207943211215ae2) )
46364684ROM_END
46374685
4686ROM_START( timefgtr )
4687   ROM_REGION( 0x8000, "maincpu", 0 )
4688   ROM_LOAD( "tp01",           0x0000, 0x1000, CRC(ba8b3e70) SHA1(cb930022e462319721013f343e513f4a4957b89e) )
4689   ROM_LOAD( "tp02",           0x1000, 0x1000, CRC(796158c0) SHA1(bc02131a9af1773839ae0aba0225b3160ae632c4) )
4690   ROM_LOAD( "tp03",           0x2000, 0x1000, CRC(fe6a1c98) SHA1(f4a4e61cc96d93cd21e79b0aa3ddc158a7a034a0) )
4691   ROM_LOAD( "tp04",           0x3000, 0x1000, CRC(eff73185) SHA1(8538f1b63b051d6d3892ebedc76f45c3cf02cbab) )
4692   ROM_LOAD( "tp05",           0x4000, 0x1000, CRC(85023e4a) SHA1(afc76ba15d6278c45bf50e9bafcb72a0beb69d4d) )
4693   ROM_LOAD( "tp06",           0x5000, 0x1000, CRC(b6b8aaf9) SHA1(e25e59ee653b13437c412f1aeb8d7c670e34b39f) )
4694
4695   ROM_REGION( 0x4000, "gfx1", 0 )
4696   ROM_LOAD( "tp07",           0x0000, 0x1000, CRC(5f57342c) SHA1(000985613d620cbcafbd24351bd4b02f037430a9) )
4697   ROM_LOAD( "tp09",           0x1000, 0x1000, CRC(636fd772) SHA1(6567992488f0125c082a164f1043c9384736c665) )
4698   ROM_LOAD( "tp08",           0x2000, 0x1000, CRC(2dc3c48b) SHA1(f4ddf5fce909a1de3efbcaf2ff2e4a8d1ea06516) )
4699   ROM_LOAD( "tp10",           0x3000, 0x1000, CRC(b27b450c) SHA1(16131583133fe33b61d4f51a860f41d43011bc50) )
4700
4701   ROM_REGION( 0x0020, "proms", 0 )
4702   ROM_LOAD( "prom", 0x0000, 0x0020, NO_DUMP )
4703ROM_END
4704
46384705ROM_START( kong )
46394706   ROM_REGION( 0x8000, "maincpu", 0 )
46404707   ROM_LOAD( "1",   0x0000, 0x1000, CRC(a206beb5) SHA1(5fea9584b4e3ae076178f6965f0743b9b90b15fc) )
r22692r22693
66516718
66526719/* other games on basic mooncrst hardware */
66536720GAME( 1982, skybase,  0,        mooncrst, skybase, galaxian_state,  skybase,  ROT90,  "Omori Electric Co., Ltd.", "Sky Base", GAME_SUPPORTS_SAVE )
6654GAME( 198?, kong,     0,        mooncrst, kong, galaxian_state,     kong,     ROT90,  "Taito do Brasil", "Kong (Brazil)", GAME_SUPPORTS_SAVE | GAME_WRONG_COLORS ) // rewrite of Donkey Kong (!) not a clone
6721GAME( 198?, kong,     0,        mooncrst, kong,    galaxian_state,  kong,     ROT90,  "Taito do Brasil", "Kong (Donkey Kong conversion on Galaxian hardware)", GAME_SUPPORTS_SAVE | GAME_WRONG_COLORS ) // rewrite of Donkey Kong (!) not a clone
66556722
66566723/* larger romspace, 2*AY8910, based on Super Star Crest board? */
6657GAME( 198?, fantastc, 0,        fantastc, fantastc, galaxian_state, fantastc, ROT90,  "Taito do Brasil", "Fantastic", GAME_SUPPORTS_SAVE ) // rewrite of Galaga (!) not a clone
6724GAME( 198?, fantastc, 0,        fantastc, fantastc, galaxian_state, fantastc, ROT90,  "Taito do Brasil", "Fantastic (Galaga conversion on Galaxian hardware)", GAME_SUPPORTS_SAVE ) // rewrite of Galaga (!) not a clone
66586725
6726/* like fantastc, plus larger spriteram, and maybe different bullet hw(?) */
6727GAME( 198?, timefgtr, 0,        timefgtr, timefgtr, galaxian_state, timefgtr, ROT90,  "Taito do Brasil", "Time Fighter (Time Pilot conversion on Galaxian hardware)", GAME_SUPPORTS_SAVE | GAME_SUPPORTS_SAVE | GAME_WRONG_COLORS ) // rewrite of Time Pilot (!) not a clone
6728
66596729/* extra ROMs, protection, and sound hardware replaced with AY8910 */
66606730GAME( 1981, jumpbug,  0,        jumpbug,  jumpbug, galaxian_state,  jumpbug,  ROT90,  "Hoei (Rock-Ola license)", "Jump Bug", GAME_SUPPORTS_SAVE ) // or by Alpha Denshi Co. under contract from Hoei?
66616731GAME( 1981, jumpbugb, jumpbug,  jumpbug,  jumpbug, galaxian_state,  jumpbug,  ROT90,  "bootleg", "Jump Bug (bootleg)", GAME_SUPPORTS_SAVE ) // bootleg of Sega license
trunk/src/mame/video/galaxian.c
r22692r22693
413413   state_save_register_global(machine(), m_background_green);
414414   state_save_register_global(machine(), m_background_blue);
415415
416   state_save_register_global(machine(), m_sprites_base);
417   state_save_register_global(machine(), m_bullets_base);
416418   state_save_register_global_array(machine(), m_gfxbank);
417419
418420   state_save_register_global(machine(), m_stars_enabled);
r22692r22693
439441
440442   /* render the sprites next. Some custom pcbs (eg. zigzag, fantastc) have more than one sprite generator (ideally, this should be rendered in parallel) */
441443   for (int i = 0; i < m_numspritegens; i++)
442      sprites_draw(bitmap, cliprect, &m_spriteram[0x40 + i * 0x20]);
444      sprites_draw(bitmap, cliprect, &m_spriteram[m_sprites_base + i * 0x20]);
443445
444446   /* if we have bullets to draw, render them following */
445447   if (m_draw_bullet_ptr != NULL)
trunk/src/mame/includes/galaxian.h
r22692r22693
5151   required_shared_ptr<UINT8> m_videoram;
5252
5353   int m_bullets_base;
54   int m_sprites_base;
5455   int m_numspritegens;
5556   int m_counter_74ls161[2];
5657   int m_direction[2];
r22692r22693
205206   DECLARE_DRIVER_INIT(mshuttle);
206207   DECLARE_DRIVER_INIT(mshuttlj);
207208   DECLARE_DRIVER_INIT(fantastc);
209   DECLARE_DRIVER_INIT(timefgtr);
208210   DECLARE_DRIVER_INIT(kingball);
209211   DECLARE_DRIVER_INIT(scorpnmc);
210212   DECLARE_DRIVER_INIT(thepitm);
r22692r22693
237239   INTERRUPT_GEN_MEMBER(fakechange_interrupt_gen);
238240   TIMER_DEVICE_CALLBACK_MEMBER(checkmaj_irq0_gen);
239241   TIMER_DEVICE_CALLBACK_MEMBER(galaxian_stars_blink_timer);
242   TIMER_DEVICE_CALLBACK_MEMBER(timefgtr_scanline);
240243   void state_save_register();
241244   void sprites_draw(bitmap_rgb32 &bitmap, const rectangle &cliprect, const UINT8 *spritebase);
242245   void bullets_draw(bitmap_rgb32 &bitmap, const rectangle &cliprect, const UINT8 *base);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team