(svn r22628) -Codechange: Allow passing the textref stack values to use to StartTextRefStackUsage() instead of always using the temporary NewGRF registers.

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
frosch 13 years ago
parent f93c8ce5aa
commit 2158f4f1bf

@ -969,8 +969,9 @@ void RestoreTextRefStackBackup(struct TextRefStack *backup)
* normal string parameters again.
*
* @param numEntries number of entries to copy from the registers
* @param values values to copy onto the stack; if NULL the temporary NewGRF registers will be used instead
*/
void StartTextRefStackUsage(byte numEntries)
void StartTextRefStackUsage(byte numEntries, const uint32 *values)
{
extern TemporaryStorageArray<int32, 0x110> _temp_store;
@ -978,8 +979,9 @@ void StartTextRefStackUsage(byte numEntries)
byte *p = _newgrf_textrefstack->stack;
for (uint i = 0; i < numEntries; i++) {
uint32 value = values != NULL ? values[i] : _temp_store.GetValue(0x100 + i);
for (uint j = 0; j < 32; j += 8) {
*p = GB(_temp_store.GetValue(0x100 + i), j, 8);
*p = GB(value, j, 8);
p++;
}
}

@ -34,7 +34,7 @@ void CleanUpGRFText(struct GRFText *grftext);
bool CheckGrfLangID(byte lang_id, byte grf_version);
void StartTextRefStackUsage(byte numEntries);
void StartTextRefStackUsage(byte numEntries, const uint32 *values = NULL);
void StopTextRefStackUsage();
void SwitchToNormalRefStack();
void SwitchToErrorRefStack();

Loading…
Cancel
Save