aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormegazig <megazig@megazig-desktop.(none)>2009-03-13 23:33:14 -0500
committermegazig <megazig@megazig-desktop.(none)>2009-03-13 23:33:14 -0500
commiteee6c2fdcf5de606d846c14303d441b023332da3 (patch)
tree312ed93a6078622a6c1c8e2ee808899cea05c37c
parent60f2b046583ca0ddec080fcb16341fb8113c0dc6 (diff)
added materials list
Diffstat (limited to '')
-rw-r--r--brlyt.c61
1 files changed, 48 insertions, 13 deletions
diff --git a/brlyt.c b/brlyt.c
index 3420f27..194c365 100644
--- a/brlyt.c
+++ b/brlyt.c
@@ -39,6 +39,10 @@ char pas1_magic[] = "pas1";
static size_t BRLYT_fileoffset = 0;
+char *materials;
+int numberOfMaterials;
+int lengthOfMaterials;
+
static int FourCCsMatch(fourcc cc1, fourcc cc2)
{
dbgprintf("FourCCs\n");
@@ -113,6 +117,38 @@ unsigned int bit_extract(unsigned int num, unsigned int start, unsigned int end)
return ret;
}
+char* getMaterial(int offset)
+{
+/*
+ dbgprintf("length of materials: %08x\n", lengthOfMaterials);
+ int stringOffs=0;
+ char *returnPointer;
+ char *ending;
+ int n;
+ for (n = 0; n < offset+1; n++)
+ {
+ char tpl = 0;
+ ending = memchr(materials+stringOffs, tpl, lengthOfMaterials-stringOffs);
+ int length = ending - (materials+stringOffs);
+ returnPointer = materials + stringOffs;
+ dbgprintf("%p\t%08x\t%p\n", ending, length, materials+stringOffs);
+ stringOffs = stringOffs + length + 1;
+ }
+ return returnPointer;
+*/
+ if (offset == 0) return materials;
+ char *foo = materials + strlen(materials) + 1;
+
+ if (offset > 1)
+ {
+ int n;
+ for (n=0; n<offset-1;n++)
+ foo = foo + strlen(foo) + 1;
+ }
+
+ return foo;
+}
+
int BRLYT_ReadEntries(u8* brlyt_file, size_t file_size, brlyt_header header, brlyt_entry* entries)
{
/* BRLYT_fileoffset = be16(header.lyt_offset);
@@ -218,6 +254,14 @@ void PrintBRLYTEntry_txl1(brlyt_entry entry, u8* brlyt_file)
memcpy(name, nameRead, sizeof(name));
printf(" name: %s\n", name);
BRLYT_fileoffset = tempLocation;
+ int oldsize = sizeof(name);
+ dbgprintf("size of materials before: %08x\n", sizeof(materials));
+ int newSize = lengthOfMaterials+sizeof(name);
+ materials = realloc(materials, newSize);
+ numberOfMaterials += 1;
+ memcpy(materials+lengthOfMaterials, name, sizeof(name));
+ dbgprintf("mats: %s\tnamsize: %08x\tmatsize: %08x\tnewsize: %08x\n", materials+lengthOfMaterials, sizeof(name), lengthOfMaterials, newSize);
+ lengthOfMaterials = newSize;
}
}
@@ -406,9 +450,6 @@ void PrintBRLYTEntry_txt1(brlyt_entry entry, u8* brlyt_file)
void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file)
{
- int w;
- for (w = 0 ; w < be32(entry.length) ; w++ ) dbgprintf("byte %04x: %02x\t %c\n", w, brlyt_file[w+entry.data_location], brlyt_file[w+entry.data_location]);
-
brlyt_numoffs_chunk data;
BRLYT_fileoffset = entry.data_location;
BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_numoffs_chunk));
@@ -432,8 +473,6 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file)
printf(" tev_kcolor: %#x,%#x,%#x,%#x\n", be32(data3.tev_kcolor[0]), be32(data3.tev_kcolor[1]), be32(data3.tev_kcolor[2]), be32(data3.tev_kcolor[3]));
printf(" flags: %08x\n", be32(data3.flags));
- //BRLYT_fileoffset = tempDataLocation;
- //BRLYT_fileoffset
//more junk to do with bit masks and flags
//mat_texref = get_array(chunk, mpos, bit_extract(data3.flags, 28,31), 4, 'texref');
unsigned int flaggs = be32(data3.flags);
@@ -442,19 +481,13 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file)
for (n;n<bit_extract(flaggs, 28,31);n++)
{
brlyt_texref_chunk data4;
- //get_opt(chunk, pos, True, item_size, item_type);
BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_texref_chunk));
printf(" texoffs: %08x\n", be16(data4.tex_offs));
printf(" wrap_s: %08x\n", data4.wrap_s);
printf(" wrap_t: %08x\n", data4.wrap_t);
- //pos += item_size;
+ dbgprintf(" name: %s\n", getMaterial(be32(data4.tex_offs)));
}
-// int a = 0;
-// for (a;a<n;a++)
- //ugly hack for this one, need a textures list
-// printf(" name: smiley.tpl\n");
-// a['tex'] = textures[a['tex_offs']]['name']
// # 0x14 * flags[24-27], followed by
n = 0;
for (n;n<bit_extract(flaggs, 24,27);n++)
@@ -675,7 +708,9 @@ void PrintBRLYTEntries(brlyt_entry *entries, int entrycnt, u8* brlyt_file)
void parse_brlyt(char *filename)
{
- dbgprintf("Made it :)\n");
+ materials = (u8*)malloc(12);
+ numberOfMaterials = 0;
+ lengthOfMaterials = 0;
FILE* fp = fopen(filename, "rb");
if(fp == NULL) {
printf("Error! Couldn't open %s!\n", filename);