Gta3.exe — различия между версиями
Материал из GTAModding.ru
DK22 (обсуждение | вклад) (→CAntenna) |
Solom (обсуждение | вклад) |
||
Строка 136: | Строка 136: | ||
Для тестирования GTA3 разработчиками использовалась консоль. В финальной версии она полностью заблокирована (оставили только кастратную возможность ввода чит-кодов без интерфейса командной строки). Текстуры консоли разработчиками были оставлены в <code>frontend.txd</code> и <code>menu.txd</code>. | Для тестирования GTA3 разработчиками использовалась консоль. В финальной версии она полностью заблокирована (оставили только кастратную возможность ввода чит-кодов без интерфейса командной строки). Текстуры консоли разработчиками были оставлены в <code>frontend.txd</code> и <code>menu.txd</code>. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Классы и структуры == | == Классы и структуры == |
Версия 02:39, 7 августа 2012
Исполняющий файл игры, содержит игровой движок - RenderWare и много различных игровых ресурсов.
Содержание |
Исходные коды
Кроме собственно RenderWare, GTA3.exe
содержит специализированную часть кода, написанного программистами Rockstar Games специально под нужды GTA и встречающийся исключительно в линейке видеоигр серии, начиная с GTA III.
Основные компоненты GTA CORE
- EventList.cpp - содержит список игровых событий
- Crime.cpp - обеспечивает работу криминальных типов
- Ped.cpp - формирует пути пешеходов на карте из nodes
- PedAI.cpp - задаёт пешеходам определённое поведение
- Pedtype.cpp - обработчик
PED.DAT
- Population.cpp - обработчик
PEDGRP.DAT
- Explosion.cpp
- ProjectileInfo.cpp
- Weapon.cpp - отвечает за оружие в игре
- WeaponInfo.cpp - обработчик
WEAPON.DAT
GTA3Portable:
- binarytree.cpp
- POLRADIO.CPP
- EmergencyPed.cpp
- CopPed.cpp
- combostate.cpp
- glass.cpp
- automobile.cpp
- world.cpp
- tinyxmlparser.cpp
- fluff.cpp
- player.cpp
- pathrental.cpp
- cranes.cpp
- pedpath.cpp
- civilianped.cpp
- tinystr.cpp
- localareaknowledge.cpp
- trafficlights.cpp
- physical.cpp
- renderer.cpp
- tinyxml.cpp
- shadows.cpp
- dummy.cpp
- objectivefunctions.cpp
- entity.cpp
- streamingnew.cpp
- vehicle.cpp
- garage.cpp
- fecontrollerelement.cpp
- carctrl.cpp
GTA3Mobile:
- cdstream-tegra.cpp
- font.cpp
- sprite2d.cpp
- Touchscreen.cpp
- samp-oal.cpp
- MobileFrontend.cpp
- RadarMap.cpp
- ImplArrays.cpp
- IOSFile.cpp
- IOSGamepad.cpp
- EmuCustomShader.cpp
Лимиты
Как и в любой другой игре, в GTA3 тоже существуют так называемые игровые лимиты.
Лимит - определённое ограничение, наложенное разработчиками игры на конкретные виды игровых ресурсов - модели, текстуры, автотранспорт и т.д. Выражены в числовом виде.
Отредактировать лимиты можно любым HEX-редактором, отрыв в нём gta.exe
или их можно изменять непосредственно в игровой памяти посредством написания *.asi
-плагинов или через использование CLEO-скриптов, но это намного сложнее.
Основные лимиты gta3 по способу хранения можно разделить на одно-байтовые и четырёх-байтовые. Четырёх-байтовые в свою очередь делятся на множество подвидов, с ними можно будет ознакомиться ниже.
Классификация
Данная классификация нестандартна, является результатом любительского подхода к изучению содержимого gta3.exe. Была получена без использования различных декомпиляторов, поэтому что-то ней может не совпадать с тем, что есть на самом деле.
Первая категория "Основные Лимиты"
"Лимит", в данном случае, - параметр, передаваемый в процедуру, которая выделяет память для нового пула, - кол-во элементов в пуле. Все адреса основных лимитов и их названия представлены ниже (база частично взята из GTA3 Limit Adjuster 1.0), в скобочках указаны их стандартные значения.
- 00460C - Directory (512)
- 0069D3 - Directory (128)
- 037945 - CopPed (0)
- 0A186F (0A177F) - PtrNode (30000) - Определяет допустимые объёмы коллизий на игровой карте
- 0A188C (0A179C) - EntryInfoNode (5400)
- 0A18A9 (0A17B9) - Peds (140)
- 0A18C6 (0A17D6) - Vehicle (110)
- 0A18E0 (0A17F0) - Buildings (5500)
- 0A18FD (0A180D) - Treadable (1214)
- 0A191A (0A182A) - Object (450)
- 0A1937 (0A1847) - Dummy (2802)
- 0A1954 (0A1864) - AudioScriptObj (256)
- 0F54E2 (0F5432) - EmergencyPed (16)
- OF556E (0F54BE) - EmergencyPed (17)
- 127698 (127458) - TxdDef (850)
- 15B6B8 (15B588) - ProjectileInfo (170)
- 15B6DC (15B5AC) - ProjectileInfo (174)
- 15B700 (15B5D0) - ProjectileInfo (179)
Вторая категория "Пути"
Содержит строковые значения, ссылающиеся на основные игровые ресурсы. Выложены самые интересные, являющиеся полезными для моддинга GTA3.
- 1FD6B0 (1FD498) - fonts.txd
- 1FDB2C (1FD914) - hud.txd
- 1F34B0 (1F33A8) - menu.txd
- 217C80 (217440) - txd.dir
- 217C50 (217410) - txd.img
- 1FFA0C (1FF7F4) - carcols.dat
- 1F4EEC (1F4DDC) - default.dat
- 1F57C4 (1F55AC) - gta3.dat
- 2013D4 (2010B4) - handling.cfg
- 1EE79C - main.scm
- 2033FC (202CC4) - weapon.dat
- 2035BD (202E85) - HEAD RADIO
- 2034F5 (202DBD) - CLASSIC (DOUBLE CLEFF FM) RADIO
- 20350E (202DD6) - KJAH RADIO
- 203527 (202DEF) - RISE FM
- 203540 (202E08) - LIPS 106
- 203559 (202E21) - GAME FM
- 203572 (202E3A) - MSX FM
- 20358B (202E53) - FLASHBACK 95.6
- 2035A4 (202E6C) - CHAT
- 20F49D (20ED5D) - GTA3 USER FILES
Третья категория
Консоль debugger-а GTA CORE
Для тестирования GTA3 разработчиками использовалась консоль. В финальной версии она полностью заблокирована (оставили только кастратную возможность ввода чит-кодов без интерфейса командной строки). Текстуры консоли разработчиками были оставлены в frontend.txd
и menu.txd
.
Классы и структуры
CVector
0x0000 | float x 0x0004 | float y 0x0008 | float z
CScrollBar
Начало | 0x62F240 |
Кол-во | 11 |
Размер | 0x60 |
0x0000 | DWORD counter 0x0004 | char *text // Указатель на текущую строку 0x0008 | CVector pos // Координаты левого нижнего угла 0x0014 | DWORD textCurrPos 0x0018 | DWORD textStartPos 0x001С | float scaleX // Масштабирование/разворот в 2D-системе координат 0x0020 | float scaleY // Масштабирование/разворот в 2D-системе координат 0x0024 | float height // Высота 0x0028 | float intensity // Интенсивность, зависит от расположения камеры и влияет на значения RGB 0x002C | BYTE renderCharsSets[40] 0x0054 | BYTE textType // Тип определяет комбинацию текстов, которая будет показана на бегущей строке 0x0055 | BYTE isUpdated 0x0056 | BYTE red 0x0057 | BYTE green 0x0058 | BYTE blue 0x0059 | BYTE _pad[3] 0x005C | float depth // Толщина букв
CAntenna
Начало | 0x664680 |
Кол-во | 8 |
Размер | 0x9C |
0x0000 | BYTE isExist 0x0001 | BYTE isUpdated 0x0002 | BYTE _pad[2] 0x0004 | DWORD id 0x0008 | float length // Длина, для RcBandit равна 1.0 0x000С | CVector pointsA[6] 0x0054 | CVector pointsB[6]
CPointlight
Начало | 0x7096D0 |
Кол-во | 32 |
Размер | 0x2C |
0x0000 | CVector pos // Позиция 0x000C | CVector direction // Направление 0x0018 | float radius // Радиус 0x001C | float red // 0.0 - 1.0 0x0020 | float green // 0.0 - 1.0 0x0024 | float blue // 0.0 - 1.0 0x0028 | BYTE type // Тип источника света 0x0029 | BYTE fogType // Эффект с использованием текстуры pointlight 0x002A | BYTE generateExtraShadows // Включить создание дополнительных теней для автомобиля игрока 0x002B | BYTE _pad
CRegisteredShadow
Начало | 0x779058 |
Кол-во | 48 |
Размер | 0x30 |
0x0000 | CVector position 0x000C | float rotationX1 // Эти параметры определяют разворот и размер 0x0010 | float rotationY1 0x0014 | float rotationX2 0x0018 | float rotationY2 0x001C | float zDistance // Максимальное расстояние между позицией тени и поверхностью, на которую падает тень 0x0020 | float scale // Масштабирование относительно одного из углов 0x0024 | WORD intensity 0x0026 | BYTE type 0x0027 | BYTE red 0x0028 | BYTE green 0x0029 | BYTE blue 0x002A | WORD flags 0x002C | RwTexture *texture
Типы теней (type)
ID Описание Source-Blend Dest-Blend 0 5 6 1 Тень (чёрный цвет) 2 2 2 Свет (цвет RGB) 1 4
CRegisteredMotionBlurStreak
Начало | 0x880A00 |
Кол-во | 4 |
Размер | 0x54 |
0x0000 | DWORD id 0x0004 | BYTE red 0x0005 | BYTE green 0x0006 | BYTE blue 0x0007 | BYTE _pad1 0x0008 | CVector partPointsA[3] 0x002C | CVector partPointsB[3] 0x0050 | BYTE isPartNeedsToBeRendered[3] 0x0053 | BYTE _pad2