Subversion Repositories Games.Carmageddon

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
20 pmbaty 1
#include "genfile.h"
2
#include "datafile.h"
3
#include "harness/trace.h"
4
 
5
#include "CORE/V1DB/chunkids.h"
6
#include <stddef.h>
7
#include <stdlib.h>
8
 
9
br_file_enum_member file_type_FM[10] = {
10
    { FILE_TYPE_NONE, "FILE_TYPE_NONE" },
11
    { FILE_TYPE_ACTORS, "FILE_TYPE_ACTORS" },
12
    { FILE_TYPE_PIXELMAP, "FILE_TYPE_PIXELMAP" },
13
    { FILE_TYPE_LIGHT, "FILE_TYPE_LIGHT" },
14
    { FILE_TYPE_CAMERA, "FILE_TYPE_CAMERA" },
15
    { FILE_TYPE_MATERIAL_OLD, "FILE_TYPE_MATERIAL_OLD" },
16
    { FILE_TYPE_MODEL, "FILE_TYPE_MODEL" },
17
    { FILE_TYPE_ANIMATION, "FILE_TYPE_ANIMATION" },
18
    { FILE_TYPE_TREE, "FILE_TYPE_TREE" },
19
    { FILE_TYPE_MATERIAL, "FILE_TYPE_MATERIAL" },
20
};
21
br_file_enum file_type_F = { BR_ASIZE(file_type_FM), file_type_FM };
22
 
23
br_file_struct_member file_info_FM[2] = {
24
    { DF_TYPE_ENUM_32,  offsetof(file_info, type), "type", &file_type_F },
25
    { DF_TYPE_BR_UINT_32, offsetof(file_info, version), "version", NULL },
26
};
27
br_file_struct file_info_F = { "file_info", BR_ASIZE(file_info_FM), file_info_FM, sizeof(file_info) };
28
 
29
// IDA: int __usercall FopRead_END@<EAX>(br_datafile *df@<EAX>, br_uint_32 id@<EDX>, br_uint_32 length@<EBX>, br_uint_32 count@<ECX>)
30
int FopRead_END(br_datafile* df, br_uint_32 id, br_uint_32 length, br_uint_32 count) {
31
    return 1;
32
}
33
 
34
// IDA: int __usercall FopWrite_END@<EAX>(br_datafile *df@<EAX>)
35
int FopWrite_END(br_datafile* df) {
36
    LOG_TRACE("(%p)", df);
37
 
38
    df->prims->chunk_write(df, CHUNKID_END, 0);
39
    return 1; // Pierre-Marie Baty -- function must return a value
40
}
41
 
42
// IDA: int __usercall FopWrite_FILE_INFO@<EAX>(br_datafile *df@<EAX>, br_uint_32 type@<EDX>)
43
int FopWrite_FILE_INFO(br_datafile* df, br_uint_32 type) {
44
    file_info fi;
45
    LOG_TRACE("(%p, %d)", df, type);
46
 
47
    fi.type = type;
48
    fi.version = 2;
49
    df->prims->chunk_write(df, CHUNKID_FILE_INFO, df->prims->struct_size(df, &file_info_F, &fi));
50
    df->prims->struct_write(df, &file_info_F, &fi);
51
    return 0;
52
}