Replies: 1 comment
-
i think bit 0x1000 / 0x0100(sprites) reverses the clip window inversion sense. it'd be a weird interface to have, but it tracks for the listed cases. could be confirmed on hw by patching pbobble4j main program |
Beta Was this translation helpful? Give feedback.
-
what i thought would be a quick fix for the latter two clip planes in land maker turned into a multi-floor warp maze...
land maker uses 4 clip planes: clip3(4) on playfield 4 for win messages and one clip plane per playfield for the endings, a page turning effect.

adding those works. don't even have to respect all 4 clip planes, in practice we only need up to two per playfield (i thought)
(the colors are a separate issue1)
just respecting those clip planes also fixes the intro circle and question text in quizhuhu (mt01014)

and quizhuhu shows us that sprites want all 4 too (fixes hiroko moriguchi herself appearing in the intro circle clip,)
(this entire intro animation before the taito logo isn't visible as is)
so i tested a few others with known playfield display issues in case they were also fixed (pbobble4, arabianm, kaiserkn, trstar) (they weren't, those ones don't use clip 2/3)
then i remembered to test commandw, which is known to have wrong-looking map clipping (https://youtu.be/FmpyezFl-u8?t=25), and found the first regression,
from 'the entire map is displayed' to 'the inside of the window is clipped and everything outside the window is displayed.'
looking into it proved baffling enough that i had to go and check every other game's use of clip
show every use of clip y knows of
arabianm:


pf1,2,4 x10x
[0,463] [0,0] [0,0] [0,0]
commandw: (likely currently has issues)
pf3 single x1Fx then xFFx
attract demo
[0,208] [0,208] [0,80] [0,0]
after credit
[0,208] [0,208] [0,336] [0,208]
tactics overview
[212,268] [0,0] [0,80] [0,0] (upper)
[52,108] [0,0] [0,80] [0,0] (lower)
battle
[464,463] [0,0] [0,80] [0,0] (upper)
[0,0] [0,0] [0,80] [0,0] (lower)
kaiserkn:
attract:
62B5C0: x10x (one line of pf3...? probably used properly by sprite)
[103,216] [0,0] [0,0] [0,0] (etc. shape of qi/aura)
dariusgx:
pf1,3,4: x03x
[0,0] [0,0] [0,0] [0,318]
on sprites?
recalh:
pf1,2,3: x10x
enabled very briefly on some screen transitions
[0,336] [0,336] [0,336] [0,336]
[64,256] [0,0] [0,336] [0,336]
[0,0] [0,0] [0,336] [0,336]
[0,0] [32,288] [0,336] [0,336]
quizhuhu: (currently has issues mt01014)
pf4: x90x
sprite: xx90 or xx10
intro circle, question text
[0,400] [0,0] [0,0] [0,0]
[0,400] [0,0] [0,0] [103,217] (e.g.) circle parameters
pbobble2:
like pbobble 3, different side set, stays through win
[1,159] [0,0] [0,0] [0,0]
pbobble3:
pf1 x10x, pf2 x11x (during play)
like pb4 (dupe board bgs) but useless for pf. no portraits.
disabled at win unlike pb4
[160,319] [0,0] [0,0] [0,0]
gekiridn:
level transition circle, two parallax scrolling layers
transition in:
pf1 x10x (blue layer)
pf2 x20x (red layer)
transition out:
pf1 x11x
pf2 x22x
[32,289] [32,289] [0,0] [0,0] (e.g.)
(this could have been a shared single plane)
tcobra2:
x80x clip3 enable on first and last 4 lines of each playfield
[0,0] [0,0] [0,0] [0,0]
cleopatr:
all pfs x03x
[0,0] [0,0] [0,0] [0,0]
unused?
arkretrn:
most pfs x10x,
pf 2 x32x, duplicate of background graphic, invert to clip around the board for darkened background effect (pf2 is the bright one?)
[0,400] [72,248] [0,0] [0,0]
where clip 1 follows the outer shape of the board border
puchicar:
same devs as arkretrn, sets pfs up the same (x10x),
[0,400] [0,0] [0,0] [0,0]
no real use
pbobble4: (currently has issues mt02819)
pf1: x10x
pf2: x11x
[160,384] [0,0] [0,0] [0,0]
reversed 'invert' sense, like commandw?
gives:

landmakr (currently has issues mt00950)
win message:
62b760-7f8: x80x (wmes part of pf4)
[0,0] [0,0] [0,0] [0,144] (clip 3 right slides 0-312 to reveal pf4 text)
ending slides:
pf4: x80x (slide 1)
pf3: x40x (slide 2)
pf2: x20x (slide 3)
pf1: x10x (bg)
[0,0] [0,0] [0,21] [21,320] (e.g., captured during transition from slide 1 to 2)
page turning effect, where right of next chases left of prev
pcb ref: https://youtu.be/oQaxP8j9Zbg?t=2509
none?:
ringrage, ridingf, gseeker, gunlock, kirameki, pwrgoal, spcinv95, twinqix, popnpop
summarizing the interesting parts, since most of these are a single clip plane and half of them don't even actually clip anything:
x90x
, 0 for full-screen horizontal wipe effect and 3 for circle clip and question text. pretty normal.x10x
,x20x
on the transition in and then invertx11x
,x22x
on the transition out (video https://youtu.be/AuOj-lPEiZE?t=205)x32x
as a little stencil around the game board. playfield 1 and 2 are the same background graphic, and i assume (but did not confirm) that pf 1 has a darkening effect added to it, so that the clipped pf2 can be brighter outside the board.x10x
,x20x
,x40x
,x80x
). at this point i should probably mention that clip high is at 4600 for planes 2/3, same format as 0/1 at 4400x80x
, a [0,0] clip, on the first and last 4 lines of each playfield (and presumably sprites too). not sure if this is just ineffective or actually used to constrain the display area.those all work. those are fine. if you for allow 4 clip planes that all works great.
and then there's pbobble4 and commandw.
puzzle bobble 4 sets the clips:
[160,384] [0,0] [0,0] [0,0]
during a round, a single window for roughly the p2 side of the board.
win portraits are drawn to the playfields on, uh, win.
playfield 1 (x10x):
pf1 image
pf2 image
notice that if we clip pf1 to [160,384] we get the empty side, and if we clip pf2 to ~[160,384] we get everything but the win portrait.

that's mt02819.
if we invert the sense of.. inversion (0 as invert, 1 as not inverted), the result is correct:
command war splits things into two halves

during the strategy screen:
[212,268] [0,0] [0,80] [0,0] (upper)
[52,108] [0,0] [0,80] [0,0] (lower)
during the battle screen:
[464,463] [0,0] [0,80] [0,0] (upper)
[0,0] [0,0] [0,80] [0,0] (lower)
the clip0 windows correspond to the window parts of the ui. in battle the clip is set to disable them and not obscure the screen.
the clip-right 80 in clip2 is, bizarrely, a reset fill value for x5000 from a table at $c28. clip 0?
0x0000
. clip 1?0x0000
. clip 3?0x0000
. ...clip 2?0x8000
. 0x80 minus decimal 48 == 0x50 == decimal 80, which seems to be nonsense?the clip flags are:
pf1:
x0Fx
pf2:
x0Fx
pf3: a single
x1Fx
and thenxFFx
pf4:
x0Fx
lotta questions here. like "why are you setting invert for layers you don't want to clip??" "why are you enabling all clips when only clip0 seems to matter??"
and even if i ignore all that, even if i say 'maybe the 80 is just an error,'
inverting those windows obviously gives the same effect as pbobble4, erasing the good part and displaying outside the window.
that's where i'm stuck. a pcb reference for the mame set commandw would help at least decide how to interpret that 80, but it seems like the inversion sense is a discrepancy between puzzle bobble 4, command war use and the rest, some additional unknown state...?
Footnotes
get_tile_info truncates palette line to be 'extra-plane-aligned' apparently for arabian magic. landmakr and quizhuhu (at least) don't want this (miscolored win messages, green intro fade effects respectively). part of mt01014 ↩
Beta Was this translation helpful? Give feedback.
All reactions