From 01231aeb98b6fdcf73c1d7accf9acdfe7ce9d571 Mon Sep 17 00:00:00 2001 From: megazig Date: Wed, 11 Mar 2009 23:44:52 -0500 Subject: fixed some ua stuff --- brlyt.c | 184 +++++++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 136 insertions(+), 48 deletions(-) diff --git a/brlyt.c b/brlyt.c index 7123b1d..4ebf2f8 100644 --- a/brlyt.c +++ b/brlyt.c @@ -99,24 +99,21 @@ unsigned short short_swap_bytes(unsigned short short1) return *newShort; } -int bit_extract(unsigned int num, unsigned int start, unsigned int end) +unsigned int bit_extract(unsigned int num, unsigned int start, unsigned int end) { if (end == 100) end = start; //simple bitmask, figure out when awake //unsigned int mask = (2**(31 - start + 1) - 1) - (2**(31 - end) - 1) unsigned int mask; int first = 0; - int firstMask = 0; - if (start<32) firstMask = 1; - + int firstMask = 1; for (first;first<31-start+1;first++) { firstMask *= 2; } firstMask -= 1; first = 0; - int secondMask = 0; - if (end<31) secondMask = 1; + int secondMask = 1; for (first;first< 31-end;first++) { @@ -124,23 +121,16 @@ int bit_extract(unsigned int num, unsigned int start, unsigned int end) } mask = firstMask = secondMask; int ret = (num & mask) >> (31 - end); + //printf("%08x, %08x, %08x, %08x\n", firstMask, secondMask, mask, ret); return ret; } /* void get_opt(char* chunk, int startpos, bool enabled, int size, char* item_type) { -// if (!enabled) { -// return None, startpos - if (item_type != "None") { - //parse_data is your memcopy from chunk to struct_item_type - ret = parse_data(chunk[startpos:startpos+size], item_type) - }else if (size == 4) { - ret = struct.unpack('>I', chunk[startpos:startpos+4])[0] - }else if (size % 4 == 0) { - ret = struct.unpack('>' + 'I'*(size/4), chunk[startpos:startpos+size]) - }else - raise Exception('unhandled') + //parse_data is your memcopy from chunk to struct_item_type + ret = parse_data(chunk[startpos:startpos+size], item_type) + BRLYTReadDataFromMemory(&ibrlyt_item_type, BRLYT_file, sizeof(brlyt_item_type)); return ret, startpos + size } @@ -153,7 +143,8 @@ void get_array(char *chunk, int startpos, int array_size, int item_size, char *i for (n;n disappears. //# 2nd --> no visible effect. @@ -481,32 +502,99 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file) //# 4th --> no visible effect. //# 4 * flags[6] - mat['ua4'], mpos = get_opt(chunk, mpos, bit_extract(flags, 6), 4, ' 4b') + n = 0; + for (n;nI', chunk[pos+4:pos+8]) - if next_offset - 8 != mpos: - mat['~_insane'] = next_offset - 8 - mpos //# Extra shit we di dn't parse :( - } - mat['unk_bit_5'] = bit_extract(flags, 5) - mat['unk_bits_0_3'] = bit_extract(flags, 0, 3) //# Overwritten by stu ff - vars['materials'].append(mat) - pos += 4 - */ + n = 0; + for (n;nI', chunk[pos+4:pos+8]) +// if next_offset - 8 != mpos: +// mat['~_insane'] = next_offset - 8 - mpos //# Extra shit we di dn't parse :( +// } +// mat['unk_bit_5'] = bit_extract(flags, 5) +// mat['unk_bits_0_3'] = bit_extract(flags, 0, 3) //# Overwritten by stu ff +// vars['materials'].append(mat) +// pos += 4 + } } -- cgit v1.3.1