21 #include "sidplayfp/sidtypes.h"
25 #define BUILD_ID(a, b, c, d) ((uint) a << 24 | \
30 #define FORM_ID BUILD_ID('F','O','R','M')
31 #define SMM0_ID BUILD_ID('S','M','M','0')
32 #define INF0_ID BUILD_ID('I','N','F','0')
33 #define ERR0_ID BUILD_ID('E','R','R','0')
34 #define TIME_ID BUILD_ID('T','I','M','E')
35 #define MD5_ID BUILD_ID('M','D','5',' ')
36 #define BODY_ID BUILD_ID('B','O','D','Y')
37 #define BXF_ID BUILD_ID('B','X','F',' ')
40 #define SMM1_ID BUILD_ID('S','M','M','1')
41 #define SMM2_ID BUILD_ID('S','M','M','2')
42 #define SMM3_ID BUILD_ID('S','M','M','3')
43 #define SMM4_ID BUILD_ID('S','M','M','4')
44 #define SMM5_ID BUILD_ID('S','M','M','5')
45 #define SMM6_ID BUILD_ID('S','M','M','6')
46 #define SMM7_ID BUILD_ID('S','M','M','7')
47 #define SMM8_ID BUILD_ID('S','M','M','8')
48 #define SMM9_ID BUILD_ID('S','M','M','9')
49 #define SMM_EX_FLAGS (sizeof(sid_usage_t::memflags_t)-1)
55 const uint_least32_t m_id;
56 const bool m_compulsory;
62 Chunk *match (uint_least32_t
id);
65 bool _read (FILE *file, uint8_t *data, uint_least32_t length, uint_least32_t &remaining);
66 bool _write (FILE *file,
const uint8_t *data, uint_least32_t length, uint_least32_t &count);
69 virtual bool used (
const sid2_usage_t &) {
return true; }
73 : m_id(
id), m_compulsory(compulsory), m_sub(sub), m_next(next) {;}
74 virtual bool read (FILE *file,
sid2_usage_t &usage, uint_least32_t length);
75 virtual bool write (FILE *file,
const sid2_usage_t &usage, uint_least32_t &length);
84 bool read (FILE *file,
sid2_usage_t &usage, uint_least32_t length);
85 bool write (FILE *file,
const sid2_usage_t &usage, uint_least32_t &length);
94 bool read (FILE *file,
sid2_usage_t &usage, uint_least32_t length);
95 bool write (FILE *file,
const sid2_usage_t &usage, uint_least32_t &length);
105 bool read (FILE *file,
sid2_usage_t &usage, uint_least32_t length);
106 bool write (FILE *file,
const sid2_usage_t &usage, uint_least32_t &length);
116 bool read (FILE *file,
sid2_usage_t &usage, uint_least32_t length);
117 bool write (FILE *file,
const sid2_usage_t &usage, uint_least32_t &length);
126 uint8_t m_flags[0x100 * SMM_EX_FLAGS + 1];
130 bool recall (FILE *file,
int &count,
int &extension, uint_least32_t &length);
131 bool store (FILE *file,
int count,
int extension, uint_least32_t &length);
135 :
Chunk(BXF_ID,
false, next, 0),
137 bool read (FILE *file,
sid2_usage_t &usage, uint_least32_t length);
138 bool write (FILE *file,
const sid2_usage_t &usage, uint_least32_t &length);
162 :
Chunk(BODY_ID,
true, next, &m_exflags),
163 m_exflags(0,
this), m_pages(0) {;}
164 bool read (FILE *file,
sid2_usage_t &usage, uint_least32_t length);
165 bool write (FILE *file,
const sid2_usage_t &usage, uint_least32_t &length);
182 :
Chunk(SMM0_ID,
true, next, &m_info),