endianness.c

Go to the documentation of this file.
00001 
00002 
00003 #include "assert.h"
00004 #include "Buzz_inc.h"
00005 #include "externs.h"
00006 
00007 // Need these functions to always exist
00008 uint32_t _Swap32bit(uint32_t value)
00009 {
00010       return (( value >> 24) | ((value >> 8) & 0x0000FF00) | ((value << 8) & 0x00FF0000) | (value << 24));
00011 }
00012 
00013 uint16_t _Swap16bit(uint16_t value)
00014 {
00015       return ((value << 8) | (value >> 8));
00016 }
00017 
00018 // This will swap all the player structures
00019 void SwapGameDat(void)
00020 {
00021     i16 i,j;
00022 
00023     Swap32bit_alt(*((ui32*)&Data->EMark));
00024     Swap32bit_alt(Data->Checksum);
00025 
00026     for (j = 0; j < 28; j++)
00027     {
00028         Swap16bit_alt(Data->Prestige[j].Points[0]);
00029         Swap16bit_alt(Data->Prestige[j].Points[1]);
00030     }
00031     
00032     for (j = 0; j < 2 ; j++) {
00033         Swap16bit_alt(Data->P[j].Cash);
00034         Swap16bit_alt(Data->P[j].Budget);
00035         Swap16bit_alt(Data->P[j].Prestige);
00036         
00037         for (i = 0; i < 5; i++)
00038         {
00039             Swap16bit_alt(Data->P[j].PrestHist[i][0]);
00040             Swap16bit_alt(Data->P[j].PrestHist[i][1]);
00041             
00042             Swap16bit_alt(Data->P[j].PresRev[i]);
00043             
00044             Swap16bit_alt(Data->P[j].Spend[i][0]);
00045             Swap16bit_alt(Data->P[j].Spend[i][1]);
00046             Swap16bit_alt(Data->P[j].Spend[i][2]);
00047             Swap16bit_alt(Data->P[j].Spend[i][3]);
00048         }
00049         
00050         Swap16bit_alt(Data->P[j].tempPrestige[0]);
00051         Swap16bit_alt(Data->P[j].tempPrestige[1]);
00052         
00053         for (i = 0; i < 40; i++)
00054         {
00055             Swap16bit_alt(Data->P[j].BudgetHistory[i]);
00056             Swap16bit_alt(Data->P[j].BudgetHistoryF[i]);
00057         }
00058         
00059         for (i=0;i<3;i++) {
00060             Swap16bit_alt(Data->P[j].Probe[i].InitCost);
00061             Swap16bit_alt(Data->P[j].Probe[i].UnitWeight);
00062             Swap16bit_alt(Data->P[j].Probe[i].MaxPay);
00063             Swap16bit_alt(Data->P[j].Probe[i].Safety);
00064         };
00065         for (i=0;i<5;i++) {
00066             Swap16bit_alt(Data->P[j].Rocket[i].InitCost);
00067             Swap16bit_alt(Data->P[j].Rocket[i].UnitWeight);
00068             Swap16bit_alt(Data->P[j].Rocket[i].MaxPay);
00069             Swap16bit_alt(Data->P[j].Rocket[i].Safety);
00070         };
00071         for (i=0;i<7;i++) {
00072             Swap16bit_alt(Data->P[j].Manned[i].InitCost);
00073             Swap16bit_alt(Data->P[j].Manned[i].UnitWeight);
00074             Swap16bit_alt(Data->P[j].Manned[i].MaxPay);
00075             Swap16bit_alt(Data->P[j].Manned[i].Safety);
00076         };
00077         for (i=0;i<7;i++) {
00078             Swap16bit_alt(Data->P[j].Misc[i].InitCost);
00079             Swap16bit_alt(Data->P[j].Misc[i].UnitWeight);
00080             Swap16bit_alt(Data->P[j].Misc[i].MaxPay);
00081             Swap16bit_alt(Data->P[j].Misc[i].Safety);
00082         };      
00083         
00084         for (i = 0; i< 65; i++)
00085         {
00086             Swap16bit_alt(Data->P[j].Pool[i].Prestige);
00087         }
00088         
00089         
00090         Swap16bit_alt(Data->P[j].PastMis);
00091 
00092         for (i = 0; i < 30; i++)
00093             Swap16bit_alt(Data->P[j].PastIntel[i].num);
00094 
00095     }
00096     // End of GameDatSwap
00097 }
00098 
00099 #ifdef __BIG_ENDIAN__
00100 void
00101 SwapPatchHdr(PatchHdr *hdr)
00102 {
00103     assert(hdr);
00104 
00105     Swap16bit(hdr->w);
00106     Swap16bit(hdr->h);
00107     Swap16bit(hdr->size);
00108     Swap32bit(hdr->offset);
00109 }
00110 
00111 void
00112 SwapPatchHdrSmall(PatchHdrSmall *hdr)
00113 {
00114     assert(hdr);
00115 
00116     Swap16bit(hdr->size);
00117     Swap32bit(hdr->offset);
00118 }
00119 #endif
00120 
00121 

Generated on Fri Sep 28 00:35:45 2007 for raceintospace by  doxygen 1.5.3