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