segas32.cpp: update todo (nw)

This commit is contained in:
angelosa 2020-04-10 22:51:33 +02:00
parent 19862746e3
commit 17e0358bb8

View File

@ -3,31 +3,48 @@
/*
Open questions:
- In f1en, the scrolling text in attract mode is very jumpy. Whatever
double buffering they are using seems to be out of sync with the sprite
rendering.
- In f1en, the scrolling text in attract mode is very jumpy. Whatever
double buffering they are using seems to be out of sync with the sprite
rendering.
- In radr, NBG1 should be opaque on select screen, and NBG3 should be
opaque while driving. This is controlled by register $31ff8e
(respectively $200 and $800), likewise darkedge sets $800 on the first
attract fight (which has ugly black pens which should be white according
to the ref)
- In radr, NBG1 should be opaque on select screen, and NBG3 should be
opaque while driving.
This is controlled by register $31ff8e (respectively $200 and $800),
likewise darkedge sets $800 on the first attract fight
(which has ugly black pens which should be white according to the ref).
harddunk sets $0f00 which completely breaks text display if current
hookup is enabled.
The theory is that opaque pens should go above background layer and
behind everything else like System 24.
- titlef NBG0 and NBG2 layers are currently hidden during gameplay, it
sets $31ff02 with either $7be0 and $2960 (and $31ff8e is $c00).
Is it possible that somewhere in the registers there may be a
Saturn-esque sprite window effect enable to draw the boxing ring
over NBG0;
- radr uses $1A0 as the X center for zooming; however, this
contradicts the theory that bit 9 is a sign bit. For now, the code
assumes that the X center has 10 bits of resolution.
- In radr, they use $1A0 as the X center for zooming; however, this
contradicts the theory that bit 9 is a sign bit. For now, the code
assumes that the X center has 10 bits of resolution.
- In svf (the field) and radr (on the field), they use tilemap-specific
flip in conjunction with rowscroll AND rowselect. According to Charles,
in this case, the rowselect lookups should be done in reverse order,
but this results in an incorrect display. For now, we assume there is
a bug in the procedure and implement it so that it looks correct.
- In svf (the field) and radr (on the field), they use tilemap-specific
flip in conjunction with rowscroll AND rowselect. According to Charles,
in this case, the rowselect lookups should be done in reverse order,
but this results in an incorrect display. For now, we assume there is
a bug in the procedure and implement it so that it looks correct.
- titlef NBG0 and NBG2 layers are currently hidden during gameplay.
It sets $31ff02 with either $7be0 and $2960 (and $31ff8e is $c00).
Game actually uses the "rowscroll/rowselect" tables for a line window
effect to draw the boxing ring over NBG0.
Same deal for ga2 when in stage 2 cave a wall torch is lit.
- harddunk draws solid white in attract mode when the players are presented.
NBG0 is set with $200 on center X/Y, same as above or perhaps missing
tilemap wraparound?
- Wrong priority cases (parenthesis for the level setup):
dbzvrvs: draws text layer ($e) behind sprite-based gauges ($f).
dbzvrvs: Sheng-Long speech balloon during Piccoro ending (fixme: check levels).
f1lap: attract mode ranking sprite-based text ($a) vs. road ($d)
f1lap: attract mode map display (after aforementioned), sprite-based turn names
($a) are hidden by map ($d) again;
(Note: Theory about these being CPU core bug(s) is debunked by the fact that latter
sets up via immediate opcodes)
Information extracted from below, and from Modeler:
@ -56,15 +73,15 @@
---- ---- ---- --1- : 1= X+Y flip for NBG1
---- ---- ---- ---0 : 1= X+Y flip for NBG0
$31FF02 : x--- ---- --x- ---- : Bitmap layer enable (?)
-x-- ---- ---- ---- : 1= NBG3 page wrapping disable (clipping enable according to code?)
--x- ---- ---- ---- : 1= NBG2 page wrapping disable
-x-- ---- ---- ---- : 1= NBG3 page wrapping disable (clipping enable according to code?)
--x- ---- ---- ---- : 1= NBG2 page wrapping disable
---1 ---- ---- ---- : 1= NBG1 page wrapping disable
---- 0--- ---- ---- : 1= NBG0 page wrapping disable
---- -x-- ---- ---- : 1= bitmap layer clipping mode (1=outside)
---- --x- ---- ---- : 1= NBG3 clipping mode (1=outside)
---- ---x ---- ---- : 1= NBG2 clipping mode (1=outside)
---- ---- x--- ---- : 1= NBG1 clipping mode (1=outside)
---- ---- -x-- ---- : 1= NBG0 clipping mode (1=outside)
---- -x-- ---- ---- : 1= bitmap layer clipping mode (1=outside)
---- --x- ---- ---- : 1= NBG3 clipping mode (1=outside)
---- ---x ---- ---- : 1= NBG2 clipping mode (1=outside)
---- ---- x--- ---- : 1= NBG1 clipping mode (1=outside)
---- ---- -x-- ---- : 1= NBG0 clipping mode (1=outside)
---- ---- --b- ---- : 1= Bitmap layer disable
---- ---- ---t ---- : 1= Text layer disable
---- ---- ---- 3--- : 1= NBG3 layer disable
@ -161,37 +178,6 @@
reference
- arabfgt : https://www.youtube.com/watch?v=98QivDAGz3I
- darkedge : https://www.youtube.com/watch?v=riO1yb95z7s
====
back layer setups (register $31ff5e):
alien3: $0200
arabfgt: $8000-$81ff -- depending on the scene
arescue: $0200
as1: (untested)
brival: $8000
darkedge: $0200
dbzvrvs: $0200
f1en: $0000
f1lap: $0000
ga2: $0200
harddunk: $8200
holo: $0200
jpark: $0200
kokoroj: (untested)
kokoroj2: $8000 --
$8000-$81fc (in steps of 4) -- on introduction/initials scenes
orunners: $0200
radm: $0200
radr: $8200 -- gameplay
$0200 -- title screen
scross: $0200
slipstrm: $0000
sonic: $0000 -- on sega logo/title screen
$0200 -- everything else
spidman: $0200
svf: $0201 -- on attract
$0200 -- on gameplay
titlef: $8200
*/
@ -1917,7 +1903,7 @@ void segas32_state::mix_all_layers(int which, int xoffs, bitmap_rgb32 &bitmap, c
layerorder[groupnum][sprindex].sprblendmask = 0;
layerorder[groupnum][sprindex].coloroffs = compute_color_offsets(which, (m_mixer_control[which][0x3e/2] >> 6) & 1, (m_mixer_control[which][0x4c/2] >> 15) & 1);
}
/*
/*\
{
static const char *const layname[] = { "TEXT", "NBG0", "NBG1", "NBG2", "NBG3", "BITM", "SPRI", "LINE" };
for (groupnum = 0; groupnum <= sprgroup_mask; groupnum++)
@ -2595,4 +2581,34 @@ SC: 0003 0000 0000 0000 - 0001 0001 0000 0000
20: 007F 0366 0000 0364 - 0000 0070 0071 0070 - 0000 4000 4000 4000 - 4000 0000 0000 4000
40: 0000 0000 0000 0000 - 0000 0000 9E05 0000 - 0000 0000 0000 0000 - 0000 0000 0000 0000
back layer setups (register $31ff5e):
alien3: $0200
arabfgt: $8000-$81ff -- depending on the scene
arescue: $0200
as1: $0000
brival: $8000
darkedge: $0200
dbzvrvs: $0200
f1en: $0000
f1lap: $0000
ga2: $0200
harddunk: $8200
holo: $0200
jpark: $0200
kokoroj: $8000
kokoroj2: $8000 --
$8000-$81fc (in steps of 4) -- on introduction/initials scenes
orunners: $0200
radm: $0200
radr: $8200 -- gameplay
$0200 -- title screen
scross: $0200
slipstrm: $0000
sonic: $0000 -- on sega logo/title screen
$0200 -- everything else
spidman: $0200
svf: $0201 -- on attract
$0200 -- on gameplay
titlef: $8200
*/