ah, well, finally enabled proper backtracing.
and with devurandom's help i tried some tracing myself.
1. description:
- i load earlier attached savegame
- game gets loaded but without the hex-menu (lower left) and the energy bar
- i reload attached savegame
- game gets loaded with the hex-menu but still without the energy bar
- i hit the fly button in the top left and the transport leaves for the next map
- i order any unit to fire somewhere and the game crashes on projectile impact (which is not drawn)
2. attempt to trace the issue:
#3 0x0000000000566d9d in pie_Draw3DShape2 (shape=0x0 [...] at piedraw.c:347
was the starting point. finally i ended up with that code block:
Code: Select all
if(GetGameMode() == GS_NORMAL)
{
psStats->pMuzzleGraphic = (iIMDShape *) resGetData("IMD", muzzleGfx);
if (psStats->pMuzzleGraphic == NULL)
{
debug( LOG_ERROR, "Cannot find the muzzle PIE for record %s", getStatName(psStats) );
abort();
return FALSE;
}
psStats->pInFlightGraphic = (iIMDShape *) resGetData("IMD", flightGfx);
if (psStats->pInFlightGraphic == NULL)
{
debug( LOG_ERROR, "Cannot find the flight PIE for record %s", getStatName(psStats) );
abort();
return FALSE;
}
psStats->pTargetHitGraphic = (iIMDShape *) resGetData("IMD", hitGfx);
if (psStats->pTargetHitGraphic == NULL)
{
debug( LOG_ERROR, "Cannot find the target hit PIE for record %s", getStatName(psStats) );
abort();
return FALSE;
}
psStats->pTargetMissGraphic = (iIMDShape *) resGetData("IMD", missGfx);
if (psStats->pTargetMissGraphic == NULL)
{
debug( LOG_ERROR, "Cannot find the target miss PIE for record %s", getStatName(psStats) );
abort();
return FALSE;
}
psStats->pWaterHitGraphic = (iIMDShape *) resGetData("IMD", waterGfx);
if (psStats->pWaterHitGraphic == NULL)
{
debug( LOG_ERROR, "Cannot find the water hit PIE for record %s", getStatName(psStats) );
abort();
return FALSE;
}
//trail graphic can be null
if (strcmp(trailGfx, "0"))
{
psStats->pTrailGraphic = (iIMDShape *) resGetData("IMD", trailGfx);
if (psStats->pTrailGraphic == NULL)
{
debug( LOG_ERROR, "Cannot find the trail PIE for record %s", getStatName(psStats) );
abort();
return FALSE;
}
}
else
{
psStats->pTrailGraphic = NULL;
}
}
Extending the if-check to GS_SAVEGAMELOAD apparently fixes that issue.
PS: 2 dumps of that issue:
http://rafb.net/p/zfnz5y95.html
http://rafb.net/p/HKWfXN30.html
PPS: Attached is proposed patch.
PPPS: The issue with missing Hex-Menu (on first load) and missing energy-bar (on any campaign savegameload) remains.