namcos2_sprite: update note

This commit is contained in:
hap 2021-05-20 17:10:19 +02:00
parent f4d7c0aa62
commit 269b62055e
3 changed files with 11 additions and 13 deletions

View File

@ -8,10 +8,13 @@ Saitek OSA Module: Kasparov Sparc (1993)
The chess engine is by the Spracklen's. Their last, and also their strongest.
Hardware notes:
- Fujitsu MB86930 SPARClite @ 20MHz (fan cooled)
- Fujitsu MB86930 SPARClite @ 20MHz
- 256KB ROM (4*AMD AM27C512)
- 1MB DRAM (8*NEC 424256-60), expandable to 4MB
The module doesn't have its own LCD screen. It has a grill+fan underneath
at the front part, and a heatsink on the CPU.
TODO:
- skeleton device, missing SPARClite emulation, maybe only needs the MMU?

View File

@ -27,9 +27,6 @@ known issues:
Finest Hour:
- roz plane colors are bad in-game
Final Lap:
- sprite size bit is bogus during splash screen
Final Lap 3:
- uses unaligned 32x32 sprites, which aren't handled correctly in video/namcos2.cpp yet

View File

@ -227,18 +227,16 @@ void namcos2_sprite_device::draw_sprites(screen_device &screen, bitmap_ind16 &bi
const u16 word0 = m_spriteram[offset + (loop * 4) + 0];
const u16 word1 = m_spriteram[offset + (loop * 4) + 1];
const u16 offset4 = m_spriteram[offset + (loop * 4) + 2];
const int sizey = ((word0 >> 10) & 0x003f) + 1;
const int sizey = ((word0 >> 10) & 0x003f) + 1;
int sizex = (word3 >> 10) & 0x003f;
int is_32 = (word0 >> 9) & 0x0001;
// The finallap title screen needs 32x32 sprites, but doesn't set the expected bit
// other games (eg. mirninja) do correctly set it.
// It appears that Final Lap does not support 16x16 sprites, otherwise the titlescreen and
// rear-view mirror have glitches. Other games (eg. mirninja) do correctly set it.
//
// can the 16x16 support be disabled globally with a register, or via a pin on the chip?
if (m_force_32x32)
is_32 = 1;
// It's not expected that there's a missing emulation feature for disabling 16x16 sprite mode,
// but simply the early Namco System 2 hardware that Final Lap runs on does not support it.
bool is_32 = bool(word0 & 0x200) || m_force_32x32;
int sizex = (word3 >> 10) & 0x003f;
if (!is_32) sizex >>= 1;
if ((sizey - 1) && sizex)