Page 3 of 3
Posted: 2008-02-14 23:59:52
by Grin
хз что аза параметры
Заголовок где смотрел везде 0
Старт везде где смотрел равен первому цвету в палитре
а Енд не совпадает в большей части с последним в палитре...
мозможно это пограничные цвета... надо попробовать по игратся сними, просто по тупому меняешь их кардинально, интересны значения 0.
вот вроде все
Posted: 2008-02-15 00:08:05
by Destruction
http://www.d2-life.com/netgame/file_formats_gb.htm
Тут по этому делу какие-то комментарии походу.. Правда фиг прочесть

Posted: 2008-02-15 00:23:10
by Grin
можно клиент по ковырять если очень интересно... просто по мне это гораздо быстрей на практике проверить
Posted: 2008-02-15 00:59:27
by Destruction
Та не, не интересно.
У меня и без них нормуль работает.
Я от делать нечего заинтересовался побитовыми операторами.. сила сцуко
Написал менялку местами двух байтов
$c = 0x1234;
$c = ( ( $c & 0xFF ) << 8 ) | ( $c >> 8 );
Йа крут

Надо что-нибудь почитать..
Всё, пора спать.
Posted: 2008-02-15 17:44:12
by Destruction
Code: Select all
<?php
$hues_file = "hues.mul";
$fp = fopen( $hues_file, "rb" );
$colors = array();
while( $row = fread( $fp, 0x02C4 ) ){
for( $i = 0; $i < 8; $i ++ ){
$colors[] = substr( $row, 88 * $i + 68 + 4, 20 );
}
}
fclose( $fp );
print_r( $colors );
?>
Code: Select all
[1055] => SkinHue #1055
[1056] => SkinHue #1056 ↕ ♦ !:
[1057] => SkinHue #1057 ♦ ♥♦
[1058] => test X‼ ♦ 93♫tagLVFI
[1059] => MULTI_OBJ_TO_OBJ♫ ♦
[1060] => MARSHAL_SIZING_ROUT
♦ J►1061] => CK ♦ ▌‼♦UUID
Жесть

Цэ мусор видимо, а читать имя нужно до 0x00.
Posted: 2008-02-15 20:00:27
by Grin
ну опять таки на томже стартиксе есть инфа что там мусора много, да и если посмотреть нормальным хью эдитором то там сразу видно где мусор живет.
Под имя выделяется 20 байт естествено они все могут не использоватся, но при этом если имя 20 то терменирующего 0 может и не быть... по этому для уверености лутше использовать имена до 19 и терменировать нулем (C строка)
Posted: 2008-02-21 12:30:41
by Destruction
Блин, сначала думал меня глючит - но у меня все байты идут ровно в обратном порядке, чем на стратиксе написано.
Сейчас читал доку по формату BMP - там тоже самое.. Скажи мне, почему например DWORD должен читаться с конца?..
Т.е. написано у меня в HEX: 36000F00, а читать это нужно как 00F00036.. почему так?
PS: И такой вопрос, LONG - это сколько?) Я так полагаю, это от чего-то зависимая величина, но в одном файле - постоянная, верно ?)
Posted: 2008-02-21 12:48:30
by Grin
ну вот заблудились в жлементарном...
Сие есть архитектурная зависемость... есть соглашение bigEndian и littleEndian.
Архитектура IA-32 использует littleEndian, тоесть младший значущий байт идет первым, а старший последним.
LONG 32 разрядное целое знаковое число.
Posted: 2008-02-21 13:21:35
by Destruction
Понятно. Спасибо, расставил всё по местам..
Блин, на википедии непонятно написано.. у них нету struct CIEXYZTRIPLE ...
Придётся видимо гуглить...
Добавлено:
Вроде нашёл. Одно непонятно:
Code: Select all
alias int FXPT2DOT30;
alias int* LPFXPT2DOT30;
struct CIEXYZ {
FXPT2DOT30 ciexyzX;
FXPT2DOT30 ciexyzY;
FXPT2DOT30 ciexyzZ;
}
struct CIEXYZTRIPLE {
CIEXYZ ciexyzRed;
CIEXYZ ciexyzGreen;
CIEXYZ ciexyzBlue;
}
Так сколько это получается LPFXPT2DOT30 ?
PS: Сорри за глупые вопросы, я просто не читал на эту тему абсолютно никакой литературы - всё по твоим наставлениям руководствуюсь
PPS: Нашёл почти тоже самое в msdn - положил в закладки, будем учится...
Добавлено:
Путём нехитрых манипуляций, пришёл к выводу, что LPFXPT2DOT30 - это 4 байта.. подробности можно опустить

Posted: 2008-02-21 14:09:16
by Grin
нахрена тебе это???
Posted: 2008-02-21 14:11:20
by Destruction
Grin wrote:нахрена тебе это???
БМПгу считать хочу.. а в пхп нема функции

Posted: 2008-02-21 14:13:57
by Grin
так чего ты паришься какието структуры нашел... свои апиши если так надо. описание бмп есть.. соответствено есть описание структуры даных. В стати в бмп можно инфу прятать ввиду струкруры.