Skip to content

Commit 097d1d8

Browse files
committed
Allow crossnode palette pairs; work-around for Photoshop tRNS bug
1 parent 7904674 commit 097d1d8

5 files changed

Lines changed: 156 additions & 90 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,3 +531,5 @@ palmod/Release/Venture50.txt
531531
palmod/Release/RedEarthE.txt
532532
palmod/Game/bb.txt
533533
palmod/Release/KOF03E.txt
534+
palmod/Release/DANKUGAe.txt
535+
palmod/Debug/DANKUGAe.txt

palmod/Game/Cyberbots_A_DEF.h

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ const UINT16 Cyberbots_A_IMGIDS_USED[] =
2727
indexCyberbots_Vise, // 0xB4
2828
indexCyberbots_Warlock, // 0xB5
2929
indexCyberbots_Bonus, // 0xB6
30-
3130
};
3231

3332
//---MACHINES---
@@ -528,40 +527,39 @@ const sGame_PaletteDataset Cyberbots_A_VISE_PORTRAIT_PALETTES[] =
528527

529528
const sGame_PaletteDataset Cyberbots_A_CYCLONE_P1_PALETTES[] =
530529
{
531-
{ L"P1 Cyclone Top", 0x4Fd66, 0x4Fd86, indexCyberbots_Cyclone, 0x3, &pairFullyLinkedNode },
530+
{ L"P1 Cyclone Top", 0x4Fd66, 0x4Fd86, indexCyberbots_Cyclone, 0x3, &pairNextAndNextAndNextAndNext13 },
532531
{ L"P1 Cyclone Legs", 0x505e6, 0x50606, indexCyberbots_Cyclone, 0x2 },
533532
{ L"P1 Cyclone Arm", 0x50de6, 0x50e06, indexCyberbots_Cyclone, 0x0 },
534533
{ L"P1 Cyclone Weapon", 0x51c06, 0x51c26, indexCyberbots_Cyclone, 0x4 },
535534
};
536535

537536
const sGame_PaletteDataset Cyberbots_A_CYCLONE_P2_PALETTES[] =
538537
{
539-
{ L"P2 Cyclone Top", 0x4Fde6, 0x4Fe06, indexCyberbots_Cyclone, 0x3, &pairFullyLinkedNode },
538+
{ L"P2 Cyclone Top", 0x4Fde6, 0x4Fe06, indexCyberbots_Cyclone, 0x3, &pairNextAndNextAndNextAndNext9 },
540539
{ L"P2 Cyclone Legs", 0x50666, 0x50686, indexCyberbots_Cyclone, 0x2 },
541540
{ L"P2 Cyclone Arm", 0x50e66, 0x50e86, indexCyberbots_Cyclone, 0x0 },
542541
{ L"P2 Cyclone Weapon", 0x51d86, 0x51da6, indexCyberbots_Cyclone, 0x4 },
543542
};
544543

545544
const sGame_PaletteDataset Cyberbots_A_CYCLONE_P1_UNDERWATER_PALETTES[] =
546545
{
547-
{ L"P1 Cyclone Top Underwater", 0x50066, 0x50086, indexCyberbots_Cyclone, 0x3, &pairFullyLinkedNode },
546+
{ L"P1 Cyclone Top Underwater", 0x50066, 0x50086, indexCyberbots_Cyclone, 0x3, &pairNextAndNextAndNextAndNext5 },
548547
{ L"P1 Cyclone Legs Underwater", 0x508e6, 0x50906, indexCyberbots_Cyclone, 0x2 },
549548
{ L"P1 Cyclone Arm Underwater", 0x510e6, 0x51106, indexCyberbots_Cyclone, 0x0 },
550549
{ L"P1 Cyclone Weapon Underwater", 0x51f06, 0x51f26, indexCyberbots_Cyclone, 0x4 },
551550
};
552551

553552
const sGame_PaletteDataset Cyberbots_A_CYCLONE_P2_UNDERWATER_PALETTES[] =
554553
{
555-
{ L"P2 Cyclone Top Underwater", 0x500e6, 0x50106, indexCyberbots_Cyclone, 0x3, &pairFullyLinkedNode },
554+
{ L"P2 Cyclone Top Underwater", 0x500e6, 0x50106, indexCyberbots_Cyclone, 0x3, &pairNextAndNextAndNextAndNext },
556555
{ L"P2 Cyclone Legs Underwater", 0x50966, 0x50986, indexCyberbots_Cyclone, 0x2 },
557556
{ L"P2 Cyclone Arm Underwater", 0x51166, 0x51186, indexCyberbots_Cyclone, 0x0 },
558557
{ L"P2 Cyclone Weapon Underwater", 0x52086, 0x520a6, indexCyberbots_Cyclone, 0x4 },
559558
};
560559

561-
//Shared-- This could be linked to the normal palette display
562560
const sGame_PaletteDataset Cyberbots_A_CYCLONE_SHARED_PALETTES[] =
563561
{
564-
{ L"Cyclone Drill", 0x51906, 0x51926, indexCyberbots_Cyclone, 0x1 },
562+
{ L"Shared: Cyclone Drill", 0x51906, 0x51926, indexCyberbots_Cyclone, 0x1 },
565563
};
566564

567565
const sGame_PaletteDataset Cyberbots_A_CYCLONE_PORTRAIT_PALETTES[] =
@@ -712,35 +710,35 @@ const sGame_PaletteDataset Cyberbots_A_HELION_PORTRAIT_PALETTES[] =
712710

713711
const sGame_PaletteDataset Cyberbots_A_WARLOCK_P1_PALETTES[] =
714712
{
715-
{ L"P1 Warlock", 0x50306, 0x50326, indexCyberbots_Warlock, 0x0, &pairFullyLinkedNode },
713+
{ L"P1 Warlock", 0x50306, 0x50326, indexCyberbots_Warlock, 0x0, &pairNextAndNext12 },
716714
{ L"P1 Warlock Effects", 0x50aa6, 0x50ac6, indexCyberbots_Warlock, 0x1 },
717715
{ L"P1 Warlock Soul Blade", 0x521e6, 0x52206 },
718716
};
719717

720718
const sGame_PaletteDataset Cyberbots_A_WARLOCK_P2_PALETTES[] =
721719
{
722-
{ L"P2 Warlock", 0x501c6, 0x501e6, indexCyberbots_Warlock, 0x0, &pairFullyLinkedNode },
720+
{ L"P2 Warlock", 0x501c6, 0x501e6, indexCyberbots_Warlock, 0x0, &pairNextAndNext9 },
723721
{ L"P2 Warlock Effects", 0x50a26, 0x50a46, indexCyberbots_Warlock, 0x1 },
724722
{ L"P2 Warlock Soul Blade", 0x52166, 0x52186 },
725723
};
726724

727725
const sGame_PaletteDataset Cyberbots_A_WARLOCK_P1_UNDERWATER_PALETTES[] =
728726
{
729-
{ L"P1 Warlock Underwater", 0x503a6, 0x503c6, indexCyberbots_Warlock, 0x0, &pairFullyLinkedNode },
727+
{ L"P1 Warlock Underwater", 0x503a6, 0x503c6, indexCyberbots_Warlock, 0x0, &pairNextAndNext6 },
730728
{ L"P1 Warlock Effects Underwater", 0x50ba6, 0x50bc6, indexCyberbots_Warlock, 0x1 },
731729
{ L"P1 Warlock Soul Blade Underwater", 0x522e6, 0x52306 },
732730
};
733731

734732
const sGame_PaletteDataset Cyberbots_A_WARLOCK_P2_UNDERWATER_PALETTES[] =
735733
{
736-
{ L"P2 Warlock Underwater", 0x50266, 0x50286, indexCyberbots_Warlock, 0x0, &pairFullyLinkedNode },
734+
{ L"P2 Warlock Underwater", 0x50266, 0x50286, indexCyberbots_Warlock, 0x0, &pairNextAndNextSkipped },
737735
{ L"P2 Warlock Effects Underwater", 0x50b26, 0x50b46, indexCyberbots_Warlock, 0x1 },
738736
{ L"P2 Warlock Soul Blade Underwater", 0x52266, 0x52286 },
739737
};
740738

741739
const sGame_PaletteDataset Cyberbots_A_WARLOCK_SHARED_PALETTES[] =
742740
{
743-
{L"Warlock Soul Drain", 0x51926, 0x51946, indexCyberbots_Warlock, 0x2 },
741+
{L"Shared: Warlock Soul Drain", 0x51926, 0x51946, indexCyberbots_Warlock, 0x2 },
744742
};
745743

746744
const sGame_PaletteDataset Cyberbots_A_WARLOCK_PORTRAIT_PALETTES[] =
@@ -858,7 +856,7 @@ const sGame_PaletteDataset Cyberbots_A_BONUS_INTRO_PALETTES[] =
858856

859857
const sGame_PaletteDataset Cyberbots_A_BONUS_SELECTSCREEN_PALETTES[] =
860858
{
861-
{ L"Select Background", 0x4db84, 0x4dd84 },
859+
{ L"Select Background", 0x4db64, 0x4db84 },
862860
{ L"Select Cursor", 0x41a7e, 0x41a9e },
863861
{ L"Select Timer", 0x41abe, 0x41ade },
864862
{ L"Select Text", 0x41ade, 0x41afe },
@@ -1087,21 +1085,21 @@ const sDescTreeNode Cyberbots_A_BONUS_COLLECTION[] =
10871085
const sDescTreeNode Cyberbots_A_UNITS[] =
10881086
{
10891087
{ L"BX-02 BLODIA", DESC_NODETYPE_TREE, (void*)Cyberbots_A_BLODIA_COLLECTION, ARRAYSIZE(Cyberbots_A_BLODIA_COLLECTION) },
1090-
{ L"S-008 SUPER-8", DESC_NODETYPE_TREE, (void*)Cyberbots_A_SUPER8_COLLECTION, ARRAYSIZE(Cyberbots_A_SUPER8_COLLECTION) },
1091-
{ L"UVA-02 HELION", DESC_NODETYPE_TREE, (void*)Cyberbots_A_HELION_COLLECTION, ARRAYSIZE(Cyberbots_A_HELION_COLLECTION) },
1092-
{ L"RF-004 REPTOS", DESC_NODETYPE_TREE, (void*)Cyberbots_A_REPTOS_COLLECTION, ARRAYSIZE(Cyberbots_A_REPTOS_COLLECTION) },
1093-
{ L"FZ-900J KILLER BEE", DESC_NODETYPE_TREE, (void*)Cyberbots_A_KILLERBEE_COLLECTION, ARRAYSIZE(Cyberbots_A_KILLERBEE_COLLECTION) },
1094-
{ L"GP-N1 GULDIN", DESC_NODETYPE_TREE, (void*)Cyberbots_A_GULDIN_COLLECTION, ARRAYSIZE(Cyberbots_A_GULDIN_COLLECTION) },
1095-
{ L"FZ-100 FORDY", DESC_NODETYPE_TREE, (void*)Cyberbots_A_FORDY_COLLECTION, ARRAYSIZE(Cyberbots_A_FORDY_COLLECTION) },
1096-
{ L"GP-V4 VISE", DESC_NODETYPE_TREE, (void*)Cyberbots_A_VISE_COLLECTION, ARRAYSIZE(Cyberbots_A_VISE_COLLECTION) },
1097-
{ L"P-10033 GAITS", DESC_NODETYPE_TREE, (void*)Cyberbots_A_GAITS_COLLECTION, ARRAYSIZE(Cyberbots_A_GAITS_COLLECTION) },
1098-
10991088
{ L"BX-04S SWORDSMAN", DESC_NODETYPE_TREE, (void*)Cyberbots_A_SWORDSMAN_COLLECTION, ARRAYSIZE(Cyberbots_A_SWORDSMAN_COLLECTION) },
11001089
{ L"BX-07R RIOT", DESC_NODETYPE_TREE, (void*)Cyberbots_A_RIOT_COLLECTION, ARRAYSIZE(Cyberbots_A_RIOT_COLLECTION) },
1090+
{ L"RF-004 REPTOS", DESC_NODETYPE_TREE, (void*)Cyberbots_A_REPTOS_COLLECTION, ARRAYSIZE(Cyberbots_A_REPTOS_COLLECTION) },
11011091
{ L"RF-009 LIGHTNING", DESC_NODETYPE_TREE, (void*)Cyberbots_A_LIGHTNING_COLLECTION, ARRAYSIZE(Cyberbots_A_LIGHTNING_COLLECTION) },
11021092
{ L"RF-027 JACKAL", DESC_NODETYPE_TREE, (void*)Cyberbots_A_JACKAL_COLLECTION, ARRAYSIZE(Cyberbots_A_JACKAL_COLLECTION) },
1093+
{ L"FZ-100 FORDY", DESC_NODETYPE_TREE, (void*)Cyberbots_A_FORDY_COLLECTION, ARRAYSIZE(Cyberbots_A_FORDY_COLLECTION) },
11031094
{ L"FZ-202 TARANTULA", DESC_NODETYPE_TREE, (void*)Cyberbots_A_TARANTULA_COLLECTION, ARRAYSIZE(Cyberbots_A_TARANTULA_COLLECTION) },
1095+
{ L"FZ-900J KILLER BEE", DESC_NODETYPE_TREE, (void*)Cyberbots_A_KILLERBEE_COLLECTION, ARRAYSIZE(Cyberbots_A_KILLERBEE_COLLECTION) },
1096+
{ L"GP-N1 GULDIN", DESC_NODETYPE_TREE, (void*)Cyberbots_A_GULDIN_COLLECTION, ARRAYSIZE(Cyberbots_A_GULDIN_COLLECTION) },
1097+
{ L"GP-V4 VISE", DESC_NODETYPE_TREE, (void*)Cyberbots_A_VISE_COLLECTION, ARRAYSIZE(Cyberbots_A_VISE_COLLECTION) },
11041098
{ L"GP-D2 CYCLONE", DESC_NODETYPE_TREE, (void*)Cyberbots_A_CYCLONE_COLLECTION, ARRAYSIZE(Cyberbots_A_CYCLONE_COLLECTION) },
1099+
{ L"P-10033 GAITS", DESC_NODETYPE_TREE, (void*)Cyberbots_A_GAITS_COLLECTION, ARRAYSIZE(Cyberbots_A_GAITS_COLLECTION) },
1100+
1101+
{ L"S-008 SUPER-8", DESC_NODETYPE_TREE, (void*)Cyberbots_A_SUPER8_COLLECTION, ARRAYSIZE(Cyberbots_A_SUPER8_COLLECTION) },
1102+
{ L"UVA-02 HELION", DESC_NODETYPE_TREE, (void*)Cyberbots_A_HELION_COLLECTION, ARRAYSIZE(Cyberbots_A_HELION_COLLECTION) },
11051103
{ L"X-O WARLOCK", DESC_NODETYPE_TREE, (void*)Cyberbots_A_WARLOCK_COLLECTION, ARRAYSIZE(Cyberbots_A_WARLOCK_COLLECTION) },
11061104
{ L"UNKNOWN 404", DESC_NODETYPE_TREE, (void*)Cyberbots_A_404_COLLECTION, ARRAYSIZE(Cyberbots_A_404_COLLECTION) },
11071105

palmod/Game/GameClass.cpp

Lines changed: 108 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1495,75 +1495,118 @@ BOOL CGameClass::_UpdatePalImg(const sDescTreeNode* pGameUnits, int* rgExtraCoun
14951495

14961496
ClearSetImgTicket(pImgArray);
14971497
}
1498-
else if (paletteDataSet->pPalettePairingInfo->nPalettesToJoin == 3)
1498+
else if ((paletteDataSet->pPalettePairingInfo->nPalettesToJoin == 3) ||
1499+
(paletteDataSet->pPalettePairingInfo->nPalettesToJoin == 4) ||
1500+
(paletteDataSet->pPalettePairingInfo->nPalettesToJoin == 5))
14991501
{
1500-
const INT8 nPeerPaletteDistance1 = paletteDataSet->pPalettePairingInfo->nNodeIncrementToPartner;
1501-
const INT8 nPeerPaletteDistance2 = paletteDataSet->pPalettePairingInfo->nOverallNodeIncrementTo2ndPartner;
1502-
const sGame_PaletteDataset* paletteDataSetToJoin1 = _GetSpecificPalette(pGameUnits, rgExtraCount, nNormalUnitCount, nExtraUnitLocation, NodeGet->uUnitId, NodeGet->uPalId + nPeerPaletteDistance1, ppExtraDef);
1503-
const sGame_PaletteDataset* paletteDataSetToJoin2 = _GetSpecificPalette(pGameUnits, rgExtraCount, nNormalUnitCount, nExtraUnitLocation, NodeGet->uUnitId, NodeGet->uPalId + nPeerPaletteDistance2, ppExtraDef);
1504-
fShouldUseAlternateLoadLogic = true;
1502+
std::vector<const sGame_PaletteDataset*> vsPaletteDataSetToJoin;
1503+
std::vector<int> vnPeerPaletteDistances;
1504+
bool fAllNodesFound = true;
15051505

1506-
ClearSetImgTicket(
1507-
CreateImgTicket(paletteDataSet->indexImgToUse, paletteDataSet->indexOffsetToUse,
1508-
CreateImgTicket(paletteDataSetToJoin1->indexImgToUse, paletteDataSetToJoin1->indexOffsetToUse,
1509-
CreateImgTicket(paletteDataSetToJoin2->indexImgToUse, paletteDataSetToJoin2->indexOffsetToUse)
1510-
))
1511-
);
1512-
1513-
//Set each palette
1514-
sDescNode* JoinedNode[] = {
1515-
GetMainTree()->GetDescNode(Node01, Node02, Node03, -1),
1516-
GetMainTree()->GetDescNode(Node01, Node02, Node03 + nPeerPaletteDistance1, -1),
1517-
GetMainTree()->GetDescNode(Node01, Node02, Node03 + nPeerPaletteDistance2, -1)
1518-
};
1519-
1520-
//Set each palette
1521-
CreateDefPal(JoinedNode[0], 0);
1522-
CreateDefPal(JoinedNode[1], 1);
1523-
CreateDefPal(JoinedNode[2], 2);
1524-
1525-
SetSourcePal(0, NodeGet->uUnitId, nSrcStart, nSrcAmt, nNodeIncrement);
1526-
SetSourcePal(1, NodeGet->uUnitId, nSrcStart + nPeerPaletteDistance1, nSrcAmt, nNodeIncrement);
1527-
SetSourcePal(2, NodeGet->uUnitId, nSrcStart + nPeerPaletteDistance2, nSrcAmt, nNodeIncrement);
1528-
}
1529-
else if (paletteDataSet->pPalettePairingInfo->nPalettesToJoin == 4)
1530-
{
1531-
const INT8 nPeerPaletteDistance1 = paletteDataSet->pPalettePairingInfo->nNodeIncrementToPartner;
1532-
const INT8 nPeerPaletteDistance2 = paletteDataSet->pPalettePairingInfo->nOverallNodeIncrementTo2ndPartner;
1533-
const INT8 nPeerPaletteDistance3 = paletteDataSet->pPalettePairingInfo->nOverallNodeIncrementTo3rdPartner;
1534-
const sGame_PaletteDataset* paletteDataSetToJoin1 = _GetSpecificPalette(pGameUnits, rgExtraCount, nNormalUnitCount, nExtraUnitLocation, NodeGet->uUnitId, NodeGet->uPalId + nPeerPaletteDistance1, ppExtraDef);
1535-
const sGame_PaletteDataset* paletteDataSetToJoin2 = _GetSpecificPalette(pGameUnits, rgExtraCount, nNormalUnitCount, nExtraUnitLocation, NodeGet->uUnitId, NodeGet->uPalId + nPeerPaletteDistance2, ppExtraDef);
1536-
const sGame_PaletteDataset* paletteDataSetToJoin3 = _GetSpecificPalette(pGameUnits, rgExtraCount, nNormalUnitCount, nExtraUnitLocation, NodeGet->uUnitId, NodeGet->uPalId + nPeerPaletteDistance3, ppExtraDef);
1537-
fShouldUseAlternateLoadLogic = true;
1506+
for (int nPairIndex = 0; nPairIndex < paletteDataSet->pPalettePairingInfo->nPalettesToJoin; nPairIndex++)
1507+
{
1508+
switch (nPairIndex)
1509+
{
1510+
default:
1511+
// Fail
1512+
fAllNodesFound = false;
1513+
__fallthrough;
1514+
case 0:
1515+
vnPeerPaletteDistances.push_back(0);
1516+
break;
1517+
case 1:
1518+
vnPeerPaletteDistances.push_back(paletteDataSet->pPalettePairingInfo->nNodeIncrementToPartner);
1519+
break;
1520+
case 2:
1521+
vnPeerPaletteDistances.push_back(paletteDataSet->pPalettePairingInfo->nOverallNodeIncrementTo2ndPartner);
1522+
break;
1523+
case 3:
1524+
vnPeerPaletteDistances.push_back(paletteDataSet->pPalettePairingInfo->nOverallNodeIncrementTo3rdPartner);
1525+
break;
1526+
case 4:
1527+
vnPeerPaletteDistances.push_back(paletteDataSet->pPalettePairingInfo->nOverallNodeIncrementTo4thPartner);
1528+
break;
1529+
}
1530+
1531+
const sGame_PaletteDataset* paletteDataSetToJoin = _GetSpecificPalette(pGameUnits, rgExtraCount, nNormalUnitCount, nExtraUnitLocation, NodeGet->uUnitId, NodeGet->uPalId + vnPeerPaletteDistances[nPairIndex], ppExtraDef);
1532+
1533+
if (paletteDataSetToJoin)
1534+
{
1535+
vsPaletteDataSetToJoin.push_back(paletteDataSetToJoin);
1536+
}
1537+
else
1538+
{
1539+
fAllNodesFound = false;
1540+
}
1541+
}
1542+
1543+
std::vector<sDescNode*> vsJoinedNodes;
1544+
1545+
for (int nNodeIndex = 0; nNodeIndex < paletteDataSet->pPalettePairingInfo->nPalettesToJoin; nNodeIndex++)
1546+
{
1547+
sDescNode* sSearchedNode = nullptr;
1548+
1549+
// We need to readjust the nodes here.
1550+
UINT16 nNodeSize = _GetNodeSizeFromPaletteId(pGameUnits, rgExtraCount, nNormalUnitCount, nExtraUnitLocation, NodeGet->uUnitId, NodeGet->uPalId, ppExtraDef);
1551+
UINT16 nAdjustedCollectionIndex = Node02;
1552+
INT32 nAdjustedButtonIndex = Node03 + vnPeerPaletteDistances[nNodeIndex];
1553+
1554+
while (nAdjustedButtonIndex >= 0)
1555+
{
1556+
sSearchedNode = GetMainTree()->GetDescNode(Node01, nAdjustedCollectionIndex, nAdjustedButtonIndex, -1);
1557+
1558+
if (sSearchedNode)
1559+
{
1560+
break;
1561+
}
1562+
1563+
// This palette isn't in this node: walk to the next available node for this unit.
1564+
nAdjustedButtonIndex -= nNodeSize;
1565+
nAdjustedCollectionIndex++;
1566+
}
15381567

1539-
ClearSetImgTicket(
1540-
CreateImgTicket(paletteDataSet->indexImgToUse, paletteDataSet->indexOffsetToUse,
1541-
CreateImgTicket(paletteDataSetToJoin1->indexImgToUse, paletteDataSetToJoin1->indexOffsetToUse,
1542-
CreateImgTicket(paletteDataSetToJoin2->indexImgToUse, paletteDataSetToJoin2->indexOffsetToUse,
1543-
CreateImgTicket(paletteDataSetToJoin3->indexImgToUse, paletteDataSetToJoin3->indexOffsetToUse)
1544-
)))
1545-
);
1546-
1547-
//Set each palette
1548-
sDescNode* JoinedNode[] = {
1549-
GetMainTree()->GetDescNode(Node01, Node02, Node03, -1),
1550-
GetMainTree()->GetDescNode(Node01, Node02, Node03 + nPeerPaletteDistance1, -1),
1551-
GetMainTree()->GetDescNode(Node01, Node02, Node03 + nPeerPaletteDistance2, -1),
1552-
GetMainTree()->GetDescNode(Node01, Node02, Node03 + nPeerPaletteDistance3, -1)
1553-
};
1554-
1555-
//Set each palette
1556-
CreateDefPal(JoinedNode[0], 0);
1557-
CreateDefPal(JoinedNode[1], 1);
1558-
CreateDefPal(JoinedNode[2], 2);
1559-
CreateDefPal(JoinedNode[3], 3);
1560-
1561-
SetSourcePal(0, NodeGet->uUnitId, nSrcStart, nSrcAmt, nNodeIncrement);
1562-
SetSourcePal(1, NodeGet->uUnitId, nSrcStart + nPeerPaletteDistance1, nSrcAmt, nNodeIncrement);
1563-
SetSourcePal(2, NodeGet->uUnitId, nSrcStart + nPeerPaletteDistance2, nSrcAmt, nNodeIncrement);
1564-
SetSourcePal(3, NodeGet->uUnitId, nSrcStart + nPeerPaletteDistance3, nSrcAmt, nNodeIncrement);
1568+
if (sSearchedNode)
1569+
{
1570+
vsJoinedNodes.push_back(sSearchedNode);
1571+
}
1572+
else
1573+
{
1574+
fAllNodesFound = false;
1575+
}
1576+
}
1577+
1578+
if (fAllNodesFound)
1579+
{
1580+
fShouldUseAlternateLoadLogic = true;
1581+
1582+
std::vector<sImgTicket*> vsImagePairs;
1583+
sImgTicket* pPreviousImage = nullptr;
1584+
1585+
for (int nNodeIndex = (paletteDataSet->pPalettePairingInfo->nPalettesToJoin - 1); nNodeIndex >= 0; nNodeIndex--)
1586+
{
1587+
sImgTicket* pThisImage = CreateImgTicket(vsPaletteDataSetToJoin[nNodeIndex]->indexImgToUse, vsPaletteDataSetToJoin[nNodeIndex]->indexOffsetToUse, pPreviousImage);
1588+
1589+
vsImagePairs.push_back(pThisImage);
1590+
1591+
pPreviousImage = pThisImage;
1592+
}
1593+
1594+
ClearSetImgTicket(vsImagePairs[(paletteDataSet->pPalettePairingInfo->nPalettesToJoin - 1)]);
1595+
1596+
for (int nPairIndex = 0; nPairIndex < paletteDataSet->pPalettePairingInfo->nPalettesToJoin; nPairIndex++)
1597+
{
1598+
//Set each palette
1599+
CreateDefPal(vsJoinedNodes[nPairIndex], nPairIndex);
1600+
1601+
SetSourcePal(nPairIndex, NodeGet->uUnitId, nSrcStart + vnPeerPaletteDistances[nPairIndex], nSrcAmt, nNodeIncrement);
1602+
}
1603+
}
1604+
else
1605+
{
1606+
OutputDebugString(L"ERROR: Invalid palette pairing requested. You probably want to check the linkage here.\n");
1607+
}
15651608
}
1566-
else
1609+
else // Old two pair style: this still allows for offset shifts which we're mostly not using in current previews
15671610
{
15681611
int nXOffs = paletteDataSet->pPalettePairingInfo->nXOffs;
15691612
int nYOffs = paletteDataSet->pPalettePairingInfo->nYOffs;

0 commit comments

Comments
 (0)