/////============= LITTLE ENDIEN ============= function bin_read_byte(_bin) { return file_bin_read_byte(_bin); } function bin_read_word(_bin) { var b0 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); return b0 + (b1 << 8); } function bin_read_short(_bin) { var b0 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); var sht = b0 + (b1 << 8); var sig = sht >> 15; sht = sht & ~(1 << 15); return sig? sht - power(2, 15) : sht; } function bin_read_dword(_bin) { var b0 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); var b2 = file_bin_read_byte(_bin); var b3 = file_bin_read_byte(_bin); var dw = b0 + (b1 << 8) + (b2 << 16) + (b3 << 24); return dw; } function bin_read_long(_bin) { var b0 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); var b2 = file_bin_read_byte(_bin); var b3 = file_bin_read_byte(_bin); var lng = b0 + (b1 << 8) + (b2 << 16) + (b3 << 24); var sig = lng >> 31; lng = lng & ~(1 << 31); return sig? lng - power(2, 31) : lng; } function bin_read_fixed(_bin) { var b0 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); var b2 = file_bin_read_byte(_bin); var b3 = file_bin_read_byte(_bin); var fixInt = b0 + (b1 << 8); var fixFrc = b2 + (b3 << 8); return fixInt + bin_fraction(fixFrc, 16); } function bin_read_float(_bin) { var b0 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); var b2 = file_bin_read_byte(_bin); var b3 = file_bin_read_byte(_bin); var flt = b0 + (b1 << 8) + (b2 << 16) + (b3 << 24); var sig = flt >> 31; var expo = (flt & ~(1 << 31)) >> 23; var mant = flt & 0b00000000_01111111_11111111_11111111; var val = (1 + mant) * power(2, expo - 127); return sig? -val : val; } function bin_read_double(_bin) { var b0 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); var b2 = file_bin_read_byte(_bin); var b3 = file_bin_read_byte(_bin); var b4 = file_bin_read_byte(_bin); var b5 = file_bin_read_byte(_bin); var b6 = file_bin_read_byte(_bin); var b7 = file_bin_read_byte(_bin); var dub = int64(b0 + (b1 << 8) + (b2 << 16) + (b3 << 24) + (b2 << 32) + (b3 << 40) + (b2 << 48) + (b3 << 56)); var sig = dub >> 63; var expo = (dub & ~(1 << 63)) >> 52; var mant = dub & 0b00000000_00001111_11111111_11111111_11111111_11111111_11111111_11111111; var val = (1 + mant) * power(2, expo - 1023); return sig? -val : val; } function bin_read_qword(_bin) { var b0 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); var b2 = file_bin_read_byte(_bin); var b3 = file_bin_read_byte(_bin); var b4 = file_bin_read_byte(_bin); var b5 = file_bin_read_byte(_bin); var b6 = file_bin_read_byte(_bin); var b7 = file_bin_read_byte(_bin); return int64(b0 + (b1 << 8) + (b2 << 16) + (b3 << 24) + (b2 << 32) + (b3 << 40) + (b2 << 48) + (b3 << 56)); } function bin_read_long64(_bin) { var b0 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); var b2 = file_bin_read_byte(_bin); var b3 = file_bin_read_byte(_bin); var b4 = file_bin_read_byte(_bin); var b5 = file_bin_read_byte(_bin); var b6 = file_bin_read_byte(_bin); var b7 = file_bin_read_byte(_bin); var lng = int64(b0 + (b1 << 8) + (b2 << 16) + (b3 << 24) + (b2 << 32) + (b3 << 40) + (b2 << 48) + (b3 << 56)); var sig = lng >> 63; lng = lng & ~(1 << 63); return sig? -lng : lng; } function bin_read_chars(_bin, _len) { var ss = ""; repeat(_len) { var utf = bin_read_byte(_bin); ss += chr(utf); } return ss; } function bin_read_string(_bin) { var len = bin_read_word(_bin); var ss = ""; repeat(len) { var utf = bin_read_byte(_bin); ss += chr(utf); } return ss; } function bin_read_point(_bin) { return [ bin_read_long(_bin), bin_read_long(_bin) ]; } function bin_read_size(_bin) { return [ bin_read_long(_bin), bin_read_long(_bin) ]; } function bin_read_rect(_bin) { return [ bin_read_point(_bin), bin_read_size(_bin) ]; } function bin_read_color(_bin) { var r = bin_read_byte(_bin); var g = bin_read_byte(_bin); var b = bin_read_byte(_bin); return make_color_rgb(r, g, b); } function bin_read_pixel(_bin, type) { switch(type) { case 0 : return [ bin_read_byte(_bin), bin_read_byte(_bin), bin_read_byte(_bin), bin_read_byte(_bin) ]; case 1 : return [ bin_read_byte(_bin), bin_read_byte(_bin) ]; case 2 : return [ bin_read_byte(_bin) ]; } return 0; } /////=========== BIG ENDIEN =========== function Bin_read_byte(_bin) { return file_bin_read_byte(_bin); } function Bin_read_word(_bin) { var b1 = file_bin_read_byte(_bin); var b0 = file_bin_read_byte(_bin); return b0 + (b1 << 8); } function Bin_read_short(_bin) { var b1 = file_bin_read_byte(_bin); var b0 = file_bin_read_byte(_bin); var sht = b0 + (b1 << 8); var sig = sht >> 15; sht = sht & ~(1 << 15); return sig? sht - power(2, 15) : sht; } function Bin_read_dword(_bin) { var b3 = file_bin_read_byte(_bin); var b2 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); var b0 = file_bin_read_byte(_bin); var dw = b0 + (b1 << 8) + (b2 << 16) + (b3 << 24); return dw; } function Bin_read_long(_bin) { var b3 = file_bin_read_byte(_bin); var b2 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); var b0 = file_bin_read_byte(_bin); var lng = b0 + (b1 << 8) + (b2 << 16) + (b3 << 24); var sig = lng >> 31; lng = lng & ~(1 << 31); return sig? lng - power(2, 31) : lng; } function Bin_read_fixed(_bin) { var b3 = file_bin_read_byte(_bin); var b2 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); var b0 = file_bin_read_byte(_bin); var fixInt = b0 + (b1 << 8); var fixFrc = b2 + (b3 << 8); return fixInt + bin_fraction(fixFrc, 16); } function Bin_read_float(_bin) { var b3 = file_bin_read_byte(_bin); var b2 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); var b0 = file_bin_read_byte(_bin); var flt = b0 + (b1 << 8) + (b2 << 16) + (b3 << 24); var sig = flt >> 31; var expo = (flt & ~(1 << 31)) >> 23; var mant = flt & 0b00000000_01111111_11111111_11111111; var val = (1 + mant) * power(2, expo - 127); return sig? -val : val; } function Bin_read_double(_bin) { var b7 = file_bin_read_byte(_bin); var b6 = file_bin_read_byte(_bin); var b5 = file_bin_read_byte(_bin); var b4 = file_bin_read_byte(_bin); var b3 = file_bin_read_byte(_bin); var b2 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); var b0 = file_bin_read_byte(_bin); var dub = int64(b0 + (b1 << 8) + (b2 << 16) + (b3 << 24) + (b2 << 32) + (b3 << 40) + (b2 << 48) + (b3 << 56)); var sig = dub >> 63; var expo = (dub & ~(1 << 63)) >> 52; var mant = dub & 0b00000000_00001111_11111111_11111111_11111111_11111111_11111111_11111111; var val = (1 + mant) * power(2, expo - 1023); return sig? -val : val; } function Bin_read_qword(_bin) { var b7 = file_bin_read_byte(_bin); var b6 = file_bin_read_byte(_bin); var b5 = file_bin_read_byte(_bin); var b4 = file_bin_read_byte(_bin); var b3 = file_bin_read_byte(_bin); var b2 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); var b0 = file_bin_read_byte(_bin); return int64(b0 + (b1 << 8) + (b2 << 16) + (b3 << 24) + (b2 << 32) + (b3 << 40) + (b2 << 48) + (b3 << 56)); } function Bin_read_long64(_bin) { var b7 = file_bin_read_byte(_bin); var b6 = file_bin_read_byte(_bin); var b5 = file_bin_read_byte(_bin); var b4 = file_bin_read_byte(_bin); var b3 = file_bin_read_byte(_bin); var b2 = file_bin_read_byte(_bin); var b1 = file_bin_read_byte(_bin); var b0 = file_bin_read_byte(_bin); var lng = int64(b0 + (b1 << 8) + (b2 << 16) + (b3 << 24) + (b2 << 32) + (b3 << 40) + (b2 << 48) + (b3 << 56)); var sig = lng >> 63; lng = lng & ~(1 << 63); return sig? -lng : lng; } function Bin_read_chars(_bin, _len) { var ss = ""; repeat(_len) { var utf = Bin_read_byte(_bin); ss += chr(utf); } return ss; } function Bin_read_string(_bin) { var len = Bin_read_word(_bin); var ss = ""; repeat(len) { var utf = Bin_read_byte(_bin); ss += chr(utf); } return ss; } function Bin_read_point(_bin) { return [ Bin_read_long(_bin), Bin_read_long(_bin) ]; } function Bin_read_size(_bin) { return [ Bin_read_long(_bin), Bin_read_long(_bin) ]; } function Bin_read_rect(_bin) { return [ Bin_read_point(_bin), Bin_read_size(_bin) ]; } function Bin_read_color(_bin) { var r = Bin_read_byte(_bin); var g = Bin_read_byte(_bin); var b = Bin_read_byte(_bin); return make_color_rgb(r, g, b); } function Bin_read_pixel(_bin, type) { switch(type) { case 0 : return [ Bin_read_byte(_bin), Bin_read_byte(_bin), Bin_read_byte(_bin), Bin_read_byte(_bin) ]; case 1 : return [ Bin_read_byte(_bin), Bin_read_byte(_bin) ]; case 2 : return [ Bin_read_byte(_bin) ]; } return 0; }