You are not logged in.
Интересно вообще, когда пираты выпустят лечение гта5 от интернет-зависимости - долго ли продержится гта5 на лицензионном поприще.
Судя по отзывам, вышедшая версия на PC изобилует багами. Скорее всего повториться история с IV - куча патчей, поддерживать которые мало кому захочется.
Надеяться не вредно, вредно не надеяться.
Там все плохо. Даже если расшифровать exe-шник, не становится ни капли легче.
Ключи-то я достал за пять минут. Проблема в том, что они используются для двух .rpf (из, примерно, полутора тысяч).
Что делать с остальными - пока нет ни малейших идей.
Мб в таком ряде сию сверхпроизводительность направить в более благородное русло? Инди-разработка вроде как нонче в моде.
PS: Кто-нибудь уже заценил на PC? Требования по производительности относительно IV сильно поменялись, стоит брать?
Ну я собственно периодически заглядываю, просто поводов проявлять активность не особо много. И это еще мягко сказано, коли месячная периодичность событий вызывает такую реакцию.
А по самому важному, привет, конечно.
huppoFF, если я еще хоть что-то помню, как-то так. Активация/деактивация по чит-коду WHATEVER.
{$CLEO} // save state 0A8D: 0@ = read_memory 0x005E2009 size 4 virtual_protect 0 0A8D: 1@ = read_memory 0x005E200D size 1 virtual_protect 0 0A8D: 2@ = read_memory 0x006A8C52 size 4 virtual_protect 0 0A8D: 3@ = read_memory 0x006A8C52 size 1 virtual_protect 0 gosub @activate while true if 0ADC: test_cheat "WHATEVER" then if 4@ <> 0 then gosub @deactivate else gosub @activate end end wait 0 end :activate 0A8C: write_memory 0x005E2009 size 4 value 0xC483C031 virtual_protect 0 0A8C: write_memory 0x005E200D size 1 value 0x10 virtual_protect 0 0A8C: write_memory 0x006A8C52 size 4 value 0xC483C031 virtual_protect 0 0A8C: write_memory 0x006A8C56 size 1 value 0x10 virtual_protect 0 4@ = 1 return :deactivate 0A8C: write_memory 0x005E2009 size 4 value 0@ virtual_protect 0 0A8C: write_memory 0x005E200D size 1 value 1@ virtual_protect 0 0A8C: write_memory 0x006A8C52 size 4 value 2@ virtual_protect 0 0A8C: write_memory 0x006A8C56 size 1 value 3@ virtual_protect 0 4@ = 0 return
@all - понял. Тупых вопросов больше задавать не буду:crazy:
спасибо, покопаюсь.
По поводу гугления. Опыт работы в линукс начисто отучает от ползания по всяческим варезным сайтам с кучей выскакивающей рекламы.;-)
PS: чем правильно распаковывать этот файлик? Тупое выбрасывание SCE-хедера не дает работающего ELF. Насколько я понимаю, там указатель на phdr битый получается.
Всем доброго времени суток.
Насколько я понимаю, некоторые уже разжились исполняемыми файлами от консольных версий GTA V. Может поделитесь? Хочется покопаться в новом для себя ассемблере. Обязуюсь никому не передавать.;-)
@Seemann - Спасибо. Только имейте в виду, что там в базе много мусора, тупо скопированного с базы для PC. Хотя многое там совпадает вплоть до смещений.
На случай, если кто-то заинтересуется, таки выложу еще APK (он самоподписанный, кажется там надо включить Developer mode на девайсе) и пример asi-плагина. Линкуясь против libGTA.so, можно динамически релоцировать любые экспортированные символы. Извращаться в сишнике таким образом больше не требуется:
*(DWORD *)(0x123456)
[You must login to view hidden text.]
@Seemann - У меня открывает. Но я извращенец- иду запускаю под вайном.
libGTA.idb
@Seemann - на паблик было бы замечательно.
@Sergey81 - как сделать на iOS не знаю, т.к. не обладаю сим девайсом. А на андроиде все делается стандартными методами с использованием android-ndk и правкой оргинального R* кода с последующей перепаковкой apktool.
Отлично. Добавил ссылку в первый пост.
Еси есть интересующиеся, могу еще выложить версию GTA Vice City 10 Years Anniversary для Android. Она отличается тем, что в ней присутствуют оригинальный R*-кие имена функций и статических переменных. Разобрано там совсем немного, но кое-что перенесно из PC-шной версии, также выведены имена и описания опкодов.
Для проверки своих идей есть самопальная сборка apk упомянутой VC для Android с встроенным asi loader-ом (подгружает при старте нативные библиотеки из директории asi).
Информация по 35 параметрам в справке устарела - это ограничение было в первых версиях. Сейчас его нет.
В базе SA все функции на Rw, Rp, Rs - часть Renderware SDK. Можно сверятся ней, какая-то версия лежит на паблике. Сама SDK написана в Carmack style C - так что, ванильный RwV3d методов не имеет.
В коде R* также присутсвует метод CVector::Normalise(void).
Ваш кусок кода - это именно CVector::Normalise, т.к. RwV3dNormalise принимает 2 параметра - in и out, в то время как CVector::Normalise выполняет inplace преобразование.
@listener's PS - учитывая Ваш огромный опыт на этом поприще, было бы очень интересно почитать.
PS. Если "стол заказов" еще работает, то хотелось бы еще что-нибудь про ABI "альтернативных" платформ (PPC, ARM).:blush:
Из разряда грязных хаков, fastcall можно использовать для более или менее компиляторо-независимого вызова MSVC методов:
void __fastcall a_method(void *obj, int dummy, int param1, ...)
Могу ошибаться, т.к. говорю на память, но в этом случае первый параметр передается в ecx, второй в eax - а он все равно clobbered для метода...
Может тогда уж сразу сделать компиляцию в zip-архив? Обеспечить возможность подключения ресурсов, всяких пользовательских текстов итп. Само собой это применимо только на пользовательские скрипты и разработка должна быть совместной с CLEO-разработкой. В самом билдере это дело сразу организовать в виде некого дерева-проекта.
Можно и так:
struct A{ struct B *pB; }; struct B{ struct A *pA; };
В документации это назывется forward declaration. Перед использованием компилятор все равно должен иметь полные объявления этих классов. В противном случае получите invalid use of incomplete type.
@Den_spb - В серии III зависит. Там все - и обновление игровой логики и рендеринг - все выполняется в одном потоке.
Если не помогает Frame limiter, можно попробовать сбросить настройки видео на минимум. Насколько мне помнится, такая же проблема с этой миссией у меня была на старой конфигурации (на которой даже SA немного притормаживала). То есть нужно не сбросить fps, а наоборот немного повысить.
Ну, вообще-то я никаких вылетов в приведенном коде не наблюдал и не наблюдаю. Что касается опкодов вызова нативного кода, то с ними надо работать очень осторожно и четко понимать, что делаешь. Вполне возможно, что в вызываемой функции не сохраняется какой-нибудь регистр (меняться могут только eax, ecx, edx) или неверно указан stack_align.
Единственный баг, который, признаю, есть - это баг со звуком (на машинах с аппаратным ускорением 3d audio positioning ломается внутриигровая звуковая подсистема). Баг остается.
Ах да, еще был баг с тем, что скриптовая музыка продолжает играть, когда окно сворачивают. Этот баг должен быть исправлен, но я не проверял.))
в миссии stowaway кажется надо было отключать лимит кадров. на 20-25 fps еще успеть можно, а на 60 уже не выходит.:D
А разве есть разница между компиляторами одного и того же языка?
Ну этот вопрос явно не мне надо задавать, ибо я сам являюсь может быть хоть и не "начинающим программистом", но программистом-любителем то уж точно... Ну, попробую ответить.
Да, разница есть...
Во-первых, язык кучу раз перестандартизировался (в последний раз это произошло в августе этого года, и на данный момент не существует ни одного компилятора, который бы полностью имплементировал все нововведения этого стандарта. А я все равно уже начал использовать эти нововведения в CLEO - не удержался ). По этому поводу мне вообще кажется, что нет такого языка C++, есть только языки, определяемые соответствующими ANSI/ISO стандартами C++.
Во-вторых, разработчики коммерческих компиляторов часто кладут болт на обеспечение совместимости со стандартами. GCC тут старается более или менее им следовать, но это не всегда удается.
В-третьих, у большинства компиляторов имеются некоторые специфические только для них (или для целевой платформы) расширения языка. Например, описанные тут или тут). Когда имеешь дело с низкоуровневыми хаками, без них просто не обойтись (без того же inline-ассемблера, например). Поэтому приходится писать код, специфический для какого-то конкретного компилера...
PS: чего-то мы нафлудили много. Вы лучше попробуйте решить проблему с Error loading plugin. Вопрос к другим скачавшим - у вас есть такая же ошибка?
Может быть и проще, но у меня лично с каких-то пор имеется предпочтение к GNU toolchain. Кроме того, код является специфичным к GCC, компилятор Microsoft его не соберет.
make.exe брать в интернете (нужна сборка под винду).
Вообще, удобно будет использовать этот toolchain (там уже есть GNU make).
Еще понадобится Cygwin, с его поиском и установкой проблем быть не должно.
UPD. Блин, что-то игра ошибку выбивает в самом начале - Error loading plugin cleo.asi
Хм. Интересно, попробуйте пересобрать из исходников. Посмотрите, создался ли в корне файл cleo.log и выложите его содержимое (если игра установлена в Program Files, переустановите куда-нибудь, куда разрешена запись без админ-прав).
Выкладываю первую публичную версию 4.2a. Буковка 'a' обозначает 'alpha', то есть версия не является стабильной и не предназначена для публичного использования.
Новых "фич" нет, из нововведений - открытие исходного кода. Теперь любой желающий может с ним ознакомиться. Никаких лицензий не прикрепляю, поскольку то, чем мы тут занимаемся, все равно "не вполне законно".
PS: Если появится группа людей, заинтересованная в разработке, возможно имеет смысл переехать на sourceforge или google code. А может быть Deji возьмется за разработку и выпустит что-то вроде CLEO 5 (это обсуждалось в английской ветке, если кто-то не в курсе). В общем, поживем - увидим.
[You must login to view hidden text.]
все равно не так мало людей будет что-то дорабатывать в библиотеке. скорее всего, все ограничится снятием копирайтов и желтой надписи в меню
Про мало людей согласен. Я думаю, скриптерам в любом случае будет полезно иметь под рукой исходный код - он может заменить недостаток документированности. На самом деле, мне кажется, что здесь более вероятен другой вариант развития событий - CLEO (да и весь III-series моддинг) окажутся никому не нужными и все о них забудут (если еще не забыли).
скорее всего, все ограничится снятием копирайтов и желтой надписи в меню
ИМХО ну и пусть. Хотя я сомневаюсь в возможности такого. Для модификации кода будет существовать достаточно высокий входной порог на "качество программиста". Короче говоря, Cleo Hacker из Нижнего Тагила на это явно не способен. Ну а люди других качеств на такие подлые вещи вряд ли пойдут.
я бы на твоем месте передал исходники лично Deji, поскольку он, во-первых, разбирается в устройстве CLEO, во-вторых, знает слабые места (баги), в-третьих, он разбирается в программировании и реально может что-то сделать. а если он посчитает нужным привлечь в проект еще людей, это будет зависеть от него.
Ну что ж, если открыть исходники CLEO и дать права на модификацию, то Deji в принципе получит все те же возможности наравне с другими...