Гробница фараона. Бета-версия.

Entertainment for 5 minutes, hours, days
  • rabid rabbit
    Не знаю почему CRC получаемый твоим модулем у меня не совпадал с CRC получаемый например WinHex-ом...
    Но если немного подправить процедуру генерации таблицы для расчёта crc всё становится на свои места
    Привожу сдесь немного подправленый код, может пригодится :)

    Code: Select all

    dword table[256];
    dword CRC32(byte *buff,dword len)
    {
     	dword crc = 0xFFFFFFFF;
    	while (len--) crc = (crc>>8) ^ table[(byte)crc ^ *buff++];
    	return crc ^ 0xFFFFFFFF;
    }
    void InitCRC32()
    {
    	dword i,j,mask;
            for ( i=0;i<256 ;i++){
                mask = 0xFFFFFF00 + i&0xFF;
                for ( j=0; j<8; j++ ){
                    if ( mask & 1 ){
    					mask >>= 1;
    					mask ^= poly;
    				}
    				else mask >>= 1;
    			}
    		table[i&0xFF] = mask;
    	}
    }
    
  • rabid rabbit

    Code: Select all

    // вызов статических инициализаторов
    // заодно инициализация генератора случайных чисел
    #pragma section(".CRT")
    __declspec(allocate(".CRT"))  void (__cdecl *crtFnList[1])();
    
    Можно пояснить, что здесь происходит? MSDN ни фига не объясняет. crtFnList[1] - этот массив указателей на функции создает компилятор или его надо объявлять самому?
    И если писать на простом С без классов и объектов эта часть кода нужна?
  • Поясняю - как я понял из просмотра ассемблерных файлов, создаваемых компилятором, в секцию .CRT заносится массив адресов функций, производящих некоторую инициализацию при запуске программы. Так что объявлять надо только переменную, через которую можно получить доступ к этому массиву. Кстати, этот кусок кода из старого исходника - в новом слегка изменён способ доступа к секции .CRT (за образец взяты исходники мелкосовтовского crt). На счёт чистого Си не знаю, надо пробовать, т.к. в исходниках crt есть вроде вызов инициализаторов и для Си.
  • Имхо лучшая игра для Колибри
  • Ты еще не пробовал Jump'n'bump! Кооперативный мультиплеер против ботов! viewtopic.php?f=41&t=2056
  • Я настроила автосборку из исходников в r5107, r5108.
    Сделаем мир лучше!
  • Who is online

    Users browsing this forum: No registered users and 2 guests