Разработка и ромхакинг > Ромхакинг
Извлечение данных (видео, звук, музыка) из CD/DVD
ALTERHARD:
SILENT_Pavel, уф... там что-то совсем мудрено. Плагины, кодеки нужны дополнительные, а их не просто найти и инструктаж не догоняю. Подожду кого кто разъяснить за ПС2 версию.
Golk:
--- Цитата: SILENT_Pavel от 07 Июня 2015, 04:03:59 ---Да и достаточно просто. Прямо сейчас наверное не смогу написать полный туториал, но суть набросаю.
Нужен обычный 3D Ripper DX, в нём надо нажать галочку "всегда выдирать текстуры постоянно", затем запустить pcsx2 например последнюю стабильную версию, выбрать плагин директ х9 и выключить все фильтры в его опциях. Запустить эмуль через риппер и в папке риппера будут появляться 2д текстуры с неправильной палитрой. Инвертируешь палитру через Xnview, удаляешь альфа канал и получаешь текстуру. иногда текстура выходит не целиком
Альтернативный способ: http://www.swordofmoonlight.com/bbs/index.php?topic=712.0
файл из темы отдельно прикладываю к сообщению.
---
оффтоп. раз затронули тему риппинга текстур. вдруг кому-то очень нужно будет выдрать текстуры из эмуляторов, где опен гл плагин, а не директХ (например PPSSPP). Для этого дела существует:
https://github.com/dtrebilco/glintercept
но ему нужна особая конфигурация файла gliConfig.ini, выкладываю мой вариант (кто знает как лучше поправьте его):
--- Код: ---//////////////////////////////////////////////////////////////
//
// GLI - openGL Intercept Configuration file
//
//////////////////////////////////////////////////////////////
//
// (Note: all options are case sensetitive)
//
//////////////////////////////////////////////////////////////
//ProfileName = "Basic Logging";
//ProfileDescription = "Does Basic Logging";
//////////////////////////////////////////////////////////////
//
// Log Options:
//
//////////////////////////////////////////////////////////////
//
// LogEnabled - Enable function call logging
//
// LogFlush - If true, will flush the logger after each OpenGL call is made.
// This is useful to catch a OpenGL call that crashes the
// application. This only applies to text file logging.
//
// LogPath - Path to store the logged files. If not specified, files
// will be stored relative to the GLI OpenGL dll.
//
// LogFileName - The name of the file to log to (without extension)
//
// AdditionalRenderCalls - Names of additional OpenGL functions that are to be treated as render calls.
// (extra frame and state info can be dumped at render calls)
//
// LogMaxNumFrames - The maximum number of frames that will be logged.
// This is useful for retrieving startup information from a
// application or limiting the file size on apps that make
// a lot of OpenGL calls (Note: This also affects per-frame logging)
//
// LogFormat - The format of the log. If equal to "XML" (without quotes)
// will log in the XML format. Else, the plain text format is used.
//
// XMLFormat::XSLFile - When the log format is XML, this option specifies the XSL file
// to be used (if any). A XSL file usually formats the XML into a
// readable HTML format.
//
// XMLFormat::BaseDir - The base (or source) directory where the XSL file can be found.
//
//////////////////////////////////////////////////////////////
FunctionLog
{
LogEnabled = True;
LogFlush = False;
//LogPath = "c:\temp\";
LogFileName = "gliInterceptLog"
//AdditionalRenderCalls = ("glClear");
//LogMaxNumFrames = 200;
//LogFormat = XML;
XMLFormat
{
XSLFile = gliIntercept_DHTML2.xsl;
BaseDir = "C:\Program Files\GLIntercept_1_3_0\XSL";
}
}
//////////////////////////////////////////////////////////////
//
// LogPerFrame Options:
//
//////////////////////////////////////////////////////////////
//
// Enabled - Enable logging per frame. If this is true, instead of
// logging all OpenGL calls, the below frame start keys will
// enable the loggers at the start of a frame. The loggers
// will be disabled when the keys are pressed again and the next
// frame is reached (see OneFrameOnly for other options).
//
// Output of logging is saved to a directory called
// Frame_XXXX where XXXX is the frame number that logging
// started.
//
// FrameStartKeys - The keys used to enable/disable logging. Valid values can be any
// combination of 0-9,a-z,f1-f12,ctrl,shift,tab,lwin,rwin,
// print,up,down,left,right,add,sub,insert,delete etc.
//
// OneFrameOnly - If enabled, will only log only one frame per key-press.
// Loggers will be disabled at the end of the next frame.
//
//////////////////////////////////////////////////////////////
LogPerFrame
{
Enabled = False;
FrameStartKeys = (ctrl,shift,f);
OneFrameOnly = True;
}
//////////////////////////////////////////////////////////////
//
// Input Files:
//
//////////////////////////////////////////////////////////////
//
// GLFunctionDefines - The file to retrieve the OpenGL function defines from.
// (The text header files that contain the parameters of OpenGL functions to be logged)
//
// GLSystemLib - The full path to the "real" OpenGL system library. This will be assigned automatically
// so usually does not have to be defined.
//
//////////////////////////////////////////////////////////////
InputFiles
{
GLFunctionDefines = "C:\Program Files\GLIntercept_1_3_0\GLFunctions\gliIncludes.h"
//GLSystemLib = "c:\windows\system32\opengl32.dll"
}
//////////////////////////////////////////////////////////////
//
// Error Checking:
//
//////////////////////////////////////////////////////////////
//
// GLErrorChecking - A OpenGL glGetError() is made after all appropiate OpenGL calls.
// If an error is detected, the error code is logged to the current text/XML log next
// to the function that caused the error.
// (OpenGL Error context is still saved so application invoked glGetError() calls are safe)
//
// ThreadChecking - While GLIntercept is not currently thread-safe, (ie. So you cannot have multiple render
// contexts active at the same time) enabling this option will perform basic thread checking.
// (Will currently check OpenGL calls to see if they are made on the thread with the
// active render context)
//
// BreakOnError - (used with above) Issue programmer debug breakpoint on an error.
// Note that glIntercept alters the stack, so to get a valid call stack when debugging
// you will need to step through some assembly (F10 on VC6) until the stack is restored.
//
// LogOnError - (used with above) Log all OpenGL errors to the GLIntercept error log (gliLog.txt).
//
// ExtendedErrorLog - (used with above) Report all available data about the function the produced the error.
// (ie. Full resolved parameters that were passed to the function are reported.)
// (Enabling this option will cause a severe slowdown even when no errors are produced. Only
// enable when debugging specific errors)
//
// DebuggerErrorLog - Mirror the contents of the error log (gliLog.txt) file to the debuggers' window.
//
//////////////////////////////////////////////////////////////
ErrorChecking
{
GLErrorChecking = True;
ThreadChecking = False;
BreakOnError = False;
LogOnError = True;
ExtendedErrorLog = False;
DebuggerErrorLog = True;
}
//////////////////////////////////////////////////////////////
//
// Image logging:
//
//////////////////////////////////////////////////////////////
//
// LogEnabled - Enabled the image logger. OpenGL textures are saved to the directory
// "Images" under the main log path. Only the texture types specified in
// SaveGLTypes are saved.
//
// RenderCallStateLog - If enabled, each render call issued will list the currently bound
// textures for all texture stages. (works with text and XML logging)
//
// SaveFormats - The image formats to save the textures in. Current valid formats are
// PNG,JPG and TGA. Note that more than one format can be specified.
// (ie. (PNG,TGA) will save all textures twice, once in PNG format, once
// in TGA format)
//
// Note on image formats:
// TGA - Is pixel precise and is the fastest save format but is also the biggest.
// TGA's are also not supported by web browsers (if you use XML with XSL to view the logs).
// PNG - Is pixel precise and is slower to save but is smaller than TGA.
// PNG's are brower compatable.
// JPG - Is a format that does not save alpha and saves colors in a lossy format.
// It is the smallest format and is slower to save than TGA's.
// JPG's are brower compatable.
//
// FlipXAxis - The saving of textures is upside-down by default. Using this option will
// flip the image before saving.
//
// TileCubeMaps - Cube map textures are saved as six individual images. Enabling this option enables
// the six image to be tiled together (flattened cube shaped) and saved as one image.
//
// SaveGLTypes - The types of OpenGL textures to save. Valid options are 1D,2D,3D and CUBE.
// Note: NVRect textures use the 2D option.
//
// SavePbufferTex - This option enables/disables the saving of textures that are bound from a p-buffer.
// Note: P-Buffer textures are saved each time a p-buffer is bound to the texture.
// (ie. no checks are performed to see if the p-buffer has changed)
//
// ImageIcon->Enabled - This enables saving a icon version of all images saved. (useful in XML browser viewing)
//
// ImageIcon->SaveFormat - The format of the save icon images (TGA,PNG or JPG)
//
// ImageIcon->Size - The size of the icons to save
//
//////////////////////////////////////////////////////////////
ImageLog
{
LogEnabled = True;
RenderCallStateLog = True;
SaveFormats = TGA;
FlipXAxis = False;
TileCubeMaps= True;
SaveGLTypes = 2D;
SavePbufferTex = False;
ImageIcon
{
Enabled=False;
SaveFormat = TGA;
Size = 40;
}
}
//////////////////////////////////////////////////////////////
//
// Shader logging
//
//////////////////////////////////////////////////////////////
//
// LogEnabled - Enabled the shader logger. OpenGL shaders/programs are saved to the directory
// "Shaders" under the main log path. Supported types included ARB/NV vertex/fragment
// programs and vertex/fragment GLSL shaders/programs. ATI specific vertex/fragment
// shaders are not supported.
//
// RenderCallStateLog - If enabled, each render call issued will list the currently bound
// shaders (vertex and fragment). (works with text and XML logging)
//
// AttachLogState - If enabled, attitional information such as compile/link state and additional
// driver information may be attached to each shader/program.
// (Currently only GLSL support). Note that enabling this option may force
// shaders to complete compiling immediately.
//
// ValidatePreRender - If the above AttachLogState is enabled, this option will perform a validation of
// the shader before each render and append it to the log. Enabling this option will
// cause the shader to be re-saved at each render call.
// (GLSL only feature via glValidateProgram)
//
// UniformLogPreRender - If the above AttachLogState is enabled, this option will dump all uniforms that
// are active in the shader before each render. Enabling this option will
// cause the shader to be re-saved at each render call. (GLSL only feature)
//
//////////////////////////////////////////////////////////////
ShaderLog
{
LogEnabled = True;
RenderCallStateLog = True;
AttachLogState = True;
ValidatePreRender = False;
UniformLogPreRender = False;
//Future formatting options
}
//////////////////////////////////////////////////////////////
//
// Display List logging
//
//////////////////////////////////////////////////////////////
//
// LogEnabled - Enabled the display list logger. OpenGL display lists are saved to the directory
// "DisplayLists" under the main log path. If a program has a lot of big glBegin/glEnd
// sections in display lists, (ie 1000's of glVertex calls) the application may seem
// un-responsive on startup as all these calls are processed on the list creation.
//
//////////////////////////////////////////////////////////////
DisplayListLog
{
LogEnabled = True;
}
//////////////////////////////////////////////////////////////
//
// Frame(Buffer) logging
//
//////////////////////////////////////////////////////////////
//
// LogEnabled - Enabled the frame(buffer) logger. When enabled, each render call can
// save the pre/post/diff frame buffer (color or depth) to view the changes
// that the render call made. Frame buffer saves are written to a directory
// "Frames" under the main log path.
//
// SaveFormat - The image format to save the frame buffer in. Current options are TGA,PNG, and JPG.
// (see ImageLog::SaveFormats for a decription of the formats)
//
// FrameIcon->Enabled - This enables saving a icon version of all images saved. (useful in XML browser viewing)
//
// FrameIcon->SaveFormat - The format of the save icon images (TGA,PNG or JPG)
//
// FrameIcon->Size - The size of the icons to save
//
// FrameMovie->Enabled - This enables a movie of the "post" and "diff" frame buffers to be saved. If multiple, buffers
// are saved, they are tiled together. (This is useful to quicky inspect how a frame is composed)
// The resulting movie is called FrameMovie.avi in the frame buffer directory.
//
// FrameMovie->Size - The width height of the saved frame buffers. (ie. (640,480)) The resulting movie will be
// larger if multiple buffers are saved at once as they are tiled together.
//
// FrameMovie->FrameRate - The frame rate of the saved movie.
//
// FrameMovie->Compression - The list of compression codecs used to save the movie (usually 4 letters).
// The first valid codec is used. Special codecs are:
// "menu" - will display a menu for the user to select a codec.
// "none" - will use no compression.
//
// ColorBufferLog - The color frame buffer save options. Options can include any combination of
// (pre,post,diff).
// pre - The frame's color buffer is saved before the render call
//
// post - The frame's color buffer is saved after the render call
//
// diff - The difference between the pre and post buffer saves is written.
// (green represents pixels with no differnce. If the image is red,
// no image differences were detected)
//
// DepthBufferLog - The depth frame buffer save options. Options are the same as in ColorBufferLog.
// (Note: Depth-buffer saving can be very slow)
//
// StencilBufferLog - The stencil frame buffer save options. Options are the same as in ColorBufferLog.
// (Note: Stencil-buffer saving can be very slow)
//
// StencilColors - When saving the stencil buffer, it can be useful to save the buffer with color codes.
// (ie stencil value 1 = red) This array supplies index color pairs for each stencil
// value up to 255. The indices must be in order and the colors are in the format
// AABBGGRR. If an index is missing, it will take the value of the index as the color.
// (ie. stencil index 128 = (255, 128,128,128) = greyscale values)
//
//////////////////////////////////////////////////////////////
FrameLog
{
LogEnabled = False;
SaveFormat = JPG;
FrameIcon
{
Enabled = True;
SaveFormat = JPG;
Size = 40;
}
FrameMovie
{
Enabled = False;
Size = (640,480);
FrameRate = 15;
Compression = ("mpg4","divx","none");
}
ColorBufferLog = (pre,post,diff);
//DepthBufferLog = (pre,post,diff);
//StencilBufferLog = (pre,post,diff);
StencilColors = (0,0xFF000000, //Black
1,0xFFFF0000, //Blue
2,0xFFFFFF00, //Light Blue
3,0xFF0000FF, //Red
4,0xFF00FFFF, //Yellow
5,0xFFFF00FF, //Purple
6,0xFF80FFFF, //Bright Yellow
7,0xFFFFFFFF); //White (Note green is not used as that is the "diff" color)
}
//////////////////////////////////////////////////////////////
//
// Function time logging
//
//////////////////////////////////////////////////////////////
//
// NOTE: It is important to not mis-use the results of this logger. OpenGL is a very pipelined
// API and you can not optimize your code based on how long is spent in each function call.
// This logger is only intended for advanced users to determine where pipeline stalls "MAY"
// have occured and determine speeds of operations such as glReadPixels etc.
//
// LogEnabled - Enabled the timer log. When enabled, the time taken inside each OpenGL
// function is added to the main log. (if enabled). The logging reports
// in microseconds (millionth of a second). Only take these results as
// approximate figures as GLIntercept will add a small amout of overhead.
// (More overhead may be indicated in the functions wglGetProcAddress,
// all wgl*(context) functions, glBegin,glEnd,glGetError)
//
// If you are using this logger to determine where pipeline stalls occur,
// ensure to disable ALL other loggers (image/shader/frame etc) as these
// loggers may cause pipline stalls. Also disable parameter logging by
// not defining "GLFunctionDefines" and use flat text logging to get the
// fastest logging possible. (and hence the most accurate results)
//
// LogCutoff - The number of microseconds below which the time value is not reported.
//
//////////////////////////////////////////////////////////////
TimerLog
{
LogEnabled = False;
LogCutoff = 20;
}
//////////////////////////////////////////////////////////////
//
// Plugins
//
//////////////////////////////////////////////////////////////
//
// BaseDir - The base directory where the plugins can be found
//
// Plugins - Listing of all plugins to load (and the locations
// to load from) Under each plugin, plugin specific options
// can be specified.
//
//
//////////////////////////////////////////////////////////////
PluginData
{
BaseDir = "C:\Program Files\GLIntercept_1_3_0\Plugins";
Plugins
{
//
// Name of plugin | Plugin load location
// { Plugin specific options. (See the plugins' config.ini file for options) }
// OpenGLFreeCamera = ("GLFreeCam/GLFreeCam.dll")
// {
// CameraMoveSpeed = 10.0;
// }
}
}
--- Конец кода ---
--- Конец цитаты ---
Спасибо за мануалы. А можно ли заставить texmod работать в ppsspp? В посл.версиях есть же режим d3d9, но он не хочет работать мб тоже нужен какой-то особенный конфиг?
SILENT_Pavel:
--- Цитата: Golk ---В посл.версиях есть же режим d3d9
--- Конец цитаты ---
Рекомендую скачать версию по старее или перключить новую в режиме опен гл и использовать указанный в моём посте конфиг для glintercept. ppsspp должна работать в опен гл так обычно принято. Вообще с опен гл более стабильно получается вытащить текстуры, чем с директа, потому что при некоторых настроек эмулей основанных на директе - риппер вынимает испорченные текстуры из-за фильтров и апскейлов эмуля, а опен гл всегда норм. Нужен пека более менее мощный, на другом этот процесс в glintercept может зависнуть вместе с шиндой.
Golk:
SILENT_Pavel, Я понимаю, что для игры/экспорта ресурсов лучше использовать опенгл, но мне еще интересен способ импорта текстур ретекстур игры и вроде бы texmod это умеет
ALTERHARD:
Есть ли способ извлечения музыки из n-gage приложений без использования телефона?
Yaranga:
ALTERHARD, телефон точно не нужен, там все папки и файлы открыты для просмотра, достаточно картридера для SD-карт.
Но если музыка лежит не в открытом виде, а в каких-либо контейнерах/архивах, понадобится деархиватор. Вообще тут единого рецепта для всех игр нет и быть не может.
ALTERHARD:
Yaranga, у меня получалось распаковывать игру, но музыкальных файлов я почему-то не находил, хотя точно помню что когда был смартфон на симбе, я устанавливал себе ту игру, заходил через менеджер в папку с установленным приложением и находил треки в формате wav
Yaranga:
Что за игра? И во что запакована? BLZ?
Есть тема с архивом всех официально выходивших игр для Гаги: http://rutracker.org/forum/viewtopic.php?t=2955170&start=30
Добавлено позже:
Там все игры лежат в том виде, в каком находились на самих гаговских MMC. То есть wav должны спокойно увидеться.
ALTERHARD:
Yaranga, игра Mile High Pinball.n-gage
Скачал по ссылке... но музыки к данной игре в искомой папке не нашёл, лишь звуки эффектов. Тоже самое о чём я говорил ранее.
На 4пда человек написал как взять треки, только я не понял его сообщения :?
Томахомэ:
Ну что ж, раз уж в этой теме с ресурсами из N-Gage`евских игр начали возится, то думаю, найдётся кто-нибудь, кто разберётся и с мобильными java-играми?
Помните мою проблему с извлечением из одной мобильной игры спрайтов для проекта мод-хака RRR?
Подробно эта проблема описана здесь - http://www.emu-land.net/forum/index.php/topic,2076.msg1151072.html#msg1151072 и здесь - http://www.emu-land.net/forum/index.php/topic,2076.msg1152279.html#msg1152279.
Может быть знает кто-нибудь, что в данной ситуации делать нужно? А то ведь у меня это дело как заступорилось на мёртвой точке, так и не встаёт с неё...
Томахомэ:
Ещё бы я, кстати, хотел выдернуть ресурсы из PC'шных игр Moorhuhnjagd и Moorhuhn 2 (Тоже для воплощения мод-хак -идеи). Хранятся эти ресурсы, для справки (которая, по ходу, должна облегчить дело извлечения), хранятся, как я понял, в псевдоархивах - у первой части этот архив имеет расширение .dat, а у второй - какой-то .wtn.
Сами же игры прикреплены внизу.
Итак, что, думаете, с этими псевдоархивными файлами делать?
mad_le_zisell:
Томахомэ, Спрайты и звуки из второго морхухна.
Томахомэ:
--- Цитата: mad_le_zisell от 29 Августа 2015, 08:57:43 ---Томахомэ, Спрайты и звуки из второго морхухна.
--- Конец цитаты ---
Спасибо! Где достал?
mad_le_zisell:
Томахомэ, Из твоего архива.
Томахомэ:
О, ещё лучше, класс! Теперь осталось только ресурсы из .dat-файла первой части вытащить!
Спасибо большое за помощь!
mad_le_zisell:
Томахомэ, Увы, мой тулзометр его не берёт.
Томахомэ:
--- Цитата: mad_le_zisell от 31 Августа 2015, 10:02:35 ---Томахомэ, Увы, мой тулзометр его не берёт.
--- Конец цитаты ---
Что за "тулзометр" такой?
mad_le_zisell:
Томахомэ, Программа обычная. Я её так называю.
Томахомэ:
Кстати, по поводу извлечения ресурсов из OBAN'а, тут немного в инете пошарил, думаю тут должны помочь серия статей с этого сайта - http://wakko.ru/, вот эта вот страничка - http://gcup.ru/forum/25-14472-1, и особенно вот эта вот - http://www.extractor.ru/ipb/index.php?showtopic=1818.
Только для многих предлагаемых этими страничками действий нужен кто-нибудь, кто в жабе что-нибудь понимает.
Томахомэ:
Ну что ж, теперь графику из OBAN`а удалось худо-бедно достать с помощью одной скромной, но ОЧЕНЬ ПОЛЕЗНОЙ програмки по названием HALO, пожертвованной мне одним добрым человеком (Кстати, если кто интересуется извлечением ресурсов из мобильных java-игр, скачивайте срочно (!!!), внизу висит - её, без преувеличения, вы больше нигде в инете не найдёте - я сам, когда искал, всё, что только мог, обшарил, и всё равно при забубенивании в поисковик попадалось большей частью совсем не то, а если мне и удавалось всё-таки найти страницу, где под Halo подразумевается именно хоть сколько-нибудь связанная с java-играми программа, ссылки на скачку там оказывались или нерабочими, или вели на какой-то совершенно левый говнообменник, который для скачки ещё и регистрации требует - plunder называется. Без вышеупомянутого доброго человека я бы, наверное, эту программку бы так никогда и не нашёл. Поэтому к нему и обратился.). Сама графика - в нижнем архиве "i".
Однако теперь уже имеется другая проблема: спрайты болидов лежат в графических файлах "по частям". Хотелось бы знать, какую по какой логике игра "склеивает" эти кусочки в единый спрайт непосредственно во время гонки. А для этого придётся лезть в код.
Никто из местных джававедов не пробовал декомпилировать игру (инфа про декомпиляторы в 1-й и 3-й ссылках)?
Навигация
Перейти к полной версии