summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Luca Elia <lucaelia@mamedev.org>2015-05-17 12:30:24 +0200
committer Luca Elia <lucaelia@mamedev.org>2015-05-17 12:31:22 +0200
commit9aaa9fbebcad4e2a010ea3452e555a373ba05553 (patch)
treec1bd3e0d3c831093de5c034067ee68ce8f54af7d
parent13128ac41ca1e46c395f6d14ae707771a987ae6e (diff)
Fix text color and wrong sprite flip x based on game footage [Luca Elia]
-rw-r--r--src/mame/drivers/wyvernf0.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/mame/drivers/wyvernf0.c b/src/mame/drivers/wyvernf0.c
index 66ab798a7fe..598195012c3 100644
--- a/src/mame/drivers/wyvernf0.c
+++ b/src/mame/drivers/wyvernf0.c
@@ -6,14 +6,14 @@ Wyvern F-0 (1985, Taito)
driver by Luca Elia
-Typical Taito mid-80s hardware but with dual video outputs.
+Typical Taito mid-80s hardware but with dual video output.
Sound board: Z80, 2 x YM2149, OKI M5232
CPU board: Z80, ROM and RAM, 68705P5 MCU (protected)
OBJ board: ROMs and RAM
Video board: ROMs and RAM, 4 x Fujitsu MB112S146 (also used on arkanoid, lkage)
-The rest is just common logic, there's no custom chips.
+The rest is just common logic, there are no custom chips.
The cabinet uses a half-silvered mirror to mix the images from two screens for a pseudo-3D effect:
@@ -24,6 +24,8 @@ player ship and enemies in the air are displayed in the upper screen.
And the cabinet also has two speakers. The sound of enemies on the ground is heard
from the bottom speaker and the sound of enemies in the air is heard from the top speaker.
+Actual game video: http://www.nicozon.net/watch/sm10823430
+
***************************************************************************/
#include "emu.h"
@@ -127,20 +129,18 @@ WRITE8_MEMBER(wyvernf0_state::fgram_w)
TILE_GET_INFO_MEMBER(wyvernf0_state::get_bg_tile_info)
{
int offs = tile_index * 2;
- int code = m_bgram[offs] + ((m_bgram[offs+1] & 0xff) << 8);
- int color = 0 + ((code & 0x7000) >> 12);
+ int code = m_bgram[offs] + (m_bgram[offs+1] << 8);
+ int color = 0 + ((code & 0x3000) >> 12);
SET_TILE_INFO_MEMBER(1, code, color, TILE_FLIPXY(code >> 14));
}
TILE_GET_INFO_MEMBER(wyvernf0_state::get_fg_tile_info)
{
int offs = tile_index * 2;
- int code = m_fgram[offs] + ((m_fgram[offs+1] & 0xff) << 8);
- int color = 8 + ((code & 0x7000) >> 12);
+ int code = m_fgram[offs] + (m_fgram[offs+1] << 8);
+ int color = 8 + ((code & 0x3000) >> 12);
SET_TILE_INFO_MEMBER(1, code, color, TILE_FLIPXY(code >> 14));
- // flip bits overlap color bits, but this way the rotated taito copyright matches the screenshot here:
- // http://twitter.yfrog.com/odzpridj
}
VIDEO_START_MEMBER(wyvernf0_state,wyvernf0)
@@ -182,7 +182,7 @@ YY XX
71 11 04 a8 <- target
71 01 0f 50 <- player
-yyyyyyyy fccccccc xf??pppp xxxxxxxx
+yyyyyyyy fccccccc x???pppp xxxxxxxx
*/
UINT8 *sprram = &m_spriteram[ is_foreground ? m_spriteram.bytes()/2 : 0 ];
@@ -195,7 +195,8 @@ yyyyyyyy fccccccc xf??pppp xxxxxxxx
sx = sprram[offs + 3] - ((sprram[offs + 2] & 0x80) << 1);
sy = 256 - 8 - sprram[offs + 0] - 23; // center player sprite: 256 - 8 - 0x71 + dy = 256/2-32/2 -> dy = -23
- int flipx = sprram[offs + 2] & 0x40; // maybe
+// int flipx = sprram[offs + 2] & 0x40; // nope
+ int flipx = 0;
int flipy = sprram[offs + 1] & 0x80;
if (flip_screen_x())