and another endian fix

svn-id: r10241
This commit is contained in:
Oliver Kiehl 2003-09-13 20:42:08 +00:00
parent 7eb758f697
commit 52ff6acc1f
3 changed files with 52 additions and 34 deletions

View File

@ -41,6 +41,7 @@
#include "resman.h"
#include "sound.h" // (James22july97) for Clear_fx_queue() called from CacheNewCluster()
#include "sword2.h" // (James11aug97) for CloseGame()
#include "router.h"
// ---------------------------------------------------------------------------
// welcome to the easy resource manager - written in simple code for easy
@ -391,6 +392,27 @@ static void convertEndian(uint8 *file, uint32 len) {
SWAP32(walkGridHeader->numBars);
SWAP32(walkGridHeader->numNodes);
_barData *barData = (_barData *) (file + sizeof(_walkGridHeader));
for (i = 0; i < walkGridHeader->numBars; i++) {
SWAP16(barData->x1);
SWAP16(barData->y1);
SWAP16(barData->x2);
SWAP16(barData->y2);
SWAP16(barData->xmin);
SWAP16(barData->ymin);
SWAP16(barData->xmax);
SWAP16(barData->ymax);
SWAP16(barData->dx);
SWAP16(barData->dy);
SWAP32(barData->co);
barData++;
}
uint16 *node = (uint16 *) (file + sizeof(_walkGridHeader) + walkGridHeader->numBars * sizeof(_barData));
for (i = 0; i < walkGridHeader->numNodes*2; i++)
*node = SWAP_BYTES_16(*node++);
break;
}
case GLOBAL_VAR_FILE:

View File

@ -119,39 +119,6 @@ int8 forceSlidy; // 1 = force the use of slidy router (so solid path not used wh
#define EXTRA_GRID_SIZE 20 // max 20 lines & 20 points
#define O_ROUTE_SIZE 50 // max number of modules in a route
typedef struct
{
int16 x1;
int16 y1;
int16 x2;
int16 y2;
int16 xmin;
int16 ymin;
int16 xmax;
int16 ymax;
int16 dx; // x2 - x1
int16 dy; // y2 - y1
int32 co; // co = (y1 *dx)- (x1*dy) from an equation for a line y*dx = x*dy + co
}_barData;
typedef struct
{
int16 x;
int16 y;
int16 level;
int16 prev;
int16 dist;
}_nodeData;
typedef struct
{
int32 nbars;
_barData *bars;
int32 nnodes;
_nodeData *node;
} _floorData;
typedef struct
{
int32 x;

View File

@ -24,6 +24,9 @@
#include "memory.h"
#include "object.h"
#if !defined(__GNUC__)
#pragma START_PACK_STRUCTS
#endif
typedef struct _walkData
{
@ -32,9 +35,35 @@ typedef struct _walkData
int16 y;
uint8 step;
uint8 dir;
} _walkData;
} GCC_PACK _walkData;
typedef struct
{
int16 x1;
int16 y1;
int16 x2;
int16 y2;
int16 xmin;
int16 ymin;
int16 xmax;
int16 ymax;
int16 dx; // x2 - x1
int16 dy; // y2 - y1
int32 co; // co = (y1 *dx)- (x1*dy) from an equation for a line y*dx = x*dy + co
} GCC_PACK _barData;
typedef struct
{
int16 x;
int16 y;
int16 level;
int16 prev;
int16 dist;
} GCC_PACK _nodeData;
#if !defined(__GNUC__)
#pragma END_PACK_STRUCTS
#endif
int32 RouteFinder(Object_mega *ob_mega, Object_walkdata *ob_walkdata, int32 x, int32 y, int32 dir);