mirror of
https://github.com/holub/mame
synced 2025-07-02 16:49:22 +03:00
galdrvr.c: fixed missing sprites and bullets in fantastc [Haze, hap]
This commit is contained in:
parent
c6e45744ac
commit
02f7f75c63
@ -2136,10 +2136,6 @@ static MACHINE_CONFIG_DERIVED( zigzag, galaxian_base )
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_PROGRAM_MAP(galaxian_map_base) /* no discrete sound */
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_MODIFY("screen")
|
||||
MCFG_SCREEN_UPDATE_STATIC(zigzag)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SOUND_ADD("aysnd", AY8910, 1789750)
|
||||
|
||||
@ -2651,6 +2647,8 @@ static void common_init(
|
||||
galaxian_state *state = machine.driver_data<galaxian_state>();
|
||||
state->m_irq_enabled = 0;
|
||||
state->m_irq_line = INPUT_LINE_NMI;
|
||||
state->m_numspritegens = 1;
|
||||
state->m_bullets_base = 0x60;
|
||||
state->m_frogger_adjust = FALSE;
|
||||
state->m_sfx_tilemap = FALSE;
|
||||
state->m_draw_bullet_ptr = (draw_bullet != NULL) ? draw_bullet : galaxian_draw_bullet;
|
||||
@ -2926,6 +2924,9 @@ static DRIVER_INIT( zigzag )
|
||||
common_init(machine, NULL, galaxian_draw_background, NULL, NULL);
|
||||
state->m_draw_bullet_ptr = NULL;
|
||||
|
||||
/* two sprite generators */
|
||||
state->m_numspritegens = 2;
|
||||
|
||||
/* make ROMs 2 & 3 swappable */
|
||||
space->install_read_bank(0x2000, 0x2fff, "bank1");
|
||||
space->install_read_bank(0x3000, 0x3fff, "bank2");
|
||||
@ -3146,9 +3147,17 @@ static DRIVER_INIT( mshuttlj )
|
||||
|
||||
static DRIVER_INIT( fantastc )
|
||||
{
|
||||
galaxian_state *state = machine.driver_data<galaxian_state>();
|
||||
|
||||
/* video extensions */
|
||||
common_init(machine, galaxian_draw_bullet, galaxian_draw_background, NULL, upper_extend_sprite_info);
|
||||
|
||||
/* two sprite generators */
|
||||
state->m_numspritegens = 2;
|
||||
|
||||
/* bullets moved from $60 to $c0 */
|
||||
state->m_bullets_base = 0xc0;
|
||||
|
||||
/* decode code */
|
||||
static const UINT16 lut_am_unscramble[32] = {
|
||||
0, 2, 4, 6, // ok!
|
||||
|
@ -6381,8 +6381,8 @@ GAME( 1982, tenspot, 0, tenspot, tenspot, tenspot, ROT270, "Thomas Au
|
||||
GAME( 1984, devilfsg, devilfsh, pacmanbl, devilfsg, devilfsg, ROT270, "Vision / Artic", "Devil Fish (Galaxian hardware, bootleg?)", GAME_SUPPORTS_SAVE )
|
||||
|
||||
/* sound hardware replaced with AY8910 */
|
||||
GAME( 1982, zigzag, 0, zigzag, zigzag, zigzag, ROT90, "bootleg (LAX)", "Zig Zag (Galaxian hardware, set 1)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, zigzag2, zigzag, zigzag, zigzag, zigzag, ROT90, "bootleg (LAX)", "Zig Zag (Galaxian hardware, set 2)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, zigzag, 0, zigzag, zigzag, zigzag, ROT90, "bootleg (LAX)", "Zig Zag (Galaxian hardware, set 1)", GAME_SUPPORTS_SAVE ) // maybe by Taito do Brasil?
|
||||
GAME( 1982, zigzag2, zigzag, zigzag, zigzag, zigzag, ROT90, "bootleg (LAX)", "Zig Zag (Galaxian hardware, set 2)", GAME_SUPPORTS_SAVE ) // "
|
||||
|
||||
/* multi-game select via external switch */
|
||||
GAME( 1981, gmgalax, 0, gmgalax, gmgalax, gmgalax, ROT90, "bootleg", "Ghostmuncher Galaxian (bootleg)", GAME_SUPPORTS_SAVE )
|
||||
@ -6435,7 +6435,7 @@ GAME( 1982, skybase, 0, mooncrst, skybase, skybase, ROT90, "Omori Ele
|
||||
GAME( 198?, kong, 0, mooncrst, kong, kong, ROT90, "Taito do Brasil", "Kong (Brazil)", GAME_SUPPORTS_SAVE | GAME_WRONG_COLORS ) // rewrite of Donkey Kong (!) not a clone
|
||||
|
||||
/* larger romspace, 2*AY8910, based on Super Star Crest board? */
|
||||
GAME( 198?, fantastc, 0, fantastc, fantastc, fantastc, ROT90, "Taito do Brasil", "Fantastic", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING ) // rewrite of Galaga (!) not a clone
|
||||
GAME( 198?, fantastc, 0, fantastc, fantastc, fantastc, ROT90, "Taito do Brasil", "Fantastic", GAME_SUPPORTS_SAVE | GAME_WRONG_COLORS ) // rewrite of Galaga (!) not a clone
|
||||
|
||||
/* extra ROMs, protection, and sound hardware replaced with AY8910 */
|
||||
GAME( 1981, jumpbug, 0, jumpbug, jumpbug, jumpbug, ROT90, "Hoei (Rock-Ola license)", "Jump Bug", GAME_SUPPORTS_SAVE ) // or by Alpha Denshi Co. under contract from Hoei?
|
||||
|
@ -40,6 +40,8 @@ public:
|
||||
m_spriteram(*this, "spriteram") { }
|
||||
|
||||
UINT8 *m_videoram;
|
||||
int m_bullets_base;
|
||||
int m_numspritegens;
|
||||
int m_counter_74ls161[2];
|
||||
int m_direction[2];
|
||||
UINT8 m_gmgalax_selected_game;
|
||||
@ -87,7 +89,6 @@ PALETTE_INIT( moonwar );
|
||||
|
||||
VIDEO_START( galaxian );
|
||||
SCREEN_UPDATE_RGB32( galaxian );
|
||||
SCREEN_UPDATE_RGB32( zigzag );
|
||||
|
||||
WRITE8_HANDLER( galaxian_videoram_w );
|
||||
WRITE8_HANDLER( galaxian_objram_w );
|
||||
|
@ -461,24 +461,13 @@ SCREEN_UPDATE_RGB32( galaxian )
|
||||
/* draw the tilemap characters over top */
|
||||
state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
|
||||
|
||||
/* render the sprites next */
|
||||
sprites_draw(screen.machine(), bitmap, cliprect, &state->m_spriteram[0x40]);
|
||||
/* render the sprites next. Some custom pcbs (eg. zigzag, fantastc) have more than one sprite generator (ideally, this should be rendered in parallel) */
|
||||
for (int i = 0; i < state->m_numspritegens; i++)
|
||||
sprites_draw(screen.machine(), bitmap, cliprect, &state->m_spriteram[0x40 + i * 0x20]);
|
||||
|
||||
/* if we have bullets to draw, render them following */
|
||||
if (state->m_draw_bullet_ptr != NULL)
|
||||
bullets_draw(screen.machine(), bitmap, cliprect, &state->m_spriteram[0x60]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
SCREEN_UPDATE_RGB32( zigzag )
|
||||
{
|
||||
SCREEN_UPDATE32_CALL(galaxian);
|
||||
|
||||
/* zigzag has an extra sprite generator instead of bullets (note: ideally, this should be rendered in parallel) */
|
||||
galaxian_state *state = screen.machine().driver_data<galaxian_state>();
|
||||
sprites_draw(screen.machine(), bitmap, cliprect, &state->m_spriteram[0x60]);
|
||||
bullets_draw(screen.machine(), bitmap, cliprect, &state->m_spriteram[state->m_bullets_base]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user