diff options
author | 2007-12-17 15:19:59 +0000 | |
---|---|---|
committer | 2007-12-17 15:19:59 +0000 | |
commit | 7b77f1218624ea26dbb2efd85a19f795f5d4e02e (patch) | |
tree | 19209304095572b4fd61c2a2d6a5aa75c4e471ad /src/lib/util/jedparse.h | |
parent | 3da7f476068b3ffef713218ba2fc1bd5030f2c38 (diff) |
Initial checkin of MAME 0.121.mame0121
Diffstat (limited to 'src/lib/util/jedparse.h')
-rw-r--r-- | src/lib/util/jedparse.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/lib/util/jedparse.h b/src/lib/util/jedparse.h new file mode 100644 index 00000000000..4697914cfac --- /dev/null +++ b/src/lib/util/jedparse.h @@ -0,0 +1,89 @@ +/*************************************************************************** + + jedparse.h + + Parser for .JED files into raw fusemaps. + + Copyright (c) 1996-2007, Nicola Salmoria and the MAME Team. + Visit http://mamedev.org for licensing and usage restrictions. + +***************************************************************************/ + +#ifndef __JEDPARSE_H__ +#define __JEDPARSE_H__ + +#include "osdcore.h" + + + +/*************************************************************************** + CONSTANTS +***************************************************************************/ + +#define JED_MAX_FUSES (65536) + +/* error codes */ +#define JEDERR_NONE 0 +#define JEDERR_INVALID_DATA 1 +#define JEDERR_BAD_XMIT_SUM 2 +#define JEDERR_BAD_FUSE_SUM 3 + + + +/*************************************************************************** + TYPE DEFINITIONS +***************************************************************************/ + +typedef struct _jed_data jed_data; +struct _jed_data +{ + UINT32 numfuses; /* number of defined fuses */ + UINT8 fusemap[JED_MAX_FUSES / 8];/* array of bit-packed data */ +}; + + + +/*************************************************************************** + FUNCTION PROTOTYPES +***************************************************************************/ + +/* parse a file (read into memory) into a jed_data structure */ +int jed_parse(const void *data, size_t length, jed_data *result); + +/* output a jed_data structure into a well-formatted JED file */ +size_t jed_output(const jed_data *data, void *result, size_t length); + +/* parse a binary JED file (read into memory) into a jed_data structure */ +int jedbin_parse(const void *data, size_t length, jed_data *result); + +/* output a jed_data structure into a binary JED file */ +size_t jedbin_output(const jed_data *data, void *result, size_t length); + + + +/*************************************************************************** + INLINE FUNCTIONS +***************************************************************************/ + +INLINE int jed_get_fuse(const jed_data *data, UINT32 fusenum) +{ + if (fusenum < JED_MAX_FUSES) + return (data->fusemap[fusenum / 8] >> (fusenum % 8)) & 1; + else + return 0; +} + + +INLINE void jed_set_fuse(jed_data *data, UINT32 fusenum, UINT8 value) +{ + if (fusenum < JED_MAX_FUSES) + { + /* set or clear the bit as appropriate */ + if (value) + data->fusemap[fusenum / 8] |= (1 << (fusenum % 8)); + else + data->fusemap[fusenum / 8] &= ~(1 << (fusenum % 8)); + } +} + +#endif /* __JEDPARSE_H__ */ |