BT410 5.3.39: the Comm page goes exact -- the own row and its name raster
Two things, both read off the shipped framebuffer.
SLOT 0 IS THE OWN ROW. Its layout entry is the odd one out -- {180,225} at
layout mode 0, KILLS/DEATHS at +0x95/+0xe8 instead of the strip boxes'
+0x48 -- and the shipped Comm page fills it with the LOCAL pilot while the
seven surrounding boxes stay empty in a solo mission. So slot 0 takes the
mission player directly and only slots 1..7 come from the pod roster. That
also explains the artifact this session opened with: the ungated walk was
feeding the mission player into the STRIP slots, which is why gating the
roster removed wrong pixels but left the centre row missing.
THE OWN ROW TAKES THE LARGE NAME RASTER. Mission carries both; we asked for
the small one, so 'Aeolus' drew visibly undersized and low in the box. The
strip slots keep the small raster -- their boxes are half the height.
Comm missing 2099 -> 733 -> 0 extra 0 -> 152 -> 0
The Comm head is now EXACT: 15656 pixels against the shipped binary's 15656.
Four heads exact (Eng1/2/3, Comm), the three MFDs within ~150px, and the
whole cockpit at 98.9% identical / 99% coverage -- from 89.7% / 92% when the
session started.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -155,7 +155,7 @@ static Player *
|
||||
|
||||
if (((MechControlsMapper *) controls)->GetPilotArray() == 0)
|
||||
{
|
||||
return NULL; // no pod roster authored -> the page stays empty
|
||||
return NULL; // no pod roster authored -> the rows stay empty
|
||||
}
|
||||
|
||||
return ResolveRosterPlayer(slot);
|
||||
@@ -207,7 +207,7 @@ static Logical
|
||||
// binary's own cache-miss branch (the tinted name box), never an AV.
|
||||
//
|
||||
static BitMap *
|
||||
LookupPlayerNameBitmap(int player_bitmap_index)
|
||||
LookupPlayerNameBitmap(int player_bitmap_index, Logical large)
|
||||
{
|
||||
//
|
||||
// The mission owns the name art: the egg's [smallbitmap] index page
|
||||
@@ -228,7 +228,17 @@ static BitMap *
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
return mission->GetSmallNameBitmap(player_bitmap_index);
|
||||
//
|
||||
// SMALL vs LARGE (A/B rig, 5.3.39): Mission carries both rasters.
|
||||
// The Comm page's OWN row is the wide box and takes the large one
|
||||
// -- the shipped page draws 'Aeolus' there in the tall face, and
|
||||
// the small raster left it visibly undersized and low in the box.
|
||||
// The seven strip slots keep the small raster: their boxes are
|
||||
// half the height.
|
||||
//
|
||||
return large
|
||||
? mission->GetLargeNameBitmap(player_bitmap_index)
|
||||
: mission->GetSmallNameBitmap(player_bitmap_index);
|
||||
}
|
||||
|
||||
|
||||
@@ -915,7 +925,8 @@ void
|
||||
Check(pilot);
|
||||
|
||||
BitMap
|
||||
*name_bitmap = LookupPlayerNameBitmap(pilot->playerBitmapIndex);
|
||||
*name_bitmap = LookupPlayerNameBitmap(pilot->playerBitmapIndex,
|
||||
(currentSlot == 0) ? True : False); // slot 0 == the own row
|
||||
int
|
||||
box_color = selected ? 0xff : 0,
|
||||
blit_color = selected ? 0 : 0xff;
|
||||
@@ -974,10 +985,21 @@ void
|
||||
*pilot;
|
||||
if (built == False)
|
||||
{
|
||||
pilot = ResolveCommRosterPlayer(currentSlot);
|
||||
if (pilot == NULL)
|
||||
//
|
||||
// SLOT 0 IS THE OWN ROW. Its layout entry is the odd one out
|
||||
// ({180,225} at layout mode 0, KILLS/DEATHS at +0x95/+0xe8
|
||||
// instead of the strip boxes' +0x48), and the shipped Comm page
|
||||
// fills it with the LOCAL pilot -- name, kills, deaths -- while
|
||||
// the seven surrounding boxes stay empty in a solo mission. So
|
||||
// slot 0 takes the mission player directly; only slots 1..7 come
|
||||
// from the pod roster.
|
||||
//
|
||||
pilot = (currentSlot == 0)
|
||||
? local_player
|
||||
: ResolveCommRosterPlayer(currentSlot);
|
||||
if (pilot == NULL && currentSlot > 0)
|
||||
{
|
||||
built = True; // past the first empty slot -> rest empty this cycle
|
||||
built = True; // past the first empty roster slot -> rest empty
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user