You are not logged in.
Pages: 1
Выходит уже в следующем месяце на iOS, Android и Windows Phone(хотя в оригинале написано mobile).
http://www.rockstargames.com/newswire/a … ember.html
Ждем новые части исходников и именованные функции?
Offline
недавно как раз задумывался о том, будет ли саня на мобильниках. вышла даже раньше.
было бы интересно посмотреть, что там под капотом) хотя на сегодняшний момент - San Andreas наиболее изученная игра из всей серии, возможно только более корректные имена опкодов пригодятся
Offline
Вышла на iOS в некоторых регионах. Каковы шансы, что можно будет работать с памятью через SCM, как в пк версии?
UPD. main.scm ios версии - http://www.sendspace.com/file/hfffbi
Sanny Builder крашится при открытии.
Last edited by Sergey81 (11-12-2013 21:00)
Offline
Из iOS версии не полностью убрали скриптовый дебуг , в файле опкоды с именами . Добавлено около 50-ти новых для работы с тачем , стыкуются в притык к CLEO опкодам .
Offline
>I'm going to create a simple decompiler because Sanny cannot decompile some of them in any way.
http://gtaforums.com/topic/661408-gta-s … 1064279085
Будет ли обновление SB? Или все ждут андроид версию на следующей неделе?
Offline
@Sergey81 - обновление SB будет, узнал о выходе только сегодня)
Edit:
дизассемблированный MAIN.SCM
http://sannybuilder.com/dev/GTASA_IOS_SCM.rar
Last edited by Seemann (13-12-2013 17:52)
Offline
Будет ли обновление SB? Или все ждут андроид версию на следующей неделе?
думаю, лучше подождать. я сам планирую выпустить TXDFucker после выхода под андроид.
чё-то я с трудом втыкаю в gta3sa, может, iOS-файлы нужно загружать как-то по-особому?
глянул по диагонали, нашёл пару интересующих меня функций, но толком так и не понял как тут сделаны виртуальные таблицы, и почему большая часть строк не имеет xref.
Last edited by Lego (14-12-2013 17:16)
Offline
@Lego - Чтобы было больше xrefs, нужно дизассемблировать в 6.4 демо, я когда лаунчер на iOS делал, IDA 6.1 не показывала xrefs для "movies\\Logo.mpg.mp4"(или как-то так), а в 6.4 они были.
Offline
В SA PC тоже есть RtPNG. Разве что для текстур интерфейса использовать.
Last edited by DK22Pac (29-12-2013 17:30)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
на компе это не актуально, так как там есть txd.
и дело не в RtPNG, а в TextureDatabaseEntry - он имеет метод для загрузки текстуры из PNG вместо DAT:
TextureDatabase::GetPNGFilename(char *,char const*) TextureDatabaseEntry::LoadPNG(char const*)
идея понятна - возиться с огромным тройным кэшэм не очень удобно. скорее всего, кэш был собран из png-файлов перед релизом, а сами разработчики работали с png.
Last edited by Lego (29-12-2013 17:50)
Offline
Понятно, я подумал, что речь о "разблокировке" на пк.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
вброшу, кое-какие исходники от TXDFucker'a, что ли.
начнём с простого - заголовок текстуры в DAT-файле:
/** * Cached texture info struct * @size 8bytes */ struct CACHEDTEXTUREHEADER { WORD m_wHash; // +0x00 @see HashString(szString) definition WORD m_wFormat; // +0x02 @see TEXTURETYPE definition WORD m_wWidth; // +0x04 texture width (px) WORD m_wHeight : 15; // +0x06 texture height (px) WORD m_bMipmaps : 1; // mipmaps (boolean) }; /** * San Andreas Header * @size 12 bytes */ struct CACHEDTEXTUREHEADERSA: public CACHEDTEXTUREHEADER { DWORD m_dwSize; // +0x08 texture size };
если SA, то далее идёт 4 байта - ключевой символ для RLE-компрессии (об этом ниже).
далее в любом случае идёт растр. в VC размер текстуры рассчитывается на основе m_wFormat, который примерно соответствует формату текстуры из OpenGL.
вот, к примеру, хеширование. используется в кэше как img=, png= и первые два байта в заголовках текстур (только младшие 16 бит)
DWORD HashMem( const BYTE* pMem, DWORD nSize ) { DWORD dwResult = 0; if( !pMem ) return 0; for( DWORD i = 0; i < nSize; i++ ) { dwResult += (dwResult << 5); dwResult += pMem[i]; } dwResult += (dwResult >> 5); return dwResult; }
вообщем-то всё просто, да. на основе этой функции реализованы HashString, HashFile и т.д.
идём дальше. RLE-компрессия. эффективно сжимает многие текстуры, особенно элементы интерфейса. тут прототип не сходится с тем, что в игре, но я думаю, если кому надо - то уберёт лишний код.
/** * Sa Mobile data unpacker */ DWORD RLEDecompress( LPBYTE pIn, LPBYTE pOut, DWORD dwSize, DWORD dwOutSize, DWORD nPixelBlockSize ) { DWORD nOut = 0; // outPos DWORD nIn = 0; DWORD nBlockSize = max( sizeof(DWORD), nPixelBlockSize ); BYTE nControlChar = pIn[0]; nIn += sizeof(DWORD); for( ; nIn < dwSize; nIn += nBlockSize ) { // normal copy if( pIn[nIn] != nControlChar ) { if( nOut + nBlockSize > dwOutSize ) { if( nOut + nPixelBlockSize <= dwOutSize ) { memcpy( pOut + nOut, pIn + nIn, nPixelBlockSize ); nOut += nPixelBlockSize; } return nOut; } memcpy( pOut + nOut, pIn + nIn, nBlockSize ); nOut += nBlockSize; } // we found a control char else { BYTE nCount = pIn[nIn + 1]; nIn += sizeof(BYTE) * 2; for( BYTE j = 0; j < nCount; j++ ) { if( nOut + nBlockSize > dwOutSize ) { TRACE( "GTA::RLEDecompress: [ERROR] block unpacking failed [0x%02x:%02x]\n", nControlChar, nCount ); return nOut; } memcpy( pOut + nOut, pIn + nIn, nBlockSize ); nOut += nBlockSize; } } } return dwOutSize; }
спрашивайте, если что-то интересует.
Last edited by Lego (15-01-2014 06:04)
Offline
новые строки в GXT:
http://gta.nick7.com/stuff/gxt/sa-mobil … an-new.txt
http://gta.nick7.com/stuff/gxt/sa-mobil … an-new.txt
осталось несколько хэшей, я не могу найти к ним ключи (пробовал брутом, но какая из коллизий нужна - я не знаю)
Last edited by Lego (23-01-2014 19:42)
Offline
Доброго дня, хочу написать про версию sa на windows 8, которая в metro, она в принципе от wp8 не отличается, только платформой, так вот, на нее cleo возможно поставить?
Offline
Pages: 1