Constructor / Street Wars Underground [DATA.FIL]
#1
Отправлено 04 March 2008 - 19:31
есть старые еще DOSовские игры Constructor и Street Wars Undeground
ресы в них упакованы в нечто под названием data.fil
звук я расковырял - не сложно оказалось, а вот с графикой не асилил.
если кто решил уже проблему буду признателен за любую помощь.
#2
Отправлено 06 March 2008 - 08:52
(облегчи нашу ношу))
#3
Отправлено 08 March 2008 - 19:50
1. распаковка. решена до меня гарным хлопцем Rheini.
распаковщик тут: http://forum.xentax....php?f=10&t=2689
2. выдергивание картинки из полученных SPR файлов он до конца ни асилил.
но натолкнул меня на пару мыслей: http://forum.xentax....php?f=18&t=2696
далее сам написал программульку, которая извлекает ресы из SPR файлов от игр "Constructor" и "Street Wars" она же Constructor2
код выкладываю как копипаст из проги, саму прогу не дам. ибо стыдно за содержание )))
вот функция:
Код |
void CExtractorDlg::OnBnClickedButton() { memset( (DWORD*)mBitmapData, 0xFF000000, 800*600 ); DWORD count = *(DWORD*)&mFileData[ 0 ]; for( int frame = 0; frame < count; frame ++ ) { int offset = *(DWORD*)&mFileData[ 4 + 4*frame ]; int j = 0; WORD sx = *(WORD*)&mFileData[ offset + 4 ]; WORD sy = *(WORD*)&mFileData[ offset + 6 ]; int i = offset + 8; if( !offset ) continue; /* закомментаренный кусок ТОЛЬКО для MICE.SPR int it = 0; DWORD* mBitmap = new DWORD[ sx*sy ]; for(int y = 0; y< sy; y++ ) for(int x = 0; x< sx; x++ ) { BYTE c1 = mFileData[ i ]; BYTE r = palette[3*c1 + 0]; BYTE g = palette[3*c1 + 1]; BYTE b = palette[3*c1 + 2]; mBitmap[ it ] = RGB( b, g, r); it ++; i ++; } */ int it = 0; for(;;) { BYTE c1 = mFileData[ i ]; i ++; if( 0 == c1 ) { int repl = mFileData[ i ]; memset( &mBitmap[ it ], 0xFFFF00FF, repl ); it += repl; i ++; if( it >= sx*sy ) break; continue; } BYTE r = palette[3*c1 + 0]; BYTE g = palette[3*c1 + 1]; BYTE b = palette[3*c1 + 2]; mBitmap[ it ] = RGB( b, g, r); it ++; if( it >= sx*sy ) break; } //сохраняю BMP на диск. char str[MAX_PATH]={0}; sprintf( str, "%s.%.3d.bmp5678", m_CurrentFile.GetBuffer(m_CurrentFile.GetLength()), frame ); WriteWindowToDIB( str, (BYTE*)&mBitmap[0], sx, sy ); for( int y = 0; y< sy; y++ ) for( int x = 0; x< sx; x++ ) setPixel( x, y, mBitmap[ x + y*sx ] ); delete[] mBitmap; this->RedrawWindow(); } } |
в массиве mFileData должен быть счита SPR файл полностью.
массив DWORD palette[256] под палитру, если она найдена в SPR файле
иначе надо в нее загрузить MICE.COL - он лежит в папке PALLETE игры "Street wars" в конструкторе я ее не нашел )))
#4
Отправлено 28 November 2010 - 18:08
вопрос решен!
1. распаковка. решена до меня гарным хлопцем Rheini.
распаковщик тут: http://forum.xentax....php?f=10&t=2689
А может кто перезалить распаковщик? а то там все ссылки загнулись.
#5
Отправлено 28 November 2010 - 18:43
Вообще-то он там прикреплён ко второму сообщению, просто загрузка доступна только для зарегистрированных пользователей, все остальные видят это:А может кто перезалить распаковщик? а то там все ссылки загнулись.
Чтобы загрузить программу можно либо зарегистрироваться, либо bugmenot.You do not have the required permissions to view the files attached to this post.
#6
Отправлено 28 November 2010 - 19:44
Вообще-то он там прикреплён ко второму сообщению, просто загрузка доступна только для зарегистрированных пользователей, все остальные видят это:
Чтобы загрузить программу можно либо зарегистрироваться, либо bugmenot.
Большое спасибо
#7
Отправлено 09 December 2013 - 00:30
Вообще-то он там прикреплён ко второму сообщению, просто загрузка доступна только для зарегистрированных пользователей, все остальные видят это:
Чтобы загрузить программу можно либо зарегистрироваться, либо bugmenot.
Акки с bugmenot не работают , жертвовать 5 евро как то не хочется с учетом что потом с этими файлами еще долго мучиться, не мог бы кто-то скачать ?
#8
Отправлено 13 December 2013 - 16:32
В своё время не завёл, а теперь, видимо, уже всё.