00001 #ifndef _GAMEDATA_H
00002 #define _GAMEDATA_H
00003
00004
00005 #ifdef ALTERED_STRUCTURE_PACKING
00006 #error Make sure that gamedata.h is included before Buzz_inc.h
00007 #undefined
00008 #endif
00009
00010 #include "race.h"
00011 #include <stdio.h>
00012 #include "int_types.h"
00013
00014
00015 extern size_t fread_uint8_t(uint8_t *dst, size_t nelem, FILE *file);
00016 extern size_t fread_uint16_t(uint16_t *dst, size_t nelem, FILE *file);
00017 extern size_t fread_uint32_t(uint32_t *dst, size_t nelem, FILE *file);
00018 extern size_t fread_int8_t(int8_t *dst, size_t nelem, FILE *file);
00019 extern size_t fread_int16_t(int16_t *dst, size_t nelem, FILE *file);
00020 extern size_t fread_int32_t(int32_t *dst, size_t nelem, FILE *file);
00021 extern size_t fwrite_uint8_t(const uint8_t *src, size_t nelem, FILE *file);
00022 extern size_t fwrite_uint16_t(const uint16_t *src, size_t nelem, FILE *file);
00023 extern size_t fwrite_uint32_t(const uint32_t *src, size_t nelem, FILE *file);
00024 extern size_t fwrite_int8_t(const int8_t *src, size_t nelem, FILE *file);
00025 extern size_t fwrite_int16_t(const int16_t *src, size_t nelem, FILE *file);
00026 extern size_t fwrite_int32_t(const int32_t *src, size_t nelem, FILE *file);
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091 struct oLIST {
00092 int16_t aIdx;
00093 int16_t sIdx;
00094 };
00095 #define sizeof_oLIST 4
00096 extern size_t fread_oLIST(struct oLIST *dst, size_t num, FILE *f);
00097
00098 struct oGROUP {
00099 char ID[10];
00100 struct oLIST oLIST[5];
00101 };
00102 #define sizeof_oGROUP (10 + 5*sizeof_oLIST)
00103 extern size_t fread_oGROUP(struct oGROUP *dst, size_t num, FILE *f);
00104
00105 struct Table {
00106 char fname[8];
00107 int32_t foffset;
00108 uint16_t size;
00109 };
00110 #define sizeof_Table (8 + 4 + 2)
00111 extern size_t fread_Table(struct Table *dst, size_t num, FILE *f);
00112
00113 struct oFGROUP {
00114 char ID[15];
00115 struct oLIST oLIST[5];
00116 };
00117 #define sizeof_oFGROUP (15 + 5*sizeof_oLIST)
00118 extern size_t fread_oFGROUP(struct oFGROUP *dst, size_t num, FILE *f);
00119
00120
00121
00122 typedef struct {
00123 uint16_t size;
00124 uint32_t offset;
00125 } SimpleHdr;
00126 #define sizeof_SimpleHdr (2+4)
00127 extern size_t fread_SimpleHdr(SimpleHdr *dst, size_t num, FILE *f);
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140 #if 0
00141 typedef struct ReplayItem {
00142 uint8_t Qty;
00143 uint16_t Off[35];
00144 } REPLAY;
00145 #define sizeof_REPLAY (1 + 35*2)
00146 extern size_t fread_REPLAY(REPLAY *dst, size_t num, FILE *f);
00147 extern size_t fwrite_REPLAY(const REPLAY *src, size_t num, FILE *f);
00148 #endif
00149
00150 #endif