mirror of
				https://github.com/sampletext32/ParkanPlayground.git
				synced 2025-11-04 07:19:45 +03:00 
			
		
		
		
	update documentation
This commit is contained in:
		
							
								
								
									
										77
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										77
									
								
								README.md
									
									
									
									
									
								
							@@ -211,10 +211,51 @@ grep -rlU $'\x73\x5f\x74\x72\x65\x65\x5f\x30\x35' .
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Загружается в `AniMesh.dll/LoadAniMesh`
 | 
					Загружается в `AniMesh.dll/LoadAniMesh`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Тип 01 - заголовок
 | 
				
			||||||
 | 
					  ```
 | 
				
			||||||
 | 
					  нулевому элементу добавляется флаг 0x1000000
 | 
				
			||||||
 | 
					  Хранит куски меша.
 | 
				
			||||||
 | 
					  Содержит 2 ссылки на файлы анимаций (короткие - файл 13, длинные - файл 08)
 | 
				
			||||||
 | 
					  Если интерполируется анимация -0.5s короче чем magic1 у файла 13
 | 
				
			||||||
 | 
					  И у файла есть OffsetIntoFile13
 | 
				
			||||||
 | 
					  И ushort значение в файле 13 по этому оффсету > IndexInFile08 (это по-моему выполняется всегда)
 | 
				
			||||||
 | 
					  Тогда вместо IndexInFile08 используется значение из файла 13 по этому оффсету (второй байт)
 | 
				
			||||||
 | 
					  ```
 | 
				
			||||||
 | 
					- Тип 02
 | 
				
			||||||
 | 
					  ```
 | 
				
			||||||
 | 
					  Вначале идёт заголовок 0x8C (140) байт
 | 
				
			||||||
 | 
					  В заголовке:
 | 
				
			||||||
 | 
					  8 Vector3 (x,y,z) - bounding box
 | 
				
			||||||
 | 
					  1 Vector4 - center
 | 
				
			||||||
 | 
					  1 Vector3 - bottom
 | 
				
			||||||
 | 
					  1 Vector3 - top
 | 
				
			||||||
 | 
					  1 float - xy_radius
 | 
				
			||||||
 | 
					  ```
 | 
				
			||||||
- Тип 03 - это вершины (vertex)
 | 
					- Тип 03 - это вершины (vertex)
 | 
				
			||||||
- Тип 06 - это рёбра (edge)
 | 
					- Тип 06 - это то ли рёбра, то ли треугольники - не понятно
 | 
				
			||||||
- Тип 04 - скорее всего какие-то цвета RGBA или типа того
 | 
					- Тип 04 - скорее всего какие-то цвета RGBA или типа того
 | 
				
			||||||
 | 
					- Тип 08 - меш-анимации (см файл 01)
 | 
				
			||||||
 | 
					  ```
 | 
				
			||||||
 | 
					  Индексируется по IndexInFile08 из файла 01 либо по файлу 13 через OffsetIntoFile13
 | 
				
			||||||
 | 
					  Структура:
 | 
				
			||||||
 | 
					  Vector3 position;
 | 
				
			||||||
 | 
					  float time; // содержит только целые секунды
 | 
				
			||||||
 | 
					  short rotation_x; // делится на 32767
 | 
				
			||||||
 | 
					  short rotation_y; // делится на 32767
 | 
				
			||||||
 | 
					  short rotation_z; // делится на 32767
 | 
				
			||||||
 | 
					  short rotation_w; // делится на 32767
 | 
				
			||||||
 | 
					  ---
 | 
				
			||||||
 | 
					  Игра интерполирует анимацию между текущим стейтом и следующим по time.
 | 
				
			||||||
 | 
					  Если время интерполяции совпадает с исходным time, жёстко берётся первый стейт из 0x13.
 | 
				
			||||||
 | 
					  Если время интерполяции совпадает с конечным time, жёстко берётся второй стейт из 0x13.
 | 
				
			||||||
 | 
					  Если ни то и ни другое, тогда t = (time - souce.time) / (dest.time - source.time)
 | 
				
			||||||
 | 
					  ```
 | 
				
			||||||
- Тип 12 - microtexture mapping
 | 
					- Тип 12 - microtexture mapping
 | 
				
			||||||
 | 
					- Тип 13 - короткие меш-анимации
 | 
				
			||||||
 | 
					  ```
 | 
				
			||||||
 | 
					  Буквально (hex)
 | 
				
			||||||
 | 
					  00 01 01 02 ...
 | 
				
			||||||
 | 
					  ```
 | 
				
			||||||
- Тип 0A
 | 
					- Тип 0A
 | 
				
			||||||
  ```
 | 
					  ```
 | 
				
			||||||
  Не имеет фиксированной длины. Хранит какие-то строки в следующем формате.
 | 
					  Не имеет фиксированной длины. Хранит какие-то строки в следующем формате.
 | 
				
			||||||
@@ -225,10 +266,10 @@ grep -rlU $'\x73\x5f\x74\x72\x65\x65\x5f\x30\x35' .
 | 
				
			|||||||
  73 74 72 00 - строка "str" + null terminator
 | 
					  73 74 72 00 - строка "str" + null terminator
 | 
				
			||||||
  .. и повторяется до конца файла
 | 
					  .. и повторяется до конца файла
 | 
				
			||||||
  Кол-во элементов из NRes должно быть равно кол-ву строк в этом файле, хотя игра это не проверяет.
 | 
					  Кол-во элементов из NRes должно быть равно кол-ву строк в этом файле, хотя игра это не проверяет.
 | 
				
			||||||
 | 
					  Если у элемента эта строка равна "central", ему выставляется флаг (flag |= 1)
 | 
				
			||||||
  ```
 | 
					  ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Тип 02 имеет заголовок 140 байт.
 | 
					Тип 02 имеет заголовок 140 байт.
 | 
				
			||||||
Игра сначала читает из него первые 96 байт. А затем пропускает с начала 148 байт
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## `.wea`
 | 
					## `.wea`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -260,6 +301,7 @@ grep -rlU $'\x73\x5f\x74\x72\x65\x65\x5f\x30\x35' .
 | 
				
			|||||||
- `0x19` - unknown (implemented by Wizard in Wizard.dll, also by Agent in AniMesh.dll)
 | 
					- `0x19` - unknown (implemented by Wizard in Wizard.dll, also by Agent in AniMesh.dll)
 | 
				
			||||||
- `0x20` - IJointMesh
 | 
					- `0x20` - IJointMesh
 | 
				
			||||||
- `0x21` - IShade
 | 
					- `0x21` - IShade
 | 
				
			||||||
 | 
					- `0x23` - IGameSettings
 | 
				
			||||||
- `0x24` - IGameObject2
 | 
					- `0x24` - IGameObject2
 | 
				
			||||||
- `0x101` - 3DRender
 | 
					- `0x101` - 3DRender
 | 
				
			||||||
- `0x201` - IWizard
 | 
					- `0x201` - IWizard
 | 
				
			||||||
@@ -277,6 +319,37 @@ grep -rlU $'\x73\x5f\x74\x72\x65\x65\x5f\x30\x35' .
 | 
				
			|||||||
- `0x701` - INetworkInterface
 | 
					- `0x701` - INetworkInterface
 | 
				
			||||||
- `0x10d` - CreateVertexBufferData
 | 
					- `0x10d` - CreateVertexBufferData
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Опции
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					World3D.dll содержит функцию CreateGameSettings.
 | 
				
			||||||
 | 
					Она создаёт объект настроек и далее вызывает методы в соседних библиотеках.
 | 
				
			||||||
 | 
					- Terrain.dll - InitializeSettings
 | 
				
			||||||
 | 
					- Effect.dll - InitializeSettings
 | 
				
			||||||
 | 
					- Control.dll - InitializeSettings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Остальные наверное не трогают настройки.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					| Resource ID |    wOptionID    |            Name            | Default | Description |
 | 
				
			||||||
 | 
					|:-----------:|:---------------:|:--------------------------:|:-------:|-------------|
 | 
				
			||||||
 | 
					|      1      |   100 (0x64)    |      "Texture detail"      |         |             |
 | 
				
			||||||
 | 
					|      2      |   101 (0x65)    |         "3D Sound"         |         |             |
 | 
				
			||||||
 | 
					|      3      |   102 (0x66)    |    "Mouse sensitivity"     |         |             |
 | 
				
			||||||
 | 
					|      4      |   103 (0x67)    |   "Joystick sensitivity"   |         |             |
 | 
				
			||||||
 | 
					|      5      | !not a setting! |    "Illegal wOptionID"     |         |             |
 | 
				
			||||||
 | 
					|      6      |   104 (0x68)    |     "Wait for retrace"     |         |             |
 | 
				
			||||||
 | 
					|      7      |   105 (0x69)    |     "Inverse mouse X"      |         |             |
 | 
				
			||||||
 | 
					|      8      |   106 (0x6a)    |     "Inverse mouse Y"      |         |             |
 | 
				
			||||||
 | 
					|      9      |   107 (0x6b)    |    "Inverse joystick X"    |         |             |
 | 
				
			||||||
 | 
					|     10      |   108 (0x6c)    |    "Inverse joystick Y"    |         |             |
 | 
				
			||||||
 | 
					|     11      |   109 (0x6d)    |     "Use BumpMapping"      |         |             |
 | 
				
			||||||
 | 
					|     12      |   110 (0x6e)    |     "3D Sound quality"     |         |             |
 | 
				
			||||||
 | 
					|     13      |    90 (0x5a)    |      "Reverse sound"       |         |             |
 | 
				
			||||||
 | 
					|     14      |    91 (0x5b)    |  "Sound buffer frequency"  |         |             |
 | 
				
			||||||
 | 
					|     15      |    92 (0x5c)    | "Play sound buffer always" |         |             |
 | 
				
			||||||
 | 
					|     16      |    93 (0x5d)    | "Select best sound device" |         |             |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Контакты
 | 
					## Контакты
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Вы можете связаться со мной в [Telegram](https://t.me/bird_egop).
 | 
					Вы можете связаться со мной в [Telegram](https://t.me/bird_egop).
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user