IPB

Добро пожаловать, гость ( Вход | Регистрация )

История благодарностей участнику Axsis ::: Спасибо сказали: 146 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
Sep 26 2016, 19:14 .DDS DirectX 10
Я просто оставлю это здесь:
https://software.intel.com/en-us/articles/i...re-works-plugin
https://github.com/Microsoft/DirectXTex
_ttp://skyrim.pro/stati/instrumentarij/100-dds-converter
-=CHE@TER=-, Siberian GRemlin,
Sep 24 2016, 15:39 .DDS DirectX 10
Я тогда написал bms для конвертирования в обычный DDS "обычных" текстур, который работал примерно на 90 процентах текстур которые мне попадались.
Под "обычными" я подразумеваю RGBA, DXT1, DXT3, DXT5 текстуры. Это основные форматы, а вообще их там довольно много бывает, и не у всех есть аналоги в DX9, то есть не любую текстуру DX10 можно сконвертировать в DX9

dx10_to_dds.bms
CODE
IDString "DDS "
GoTo 0x54
GetDString FOURCC 4
If FOURCC == "DX10"
Append
Log MEMORY_FILE 0 0x80
Get DATA_SIZE asize
Math DATA_SIZE -= 0x94
Log MEMORY_FILE 0x94 DATA_SIZE
Math DATA_SIZE += 0x80
Append
GoTo 0x80
Get DXGI_FORMAT long
If DXGI_FORMAT == 0x1D
  Set FOURCC long 0x00000000 #RGBA
  PutVarChr MEMORY_FILE 0x50 0x00000041 long
  PutVarChr MEMORY_FILE 0x58 0x00000020 long
  PutVarChr MEMORY_FILE 0x5C 0x000000FF long
  PutVarChr MEMORY_FILE 0x60 0x0000FF00 long
  PutVarChr MEMORY_FILE 0x64 0x00FF0000 long
  PutVarChr MEMORY_FILE 0x68 0xFF000000 long
ElseIf DXGI_FORMAT == 0x48
  Set FOURCC long 0x31545844 #DXT1
ElseIf DXGI_FORMAT == 0x4B
  Set FOURCC long 0x33545844 #DXT3
ElseIf DXGI_FORMAT == 0x4E
  Set FOURCC long 0x35545844 #DXT5
Else
  Print "Unknown DXGI_FORMAT (%DXGI_FORMAT%)"
  CleanExit
EndIf
PutVarChr MEMORY_FILE 0x54 FOURCC long
Get FNAME basename
String FNAME += ".dx9.dds"
Log FNAME 0 DATA_SIZE MEMORY_FILE
Else
Print "Not a DirectX 10 DDS file"
EndIf


dx10_to_dds.cmd
CODE
for /r %%I in (*.dds) do "quickbms.exe" dx10_to_dds.bms %%I %%~dpI >>dx10_to_dds.log
Siberian GRemlin,
Jul 15 2016, 16:05 Уголок параноика
QUOTE(-=CHE@TER=- @ Jul 15 2016, 12:03) [snapback]4127[/snapback]

«Те, кто готовы пожертвовать насущной свободой ради малой толики временной безопасности, не достойны ни свободы, ни безопасности.»
© Бенджамин Франклин

Алсо, по поводу этого выражения есть и такое мнение:
_ttps://habrahabr.ru/post/303736/#comment_9668184

и вообще,
«Никогда не верьте цитатам из интернета.»
В.И. Ленин

А вообще, Siberian GRemlin у нас пророк. Напророчь нам чего-нибудь доброго и позитивного в следующий раз, а?..
-=CHE@TER=-,
Jun 22 2016, 18:41 Жёсткий диск
QUOTE(Siberian GRemlin @ Jun 19 2016, 18:41) [snapback]4104[/snapback]

К сожалению, она не смогла помочь извлечь файлы из диска с разметкой GPT, которую в цикле запорола ОС «Windows XP x64». Это известный недуг данной ОС — при записи в область после 2 ТБ система начинает писать с нуля (зацикливается) и запарывает саму разметку с последующими файлами. И об этом не написано даже в сраной Википедии! Я вычитал это где-то в сети и подтверждаю лично, что так оно и есть. Не перестаю удивляться какие кретины работают в «Microsoft». Если кто-нибудь подскажет как можно восстановить данные с такого винта, то буду признателен.

Смотря сколько успело затереться данных с начала диска, какой размер раздела, файловая система...
Те данные, что перезаписались уже практически точно не восстановить, во всяком случае не на уровне программ. Оставшиеся данные можно попытаться в какой-то удобоваримый вид привести.
На NTFS самая важная часть - таблица файлов $MFT обычно записывается в середине раздела, но к сожалению не всегда. Ещё, в теории, у неё должна быть копия - $MFTMirr, но я глянул на своих разделах - они разные по размеру. Из-за чего - не знаю. Загрузочный сектор раздела в NTFS дублируется в последнем секторе, его можно взять оттуда.
Итого, чисто теоретически, порядок действий:
0. Делаешь образ диска до вмешательства, если что-то пойдёт не так - сможешь попробовать снова/другой способ
1. Ищешь по сигнатуре NTFS последний сектор побитого раздела, понять что это он можно по смещению от начала диска, примерно равному размеру раздела.
2. Из сектора узнаешь точный размер раздела, высчитываешь номер первого сектора, копируешь последний (загрузочный) туда.
3. Создаёшь с нуля таблицу разделов со своими разделами на этом диске.
4. Если повезло и $MFT частично хотя бы цела, то всякие проги для восстановления данных начнут там что-то видеть, возможно с именами, возможно файлы будут даже целые.
-=CHE@TER=-,
Feb 4 2016, 22:07 !Вирусы!
QUOTE(Siberian GRemlin @ Feb 2 2016, 06:42) [snapback]4006[/snapback]

Всё тем же. Проблем нет. Очень редко не выключается игровой режим антивируса (отдельный процесс) после выхода из игры — но он легко сносится через диспетчер задач.

Аналогично, по-прежнему пользуюсь ESET Smart Security. На данный момент 8.0, но имхо, от версии к версии добавляют много левых фич (левых лично для меня - типа антивора или родительского контроля). Так что можно ставить и версию по-старее - хоть 4.2. Базы для старых версий так же обновляются.
-=CHE@TER=-,
May 4 2015, 19:47 Сети
В некоторых модемах такой функционал есть в родной прошивке, некоторые можно прошить чем-нибудь вроде open-wrt или dd-wrt.
У меня некогда был acorp, уже тогда его прошивка меня поразила функционалом, стабильностью и красотой веб-интерфейса, в сравнении с кривыми первыми прошивками d-link'а. Однако, после примерно года работы, (как раз по истечении гарантии), он перестал загружаться а если и загружался, то намертво зависал через пару минут работы. Поэтому у меня об этой фирме смешанные воспоминания...
Однако, проверить необходимый функционал в родной прошивке твоего модема стОит, и если его там нет, то глянуть альтернативные прошивки для этой модели, так как технически это вполне возможно.
Siberian GRemlin,
Oct 26 2014, 23:48 Delphi, Asm, C, WinAPI, PHP, ...
RegEdit'а тоже две версии. Из 32-битных приложений вызывается один и пишет в виртуальные ветки, из 64-битных вызывается другой.
Я однажды долго не мог понять почему .reg файл, импортируемый из тотал командера (32-битного) не показывается в реестре, и в программе (x64) не работают настройки, которые я импортирую.
А потом обнаружил, что regedit, вызванный из тотала и regedit, вызванный через "пуск->выполнить" показывают разный реестр... (в первом случае 32-ух, а во втором - 64-бинтую его версию).
Добавил тот же самый .reg файл в реестр из проводника и всё заработало как и должно было.
PS: а "REGEDIT4" вместо "Windows Registry Editor Version 5.00" писать бесполезно в данном случае...
-=CHE@TER=-,
Sep 18 2014, 14:15 Delphi, Asm, C, WinAPI, PHP, ...
Если не ошибаюсь, оператор перенаправления вывода ">" по-умолчанию перенаправляет только поток STDOUT, а ошибки выводятся в STDERR.
Попробуй так:
CODE
test.exe >>err.txt 2>&1

Это перенаправит STDERR в STDOUT, а его, в свою очередь, в файл err.txt
Подробности:
_ttp://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true
-=CHE@TER=-, Siberian GRemlin,
Jun 3 2014, 19:41 Command & Conquer: Red Alert
Нашел вот по RA2 статью по ключам запуска. Возможно, что-то сработает и в первом?
_http://modenc.renegadeprojects.com/Red_Alert_2
-=CHE@TER=-,
Jan 19 2014, 23:09 Spacebase DF9
QUOTE(Siberian GRemlin @ Dec 25 2013, 21:36) [snapback]3623[/snapback]
К сожалению, не то.
Очень даже то smile.gif
То что это LuaJIT - это 100%, посмотрел в его исходниках формат raw-дампа bytecode - именно он (заголовок 0x1B, "LJ").
_ttp://wiki.luajit.org/Bytecode-2.0#LuaJIT-2.0-Bytecode-Dump-Format

К декомпилятору есть пример. Угадай, по файлам из какой игры biggrin.gif
_ttps://github.com/bobsayshilol/luajit-decomp/wiki/Tutorial
Так что копай дальше в этом направлении
-=CHE@TER=-, Siberian GRemlin,
Jan 4 2014, 21:00 Обмен любезностями
Его таки купили, правда не M$ а некий аггрегатор радио-каналов Radionomy. Судя по всему, в первую очередь им нужен не сам винамп а сервис Shoutcast.
Подробности: _http://www.xakep.ru/post/61837/default.asp
-=CHE@TER=-,
Dec 18 2013, 23:44 Spacebase DF9
Та формат то нормальный, просто почти в каждой проге его поддержка реализована не на 100% - там поддерживаются одни фишки формата, а там - другие.
Например, столкнулся с необходимостью задать маску каналов - это чтобы не перетасовывать местами байты, когда порядок каналов, например, ABRG. Из просмотрщиков только IrfanView справился, и кажется, nvidia texture tools правильно перегнал в tga (но там только конвертер, просмотра нет). Ни XnView, ни Paint.NET, ни фотошоп с плагинами от той же nvidia, ни Imagine не смогли правильно отобразить такой файл - он либо не открывался совсем, либо каналы были перепутаны (то есть маска просто игнорировалась). А в DDS таких фишек, замечу стандартных и документированных, дофига, вот только не очень-то разработчики графических утилит смотрят в ту документацию...
Наиболее адекватной и полной поддержкой, как мне показалось, обладают как раз утилитки от nvidia. Так что попробуй ими dds->tga и потом обратно. nvddsinfo из комплекта может показать специфическую информацию из заголовка в удобоваримой форме (можешь проверить что там у тебя фотошоп дописывает/не дописывает в заголовок)

Сконвертировать текстуры бесплатно, без регистрации и SMS и без скачивания biggrin.gif
tex2dds.bms
[codebox]IDstring "TEX "
Set MEMORY_FILE compressed c3EJVqhhYGBgF+BgQAeMDKQBBSBmwadAAFMIAA== # DDS header
ComType unzip_dynamic
Get FNAME filename
Get W short
Get H short
GoTo 0x14
Get ZSIZE long
Get DATASIZE long
PutVarChr MEMORY_FILE 0x0c H long
PutVarChr MEMORY_FILE 0x10 W long
PutVarChr MEMORY_FILE 0x14 DATASIZE long
PutVarChr MEMORY_FILE 0x54 0x35545844 long # DXT5
Log MEMORY_FILE2 0 0x80 MEMORY_FILE
Append
CLog MEMORY_FILE2 0x20 ZSIZE DATASIZE
Append
String FNAME += ".dds"
Math DATASIZE += 0x80
Log FNAME 0 DATASIZE MEMORY_FILE2
[/codebox]
ну и convert_all.cmd
CODE
for %%I in (*.tex) do "c:\Program Files\QuickBMS\quickbms.exe" tex2dds.bms "%%I" .
:: не потеряй точку в конце первой строки - её плохо там видно :)
-=CHE@TER=-, Siberian GRemlin,
May 20 2013, 20:44 FireFox: addons, extensions, tweaks, etc.
QUOTE(Siberian GRemlin @ May 20 2013, 15:52) [snapback]3477[/snapback]

Ещё такая необычная потребность. Надо сделать снимки (screenshots) допустим 2-5 тысяч страниц и делать это вручную поняное дело не хочется. Какие-нибудь есть готовые решения? Не обязательно через «лису».

_ttp://www.pixel-technology.com/freeware/url2bmp/english/
-=CHE@TER=-, Siberian GRemlin,
Mar 18 2013, 11:59 InstallShield CAB View
Фокус не удался. sad.gif
Там походу имена каталогов привязаны к именам так называемых файловых групп.
Чтоб всё работало, там надо либо патчить GetString() либо править все её вызовы.
-=CHE@TER=-,
Mar 16 2013, 12:17 InstallShield CAB View
QUOTE(-=CHE@TER=- @ Dec 16 2010, 06:18) [snapback]3041[/snapback]

Есть такая утилита как InstallShield 5.x/6.x Cabinet Compression & Maintenance Util (i5comp.exe / i6comp.exe). У меня к ней даже где-то исходные коды на сях валяются, попробую поковырять...

Добавлено:

Распаковщик: i6compx.zip

Unicode, правда, не поддерживается (тупо переводится в ANSI с заменой на "_" левых символов), но главное, что оно всё правильно распаковывает. Флаг 0x04000000 я поставил от балды, т.к. не знаю какой там должен быть правильный, чтобы по нему определить наличие отсутствия Unicode.
Кстати, это новая версия (у меня её не было) и там нет необходимости в ZD*.DLL файлах для распаковки - соответствующая библиотека статически слинкована с программой, что очень удобно.

Недавно понадобилось распаковать одну прогу, обнаружил что имена директорий в CAB'ах там обрабатываются отдельно - при распаковке каталога от его имени остаётся только первый символ (т.к. тот же юникод, и второй байт, равный 0, считается как конец строки).
Глянул исходник, вроде нашел где надо поправить, только вот в Visual Studio 2010 проект не захотел импортироваться sad.gif Я так понимаю ты в более старой компилировал его? Может поправишь?
Похоже, обработка имён каталогов идёт тут (i6comp.c):
CODE
LPDIRARRAY DirsArrayBuild(DFTABLE DFT)
{
    LPDIRARRAY pDs;
    DWORD i;

    pDs = Alloc(sizeof(DIRARRAY) + pCabDesc->cDirs * sizeof(LPSTR));
    for (i = 0; i < pCabDesc->cDirs; i++)
        pDs->Dirs[i] = strdup(GetString(DFT, DFT[i]));
    pDs->Count = pCabDesc->cDirs;

    return pDs;
}


По аналогии с твоим фиксом для имён файлов, здесь должно быть что-то вроде
CODE
LPDIRARRAY DirsArrayBuild(DFTABLE DFT)
{
    LPDIRARRAY pDs;
    DWORD i;
    char stmp[MAX_PATH]; // CXTP

    pDs = Alloc(sizeof(DIRARRAY) + pCabDesc->cDirs * sizeof(LPSTR));
    for (i = 0; i < pCabDesc->cDirs; i++)
        // CXTP/
        if(CabHdr.Version & 0x04000000){
            stmp[0] = '\0';
            WideCharToMultiByte(CP_ACP, 0, GetString(DFT, DFT[i]), -1, stmp, MAX_PATH, "_", NULL);
            pDs->Dirs[i] = strdup(stmp);
        }else{
            pDs->Dirs[i] = strdup(GetString(DFT, DFT[i]));
        }
        // /CXTP
    pDs->Count = pCabDesc->cDirs;

    return pDs;
}
-=CHE@TER=-,
Jul 26 2012, 09:25 HTTP sniffer
Вот ещё наткнулся на аналогичную прогу от NirSoft:
_http://www.nirsoft.net/utils/http_network_sniffer.html
требует установленного WinPCap, зато подходит для захвата из любого браузера.
-=CHE@TER=-, Siberian GRemlin,
May 2 2012, 21:35 Кто чего слушает?
торрент устроит?
(Progressive rock, 70's jazz, soul, funk) Дискография групп с участием Frank Klepacki (I AM, Home Cookin', The Bitters), ALAC (tracks+.cue), lossless
_ttp://rutracker.org/forum/viewtopic.php?t=2615947
-=CHE@TER=-,
Jul 16 2011, 20:00 The Neverhood
google на запрос "c:\NevShot.bmp" первой же выдаёт ссылку на "лицокнигу":
_ttp://www.facebook.com/note.php?note_id=186139338110083
QUOTE
The developers of The Neverhood created secret shortcuts to make testing faster and easier. Most of these "cheats" were removed from the retail version, but a few are still there. While playing the game, hit the ENTER key, type one of the codes below, and then hit ENTER again. When the cheat code is right you will hear a short sound effect. For codes that solve specific puzzles, you have to already be in that part of the game. Here are some codes that you can try out:

FastForward
Makes everything move faster. Doing it again will set the speed back to normal. Great for getting through the Hall of Records!

ScreenSnapShot
Saves a screen shot image to your hard drive as a file called c:\NevShot.bmp. Doing it again will overwrite the previous one, so you have to move or rename the file each time.

HappyBirthdayKlaymen
Gets you out of the Nursery (the first room)

LetMeOutOfHere
Gets you out of the Nursery Lobby (the second room with the rings and Venus Fly Trap)

Please
Solves the panel puzzle in the Dynamite Shack

заметка свежая - от 7 июля. учитывая, что и тема начата 9-го июля, напрашивается вопрос - чем вызвано такое одновременное возобновление интереса к этой игре? или это просто совпадение? smile.gif
-=CHE@TER=-,
Jul 11 2011, 14:15 The Neverhood
В общем каждый символ кода (цифра или буква) сдвигает бит, которым xor'ится хеш, на определённое количество бит влево. Для цифр от 0 до 9 значение сдвига равно от 6 до 15 ($30+$16-$40=6); для букв это значение равно от 1 до 26 ($41-$40=1). Причём сдвиг например для 3-го символа отсчитывается не от 0-го бита а от величины сдвига для 2-го символа. Когда сдвиг превышает размер хеша, т.е. 32 бита, он уменьшается на 32, т.е. гоняется по кругу (те самые "If C >= $20 Then C:=C - $20;").

Для восстановления исходной фразы (на самом деле, лишь одной из множества исходных фраз, дающих одинаковый хеш) нужно проделать следующее:
записываем хеш в двоичном виде, в little endian (для примера рассмотрим хеш $843070C0):
CODE
10000100 00110000 01110000 11000000

и начинаем разбирать зажженные биты от младшего к старшему (справа налево, пронумеровав их от 0 до 31).
Чтобы зажечь 6-й бит нам нужно было сдвинуть единицу (нулевой бит) на 6 бит влево. Сдвигу в 6 бит соответствует 6-я буква - "F". Чтобы зажечь следующий, 7-й, бит нужно сдвинуть на 1 бит (считаем от предыдущего зажженного - от 6-го бита), для этого нужна буква "A".
Далее, для 12-го бита - смещение 5, и соответственно буква "E", и т.д.
Для зажжения всех 9-ти бит нам понадобится минимум 9 букв - "FAEAAFAEE".
По идее, этот код даст такой же хеш как и "fastforward", а значит и действовать будет так же.
Если нужно зажечь 0-й бит в хеше, то, т.к. сделать это сразу не получится, его надо зажигать последним, перепрыгнув через 32 бита (если бы нам надо было зажечь его в нашем примере, то нужно было бы дописать в конец кода ещё букву "A" - "FAEAAFAEEA". Мы получили бы смещение 32, которое превратилось бы в 0 и зажегся бы 0-й бит.)

Описание получилось немного дурацкое, но думаю ты разберёшься unsure.gif
-=CHE@TER=-,
Jul 9 2011, 20:07 The Neverhood
$10410127 - "AACCHFFD" wink.gif
Правда у меня демка с какими-то артефактами работает...
_ttp://fastpic.ru/view/25/2011/0710/5d5d4d76cb7d379fd6feb5c044daacc0.png.html

Алгоритм опишу чуть позже, а может к тому времени и сам разберёшь, он на самом деле довольно прост.
-=CHE@TER=-,
Apr 15 2011, 15:34 !Вирусы!
нет, триальные ключи подходят только на триальную версию EAV.
для обновления бизнес-версии - или левые (ворованные) ключи, или неофициальные сервера обновлений. ключи быстрее умирают, а серваки бывают перегружены. лично я обновляюсь с неоф. серваков.
а вообще глянь ветку на руборде на предмет поиска наиболее подходящего варианта лечения, их немало smile.gif
-=CHE@TER=-,
Apr 14 2011, 15:03 !Вирусы!
QUOTE
При установке главное выбрать ручную инсталляцию компонентов и отключить установку ублюдского Яндекс.Бара.

Теперь я, кажется, знаю отличия бизнес версии biggrin.gif
Попробуй поставить EAVBE - там нет этой годости. По крайней мере в ESSBE её нету.
Ну и ложечка дёгтя: просканируй есетом папки с 64к интро и ломаным софтом (кейгены, кряки).
-=CHE@TER=-,
Mar 23 2011, 10:59 PowerSlave / Exhumed [.PCS]
Первые 4 байта - размер "набора" картинок, (в некотовых файлах встречается более одного набора, но у тебя обрабатывается только первый), потом по 4 байта на размер картинки (ширина*высоту), ширину, высоту, потом сами данные, 4 байта перед палитрой (!!!) - похоже всегда 0x00000001 и потом палитра.
Сразу после первого набора (по смещению, прочитанному в первых 4-х байтах +4) может идти второй набор - снова размер набора, и т.д. В пределах одного набора у всех картинок, похоже, одинаковый размер.
После графических данных, похоже, идёт один (или несколько) звуков. Для звука заголовок, похоже, такой: 4 байта - размер данных, частота, битность, 4 байта 0xFFFFFFFF.
Вообще раз в одном файле и графические данные и звуки, то это походит на анимацию.
-=CHE@TER=-,
Mar 14 2011, 16:28 Сжатие LZX / LZSS
по идее в этом блоке
CODE

        While l > 0 Do
        Begin
          buff[p] := buff[o];
          p:=p + 1;
          loop[lidx] := buff[o];
          lidx:=(lidx + 1) And $fff;
          o := ((o + 1) And $fff);
          l:=l - 1;
        End;

вместо buff[o] надо брать байт loop[o] (в обоих местах)
CODE

        While l > 0 Do
        Begin
          buff[p] := loop[o];
          p:=p + 1;
          loop[lidx] := loop[o];
          lidx:=(lidx + 1) And $fff;
          o := (o + 1) And $fff;
          l:=l - 1;
        End;

по идее так дожно быть.
для того этот второй буфер и нужен был, потому что смещение 'o' отсчитывается от его начала, а данные в буфере "плавают" - lidx (указатель на байт в который мы сейчас запишем новые распакованные данные) циклически увеличивается. unsure.gif
-=CHE@TER=-, Siberian GRemlin,
Mar 13 2011, 22:45 Сжатие LZX / LZSS
QUOTE(-=CHE@TER=- @ Mar 12 2011, 15:47) [snapback]3075[/snapback]

Всё ещё нужна помощь.

если я верно понял асм листинг, то там во входном сегменте данных первые 4096 байт выделяются под временный буфер ("окно" в твоей терминологии), потом 4 байта - размер распакованных данных, потом идут запакованные данные. так вот в этот временный буфер заносятся данные по мере распаковки, и как только размер распакованных данных превышает размер буфера (4096 б) - он начинает затираться с начала. иными словами там хранятся последние 4096 распакованных байта. а смещение считается всегда относительно начала буфера. попробуй реализовать через второй буфер (один выходной и один временный), вместо высчитывания смещения в выходном буфере будешь брать данные из временного по прочитанному в word'е смещению. имхо так проще для понимания.
-=CHE@TER=-, Siberian GRemlin,

3 Страниц V  1 2 3 >
Упрощённая версия Сейчас: 6th December 2019 - 14:04