summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-01-02 14:04:42 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-01-02 14:04:42 (GMT)
commit8b88557047ad397aac14c0dd161801501f95d97a (patch)
treefd3fd98c2d97f1ddde2bba4694b88cfe12eda2c3 /src
parent4741e7682af209b7cf92900167566a2ce14d4036 (diff)
downloadpowder-8b88557047ad397aac14c0dd161801501f95d97a.zip
powder-8b88557047ad397aac14c0dd161801501f95d97a.tar.gz
Fix missing and incorrect bitshifts preventing the correct reading of life, tmp and dcolour
Diffstat (limited to 'src')
-rw-r--r--src/save.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/save.c b/src/save.c
index faf53ec..361ba8d 100644
--- a/src/save.c
+++ b/src/save.c
@@ -1028,7 +1028,7 @@ int parse_save_OPS(void *save, int size, int replace, int x0, int y0, unsigned c
if(fieldDescriptor & 0x04)
{
if(i >= partsDataLen) goto fail;
- partsptr[newIndex].life |= partsData[i++];
+ partsptr[newIndex].life |= (((unsigned)partsData[i++]) << 8);
}
}
@@ -1041,7 +1041,7 @@ int parse_save_OPS(void *save, int size, int replace, int x0, int y0, unsigned c
if(fieldDescriptor & 0x10)
{
if(i >= partsDataLen) goto fail;
- partsptr[newIndex].tmp |= partsData[i++];
+ partsptr[newIndex].tmp |= (((unsigned)partsData[i++]) << 8);
}
}
@@ -1056,10 +1056,10 @@ int parse_save_OPS(void *save, int size, int replace, int x0, int y0, unsigned c
if(fieldDescriptor & 0x40)
{
if(i+3 >= partsDataLen) goto fail;
- partsptr[newIndex].dcolour = partsData[i++];
- partsptr[newIndex].dcolour |= partsData[i++]<<8;
- partsptr[newIndex].dcolour |= partsData[i++]<<16;
- partsptr[newIndex].dcolour |= partsData[i++]<<24;
+ partsptr[newIndex].dcolour = (((unsigned)partsData[i++]) << 24);
+ partsptr[newIndex].dcolour |= (((unsigned)partsData[i++]) << 16);
+ partsptr[newIndex].dcolour |= (((unsigned)partsData[i++]) << 8);
+ partsptr[newIndex].dcolour |= ((unsigned)partsData[i++]);
}
//Read vx