Перейти к содержимому


Свернуть чат Чат Открыть чат во всплывающем окне

lz : (5 дней назад) Не, спс)))
GranMinigun : (5 дней назад) Только он доступен так же, как и сырцы UE4. Читай - без аккаунта получишь 404.
Gaantro : (6 дней назад) Исходный код движка Lumberyard от Amazon доступен на GitHub (Переделка CE)
GranMinigun : (неделю назад) Мэханоыди?.. wut
lz : (неделю назад) клятi
Гость : (неделю назад) механоиді
lz : (3 недель назад) https://mesamatrix.net/
lz : (3 недель назад) Какие проблемы?)
lz : (3 недель назад) Я просто не хотел скидывать, но... http://www.phoronix....enGL-4.6-Driver
PA3UJIb : (3 недель назад) Ага, осталось дождаться этого функционала в дровах
lz : (3 недель назад) https://www.khronos....-spir-v-support
lz : (3 недель назад) В чём там сложность возникает?
Yakim (Watco... : (3 недель назад) Имеешь навык С++ и не можешь даже просто загуглить? Сириусли?)
Гость : (3 недель назад) https://www.google.c...a/search?q=ln(e)&oq=ln(e)&aqs=chrome..69i57&sourceid=chrome&ie=UTF-8
Гость : (3 недель назад) https://www.google.c...ch?q=log2(65536)&oq=log2(65536)&aqs=chrome..69i57&sourceid=chrome&ie=UTF-8
Гость : (3 недель назад) НО КАК ЗАРЕГИСТРИРОВАТЬСЯ ТО777111
Гость : (3 недель назад) Разве что так)
lz : (3 недель назад) А так для души делать, как хобби, может потренироваться в программировании, может ещё что-то полезное для себя найти.
Гость : (3 недель назад) Если кто-то играет)
lz : (3 недель назад) В ремастер будут играть все, кто играет в оригиналы. Поэтому вопрос - сколько людей играет в оригиналы?
Гость : (3 недель назад) Хотя, вроде, в ВК народ есть какой-то
Гость : (3 недель назад) Бывает) Интересно, станет ли кто-то в ремастер играть, если выйдет.
lz : (3 недель назад) Ага.
Гость : (3 недель назад) Судя по коммитам, больше проектом никто не занимается?
lz : (3 недель назад) Было бы желание, а куда применить - найдём)
lz : (3 недель назад) Помимо этого, если есть знания, можно модельки поконвертировать в fbx. Репозиторий tools в орге на гитхабе.
Гость : (3 недель назад) Понятно, спасибо. Я пока репозиторий изучу.
lz : (3 недель назад) Это система сборки на сишарпе.
Гость : (3 недель назад) UE как-то юзает .NET?
Гость : (3 недель назад) Я не совсем догоняю: в репозитории "Polygon4" валяются файлы с кодом на C#
lz : (3 недель назад) Ну, всё, best match и всё такое. Кроме с++ и не надо ничего.
Гость : (3 недель назад) Из полезных для UE навыков только С++, остальные языки/платформы, которыми владею, для сего движка неактуальны
lz : (3 недель назад) С моей стороны к разработке ремастера.
Гость : (3 недель назад) А куда присоединятся-то?
Yakim (Watco... : (3 недель назад) Норм капча :D
GranMinigun : (3 недель назад) Я и не полезу. Всё равно не разбираюсь.
lz : (3 недель назад) Ничего там не трогать.
lz : (3 недель назад) Всмысле сломалось?
GranMinigun : (4 недель назад) Хм. В самом деле что-то сломалось.
Гость : (4 недель назад) http://i.imgur.com/9k7kRHQ.jpg - моя не понимать
lz : (4 недель назад) К слову, немного я модельки ещё посидел, поконвертировал, может получится экспортировать полные с анимациями и прочим. В блендере пока статическую получается открыть - http://imgur.com/zw9zBUk
lz : (4 недель назад) Ага, примерно так. Если умеешь что-то делать, есть желание, то присоединяйся.
GranMinigun : (4 недель назад) Что характерно, за идею пашут только программисты.
GranMinigun : (4 недель назад) Что же до общей ситуации: большая часть so(-called)общества только и делает, что ноет о новой части. Реально чем-то занимается лишь полтора человека, и эти полтора человека, во-первых, не работают между собой, а двигают собственные проекты со своими идеями и собственными идеологиями, а во-вторых, не находят поддержки и помощи от других людей по различным причинам (основную, думаю, озвучивать нет смысла).
GranMinigun : (4 недель назад) В первую очередь, всё же попрошу представиться. Исключительно ради порядка.

Фотография
- - - - -

[asm.hpp] - библиотека базовых функций

C++ assembler CRT

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 OFFLINE   Yandersen

Yandersen

    Диванный теоретик

  • Админ
  • 454 сообщений
  • Откуда:Canada
  • Настоящее имя:Ян

Отправлено 18 Июль 2017 - 19:21

Простейшие функции, написанные по большей части прямо на ассемблере:

 

asm.hpp

 

Справочник:

unsigned int asmBestBufferSize( unsigned int DataSize )

Вычисляет рекомендуемый размер буффера для хранения данных указанного размера.

В случае DataSize=0 возвращает 0;

для 1/2/3/4 байт возвращает 4;

для 4 < DataSize <= 2^31 вычисляет результат путём округления вверх до ближайшей степени двойки (8 для 5/6/7/8, 16 для 9/10/.../16 и т.д.);

если DataSize > 2^31, возвращает 2^32-1 (максимум).

void asmCopyMemory( void* Destination, const void* Source, unsigned int ByteCount )

Улучшенный эквивалент стандартной memmove - копирует кусок памяти размером "ByteCount" из "Source" в "Destination". Не ругается на нулевые адреса в аргументах (ничего тогда не делает). Частичное наложение копируемых кусков допустимо.

void* asmCompareBuffers( const void* Buffer1, const void* Buffer2, unsigned int ByteCount )

Сравнивает два массива ("Buffer1" и "Buffer2") размером "ByteCount" побайтно и возвращает либо 0 (если массивы эквивалентны) либо адрес байта в первом массиве, который не эквивалентен соответствующему байту во втором массиве. Если адрес как минимум одного из массивов NULL, возвращённое значение равно нулю. Чтобы найти индекс различающихся байтов, отнимите от результата адрес первого массива.

unsigned int asmCountChars( const char *String )

Считает количество 8-битных символов в нуль-терминированной строке (эквивалент стандартной strlen). Если на входе NULL, возвращает 0.

char* asmFindChar( const char* String, char CharToFind )

Сканирует нуль-терминированную строку "String" пока не найдёт указанный байт "CharToFind". Если найдёт, вернёт его адрес, а не найдёт - тогда NULL. Нулевой указатель давать можно.

char* asmFindLastChar( const char* String, char CharToFind,
                       unsigned int *CalculatedStringLength = NULL,
                       unsigned int *TotalCharsFound = NULL )

Сканирует всю нуль-терминированную строку "String" в поисках последнего встреченного байта "CharToFind". Если найдёт, вернёт его адрес, а не найдёт - тогда NULL. Нулевой указатель давать можно. Поскольку функция так или иначе сканирует всю строку, то можно в дополнение узнать её длину (дав указатель на контейнер для переменной "CalculatedStringLength") и сколько всего искомых байтов встречено по пути ("TotalCharsFound").

void asmFillMemory( void* Ptr, char c, unsigned int ByteCount )

Заполняет "ByteCount" байт памяти начиная с адреса "Ptr" указанным байтом "с" (эквивалент стандартной memset).

void asmFillMemory( void* Buffer, const void* Item, unsigned int ItemSize, unsigned int ItemCount )

Заполняет массив "Buffer" указанным элементом "Item" в количестве "ItemCount" штук, каждый размером "ItemSize" байт. Если один из указателей NULL или общий размер массива больше 2^32-1 байт, копирования не произойдёт.

unsigned long long asmGetTimeStamp()

Возвращает 64-битный счётчик тактов процессора (обнуляется при перезагрузке системы).

char* asmSLIToStrBin( signed long int Value, char* Buffer )
char* asmULIToStrBin( unsigned long int Value, char* Buffer )
char* asmSLLIToStrBin( signed long long int Value, char* Buffer )
char* asmULLIToStrBin( unsigned long long int Value, char* Buffer )

Конвертирует 32-битное (64-битное) значение ("Value") в бинарный формат (0b101). Для конвертации нужен буффер "Buffer" размером в 35 (67) байт. Возвращённый указатель - это адрес внутри буффера, где число начинается (не всегда прямо с первого байта).

char* asmSLIToStrOct( signed long int Value, char* Buffer )
char* asmULIToStrOct( unsigned long int Value, char* Buffer )
char* asmSLLIToStrOct( signed long long int Value, char* Buffer )
char* asmULLIToStrOct( unsigned long long int Value, char* Buffer )

Конвертирует 32-битное (64-битное) значение ("Value") в восьмеричный формат (0101). Для конвертации нужен буффер "Buffer" размером в 13 (24) байт. Возвращённый указатель - это адрес внутри буффера, где число начинается (не всегда прямо с первого байта).

char* asmSLIToStrHex( signed long int Value, char* Buffer )
char* asmULIToStrHex( unsigned long int Value, char* Buffer )
char* asmSLLIToStrHex( signed long long int Value, char* Buffer )
char* asmULLIToStrHex( unsigned long long int Value, char* Buffer )

Конвертирует 32-битное (64-битное) значение ("Value") в шестнадцатеричный формат (0x101). Для конвертации нужен буффер "Buffer" размером в 11 (19) байт. Возвращённый указатель - это адрес внутри буффера, где число начинается (не всегда прямо с первого байта).

char* asmULIToStrDec( unsigned long int Value, char* Buffer )
char* asmSLIToStrDec( signed long int Value, char* Buffer )
char* asmULLIToStrDec( unsigned long long int Value, char* Buffer )
char* asmSLLIToStrDec( signed long log int Value, char* Buffer )

Конвертирует 32-битное (64-битное) значение ("Value") в десятичный формат (320, -783). Для конвертации нужен буффер "Buffer" размером в 11 или 12 (21 или 22) байт. Возвращённый указатель - это адрес внутри буффера, где число начинается (не всегда прямо с первого байта).

char* asmFToStrDec( float Value, char* Buffer )
char* asmDToStrDec( double Value, char* Buffer )

Конвертирует float (double) значение ("Value") в формат с плавающей запятой (2., -1.23456e-12, 6.e3). Для конвертации нужен буффер "Buffer" размером в 17 (25) байт. Возвращённый указатель - это адрес внутри буффера, где число начинается (не всегда прямо с первого байта). Количество значащих цифр для типа float - 9 (до 8 после запятой), для double - 17 (до 16 после запятой).

int asmDToStrDec( double Value, char* Buffer, int Digits )

Переводит значение ("Value") в формат

[целочисленное_значение] * 10[экспонента]

с указанным количеством цифр ("Digits") в целочисленном значении и сохраняет эту часть в буффер ("Buffer") в виде нуль-терминированной строки цифр (для отрицательных значений первым будет знак минус), а экспоненту функция возвращает. Размер буффера должен быть на два байта больше чем запрошенное количество цифр ("Digits").

unsigned long long int asmStrBinToInt( char* String )
unsigned long long int asmStrOctToInt( char* String )
unsigned long long int asmStrHexToInt( char* String )

Декодирует значение, записанное в бинарном/восьмеричном/шестнадцатеричном формате как 64-битное целочисленное беззнаковое.

signed long long int asmStrDecToInt( char* String )

Декодирует значение, записанное в десятеричном формате как 64-битное целочисленное. Допускает использование +/- знаков.

double asmStrDecToDouble( char* String )

Декодирует значение, записанное в десятеричном формате с плавающей запятой и экспонентой.



#2 OFFLINE   Yandersen

Yandersen

    Диванный теоретик

  • Админ
  • 454 сообщений
  • Откуда:Canada
  • Настоящее имя:Ян

Отправлено 4 недель назад

Версия 1.0.1:

Добавлена функция

 


int asmDToStrDec( double Value, char* Buffer, int Digits )

 Переводит значение ("Value") в формат

[целочисленное_значение] * 10[экспонента]

с указанным количеством цифр ("Digits") в целочисленном значении и сохраняет эту часть в буффер ("Buffer") в виде нуль-терминированной строки цифр (для отрицательных значений первым будет знак минус), а экспоненту функция возвращает. Размер буффера должен быть на два байта больше чем запрошенное количество цифр ("Digits").

 

Функции asmFToStrDec и asmDToStrDec теперь округляют последнюю цифру.



#3 OFFLINE   lz

lz

    True Warrior

  • Админ
  • 207 сообщений

Отправлено 4 недель назад

Всё равно тебе репозиторий нужен. Туда и тестов написать можно и примеров, и документацию можно генерить по исходникам сейчас. Туда текст из комментариев будет идти.


Polygon-4
Документация и инструкции по установке доступны по ссылке:
 

#4 OFFLINE   Yandersen

Yandersen

    Диванный теоретик

  • Админ
  • 454 сообщений
  • Откуда:Canada
  • Настоящее имя:Ян

Отправлено 4 недель назад

Занимался ли бы я вапще чем-то подобным будь я способен разобраться с котовасией репозиториев и гитхабов?.. :rolleyes:







Темы с аналогичным тегами C++, assembler, CRT

Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных