Автор Тема: [SMD] хакинг Dune: The Battle for Arrakis  (Прочитано 1401401 раз)

M3tro ™ и 1 Гость просматривают эту тему.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7890 : 21 Февраль 2017, 06:42:58 »
а откуда вобще читаются эти блоки земли? сейчас то взял gif'ку из одного из редакторов и в ней по номерам блоки идут. но это несколько не верно :) хочу блоки и палитру для этого читать из игры, чтоб на случай если пользователь что-то менял в игре, то редактор видел эти измененные блоки и мог их рисовать.

точно так-же хочу и юнитов, чтоб названия и внешний вид читался из ресурсов, а не из кода самого редактора. потому как пользователь мог запилить своего юнита со своим внешним видом. вот было бы здорово, если редактор будет это дело читать и использовать на редакторе карт и миссий.

по второй мысли то в принципе понятно - в сборщике лежат эти вещи отдельно, там другая проблема - размеры. ведь это может быть пехотинец - 8х8, а может быть что пожирнее. и вроде как тип спрайта как раз за это отвечает... но я пока еще не совсем понял про этот тип...

потом градусы поворота юнита. в редакторе... не помню чьем - был момент поворота колесиком мышки. так вот у трайка - 5 вариантов спрайта, а у ланчера три. то есть трайк можно будет повернуть на... ээ... 22 градуса? или сколько там... а ланчер только 0, 45, 90 - то есть промежуточного между 0 и 45 не будет, как у трайка. так-же сам ланчер состоит из трех спрайтов один 2х3, второй 3х3, третий 3х2. рдлорыашгывало *непереводимыйрусскийфольклор. поэтому хотелось бы знать где лежит подобная таблица:
тип: ланчер
спрайт1: файл.бин (мордой вверх)
спрайт1конфиг: 2х3
зеркало1: 0 (спрайт как есть)
спрайт2: empty (так как нет промежуточного между 0 и 45 градусами)
спрайт2конфиг: empty
зеркало2: 0
спрайт3: файл.бин (45 градусов поворот)
спрайт3конфиг: 3х3
зеркало3: 0

спрайт7: файл.бин (45 градусный)
спрайт7конфиг: 3х3
зеркало7: 1 (1 зеркало снизу, то есть это 135 градусов) (2 зеркало - слева. типа если это был 90 градусный спрайт, то с таким зеркалом станет 180, 3 зеркало и там и там, то есть если это был 45 градусов в оригинале, то после двух зеркал становится 225)

Добавлено позже:
и совсем вылетело из головы... где брать эти файлы:
при поражении:
LOSTBILD.WSA
LOSTVEHC.WSA

победа
WIN1.WSA
WIN2.WSA

брифинг
HARVEST.WSA
HEADQRTS.WSA
QUAD.WSA
LTANK.WSA
REPAIR.WSA
HVYFTRY.WSA
STANK.WSA  HARKTANK.WSA  ORDRTANK.WSA
PALACE.WSA
SARDUKAR.WSA

и почему на некоторых в конце указания названия файла добавлена какая-то W? по идее она входит в лимит строчки, то есть как здесь указано размер 10 байт. на 8 байт название файла, потом 9 байт пусто и 10 эта сраная W. ошибка при создании игры?
« Последнее редактирование: 21 Февраль 2017, 09:18:40 от SeregaZ »

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7891 : 22 Февраль 2017, 19:54:54 »
.WSA

и почему на некоторых в конце указания названия файла добавлена какая-то W?
1) Нету .wsa файлов в md версии, только в ПК.
2) Баг DME.


Добавлено позже:
точно так-же хочу и юнитов, чтоб названия и внешний вид читался из ресурсов, а не из кода самого редактора. потому как пользователь мог запилить своего юнита со своим внешним видом. вот было бы здорово, если редактор будет это дело читать и использовать на редакторе карт и миссий.
Это не вариант. Хотя блоки можно (game.smd+metatiles.bin), а вот конфиги юнитов если рассматривать rebuild, для старых внутри рома и не редактируются, для новых юнитов редактируются в отдельных файлах. (Разве что к следующей версии).
Лучше сделай просто чтобы редактор загружал картинки png из папки. Так сохранится совместимость с любой версией.
« Последнее редактирование: 22 Февраль 2017, 20:11:33 от Ti_ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7892 : 23 Февраль 2017, 06:03:35 »
так что, можно будет ожидать что эти файлы задних фонов брифингов в конце миссий WSA будут в отдельном виде? ладно там победный и поражение - они как gif - там есть анимация дыма есть и поэтому сложнее, но остальные то статичные. их можно будет увидеть в виде отдельных файлов? просто там несколько глупо будет выглядеть. скажем перерисовал ты орнитоптёр - а на этой картинке он оригинального дизайна. конечно на эти экраны никто не обращает внимание... но все равно хорошо бы эти картинки в виде отдельных файлов и файла палитры к ним :)

а по поводу юнитов - почему старые нельзя? они ж все итак лежат gfx\sprites_std в распакованном, так сказать, виде. так-же там-же tanks_sprcfg.bin лежит - он по видимому как раз и есть та моя таблица с размерами и "зеркалами". правда пока не понятно в каком формате там... вот я к чему и веду, чтоб юнитные спрайты были не цельной фигней, как они сейчас - скажем тот-же трайк где 5 видов в одном файле, а чтоб каждый кадр был отдельно. и чтоб этот каждый кадр был упомянут в том файле с моей таблицей описаний - то есть все... эээ... сколько там может быть вариантов? 17? вот все 17 для каждого юнита. я наверное даже смогу разрезать их на отдельные файлы - ты главное таблицу сделай и чтоб она читалась сборщиком.

по поводу png - можно конечно... но хотелось бы то чтоб читало юниты уже самих ромхакеров :) тут же ведь как - если такая таблица будет доступна для редактирования, то можно будет пехоту перерисовать вообще глобально. то есть если в оригинале она была скажем 8х8, то редактируя эту таблицу ты как бы можешь создать этой пехоте более жирный спрайт 16х16 скажем. естественно это может быть сделано только в разумных пределах - если увеличивать пехоту, то придется скажем отказаться от каких-то юнитов, то есть тайлы тех отказных пойдут в зачет измененного пехотного. или например тот-же трайк - нафига там 22 и 66 градусные тайлы? я понимаю что для плавности, но их можно было бы сэкономить и сделать как на ланчере скажем - вместо 5 кадров там всего 3. 0-45-90, вместо трайковских 0-22-45-66-90

и завершает мой список хотелок - флаги палитры для каждой иконки.

остальные хотелки уже забыл... так-что три пока-что :)
1. отдельные wsa файлы картинок брифингов
2. порезанные спрайты с таблицей их описаний
3. флаги палитры для иконок

Добавлено позже:
я пока демку набросаю о чем я толкую в плане таблицы спрайтов с зеркалами и размерами.

Добавлено позже:
длывазшрныа... все оказалось сложнее и запутанней.

Добавлено позже:
зато понятно что главный параметр это высота. то есть не нужно размеры указывать 3х3, 2х3 - достаточно только высоту. скажем 3 - система сама понимает что данные идут в столбик сверху вниз по 3 тайла до конца файла.

так-же понятно как был сделан шагающий юнит в каком-то там хаке - на основе пехотинца, просто ему увеличили размер с 8х8 на больше скажем 16х16. так-что туда можно Голиафа из старкрафта втулить :))) найти ток надо где этот сраный размер указывается...

помимо высоты и зеркала относительно нового кадра видимо должен быть еще один параметр - зеркало относительно не нового, а оригинального кадра. на примере кериола - там ведь спрайт всего-лишь половинка юнита.

но больше всего меня убивает что эти сраные программеры дюны, когда лепили эту самую дюну - не привели все к единому формату. я то думал если идет спрайт из нескольких спрайтов - то первый всегда 0 градусов - смотрит вверх. второй или 22 или 45. но на примере соника - он, скатина, будучи вторым 135 градусов. что опять таки путает мне все карты.
« Последнее редактирование: 23 Февраль 2017, 08:58:23 от SeregaZ »

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7893 : 23 Февраль 2017, 09:09:57 »
так что, можно будет ожидать что эти файлы задних фонов брифингов в конце миссий WSA будут в отдельном виде?
1) Можно. Только wsa файлов нет, есть .smd+.map. И эти картинки не задаются в файлах миссий.


Добавлено позже:
а по поводу юнитов - почему старые нельзя?
Цитата
конфиги юнитов если рассматривать rebuild, для старых внутри рома и не редактируются, для новых юнитов редактируются в отдельных файлах. (Разве что к следующей версии rebuild)

Добавлено позже:
я то думал если идет спрайт из нескольких спрайтов - то первый всегда 0 градусов - смотрит вверх. второй или 22 или 45. но на примере соника - он, скатина, будучи вторым 135 градусов. что опять таки путает мне все карты.
1) не вижу такого у соника. 2) В оригинальном роме дюны все спрайты 1 юнита одинакового размера.

Добавлено позже:
помимо высоты и зеркала относительно нового кадра видимо должен быть еще один параметр - зеркало относительно не нового, а оригинального кадра. на примере кериола - там ведь спрайт всего-лишь половинка юнита.
У орнитоптер конфиг на 3 спрайта, у кэриолл из двух вот и всё.  В оригинале такое у пехоты, у танков. Параметра зеркала половинки не существует.
« Последнее редактирование: 23 Февраль 2017, 09:21:33 от Ti_ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7894 : 23 Февраль 2017, 09:55:21 »
Цитата
И эти картинки не задаются в файлах миссий.
как не задаются? вон жеж на скриншоте они указаны. в начале файла миссии они описаны. или это просто обязательный мусор в файле миссии? осталось в наследство от пкашной? просто в редакторах карт то эти строки редактируются. эффект правда не проверял есть или нет, но они точно в редакторах есть.

по поводу разнобоя в изначальных спрайтах - вот соник и кериол:


может я их в один формат приведу к новому билду? в смысле чтоб если спрайт второй по счету - или в одном спрайте сразу 3 или 5 спрайтов спрятано - чтоб второй всегда был 22 или 45 градусов? вместо того разнобоя что смотрит или вниз-вправо или вниз-влево... чтоб всегда вверх-вправо всегда смотрел.

по поводу харвестера - что-то я не пойму, а чего их так много то спрайтов?
harvester.smd
harvester_spr1.smd
harvester_spr2.smd
harvester_spr3.smd
harvester_spr22.smd

какой сборщиком используется? harvester.smd? и там на 45 градусах точечка черная :) предлагаю её поправить на прозрачный цвет:


Добавлено позже:
а все нашел. harvester_spr1.smd и далее до 3. и опять он не туда мордой смотрит :)

Добавлено позже:
на этом харвестере 3 тайла пустые - просто так тратятся :(

а если его повернуть на 45 градусов в базовый спрайт - мы так 2 тайла не выиграем? точнее еще один. один то там итак уже выигрывается. но так по идее 2 же можно выиграть?


Добавлено позже:
хотя я тут думаю - а если харвестер распилить, как орнитоптёр скажем - это можно все 4 тайла же выиграть? системе же не обязательно чтоб в 0х0 начинался тайл спрайта? она может же, как тот-же скажем кериол, когда склеивает и скажем кериол смотрит влево мордой - то получается первый тайл у него пустой.
« Последнее редактирование: 23 Февраль 2017, 10:46:42 от SeregaZ »

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7895 : 23 Февраль 2017, 13:42:58 »
или это просто обязательный мусор в файле миссии? осталось в наследство от пкашной?
именно.

Добавлено позже:

Добавлено позже:
на этом харвестере 3 тайла пустые - просто так тратятся :(
Понятно. У соника и харвестера перевернутые и сдвинутые от центра тайлы, потому что я так сделал. Как раз наоборот - они тратятся. Прозрачные тайлы в конце одного спрайта совмещаются с прозрачными тайлами начала другого спрайта. И это могут быть спрайты разных юнитов. Возможно, я это уберу для удобства редактирования, правда свободной памяти поменьше будет тогда.
Насчёт сегментации ты можешь разрезать харвестер хоть на 10 спрайтов размером 8x8.  Просто сильно не режут из-за лимита спрайтов и нагрузки на процессор. http://gendev.spritesmind.net/forum/viewtopic.php?f=7&t=1371
« Последнее редактирование: 23 Февраль 2017, 13:52:43 от Ti_ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7896 : 23 Февраль 2017, 16:13:59 »
ссылка не открылась. ну да ладно. все равно не люблю читать официальные доки - мало что понимаю :)

то есть для удобства редактирования нынешние спрайты будут дополнены пустыми тайлами? то есть на том-же харвестере уже не будет черного пустого тайла в конце файла? понятно что размер файла увеличится при этом на 32 байта. (8х8 = 64 / 2 = 32 = потому что по 4 бита цвет, то есть в 1 байте 2 точки) и тогда получается все спрайты станут с четным количеством тайлов.

демку еще не доделал. но там будет показано о какой таблице я толкую. то есть 17 строк, а в них инфа по каждому углу поворота.

про орнитоптёры даже думать не хочу. я думал там мозаика, как пятнашки - то есть крыло 8х8 надо лепить к базовому спрайту в знакоместо, но выходит нифига не в знакоместо, а может быть ниже или выше на несколько пикселов, а не строго по тайлу... что опять таки спутало все карты :) ну потом над этим буду думать после демки.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7897 : 23 Февраль 2017, 16:38:59 »
ссылка не открылась. ну да ладно. все равно не люблю читать официальные доки - мало что понимаю :)
там нет доков и ничего читать не надо. просто пара картинок.

Добавлено позже:
то есть для удобства редактирования нынешние спрайты будут дополнены пустыми тайлами? то есть на том-же харвестере уже не будет черного пустого тайла в конце файла? понятно что размер файла увеличится при этом на 32 байта.
Думаю да. Ведь даже сейчас, в некоторых спрайтах при перерисовке, надо ориентироваться на оригинальную картинку, и не изменять другие пустые тайлы, иначе в другом спрайте может графика поломаться.

Добавлено позже:
и тогда получается все спрайты станут с четным количеством тайлов.
Не станут. 1x1; 1x3, 3x1 никто не отменял.  :)


Добавлено позже:
то есть крыло 8х8 надо лепить к базовому спрайту в знакоместо, но выходит нифига не в знакоместо, а может быть ниже или выше на несколько пикселов, а не строго по тайлу..
Всё правильно. Потому что спрайты могут располагаться как угодно. Ты можешь даже так разрезать, размещая друг на друге с частичным пересечением, в некоторых ситуациях можно так выиграть в размере.
« Последнее редактирование: 23 Февраль 2017, 16:47:37 от Ti_ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7898 : 24 Февраль 2017, 10:57:54 »
облом. халтуру тут подсунули... придется над ней посидеть какое-то время. и тем не менее - правильно ли я понимаю, что в файле tanks_sprcfg.bin как раз и находится та моя таблица с четким описанием спрайтов для каждого юнита? если да - можно где-то взять структуру этого файла?

со своей демкой пока затык... начинал пилить 17 возможных углов поворота юнита, а тут вспомнил что у пехоты предполагается анимация, а эти спрайты то-же надо учитывать. что опять таки сломало всю мою задумку :)



видимо нужна будет еще одна галка - "анимация", и видимо количество кадров, и видимо размер каждого кадра. чтобы при пометке этой галки - создавались еще окошки, где пользователь бы рисовал эту самую анимацию или правил уже существующую.

по задумке будет снизу еще увеличенное окно со спрайтом и может даже редактором, рядышком будет еще окошко, в котором юнит будет крутится вокруг свой оси. и видимо еще рядышком еще окошко, где юнит будет ходить согласно кадрам анимации, если была помечена галка анимации.

плюс еще надо будет предусмотреть сдвиги этих спрайтов, как в случае с орнитоптером. тут вобще жопа как подумаю об этом :)

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7899 : 24 Февраль 2017, 13:08:53 »
если да - можно где-то взять структуру этого файла?
Формат конфигов спрайтов для всех один. Смотри файл new_spr_75.asm.  Что касается танков там по 128 разных конфигов (8 корпус*8 башня*2положения башни при выстреле).  В hurricane_srp.asm тоже самое что в tanks_spr.bin, только 64 конфига.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7900 : 25 Февраль 2017, 08:10:52 »
да что-то не очень то и помогло...

Цитата
rquadspr:
 incbin gfx\sprites\rocketquad.smd
за меткой rquadspr закрепляется файл rocketquad.smd, в котором 5 спрайтов по 2х2 тайла каждый.

Цитата
rquad_tile   equ   (rquadspr-new_units_spr)/32+base
тут черт знает что происходит. видимо расчитывается какой это номер тайла по отношению к самому первому.

Цитата
Rquad_spr_cfg1:      dc.w 0,   $10, $10, $FFF8, spr2x2, rquad_tile+00, $FFF8
Rquad_spr_cfg2:      dc.w 0,   $10, $10, $FFF8, spr2x2, rquad_tile+04, $FFF8
Rquad_spr_cfg3:      dc.w 0,   $10, $10, $FFF8, spr2x2, rquad_tile+08, $FFF8
Rquad_spr_cfg4:      dc.w 0,   $10, $10, $FFF8, spr2x2, rquad_tile+12, $FFF8
Rquad_spr_cfg5:      dc.w 0,   $10, $10, $FFF8, spr2x2, rquad_tile+16, $FFF8
тут видимо индивидуальные настройки по каждому углу поворота.

$10, $10 - видимо это координаты х, у по отношению к 0, 0 ячейки карты. типа если скажем ячейка карты у нас 64х64, то надо отступить от края на 16 пикселей и начинать рисовать тайлы юнита. вот только почему они обозначены как unused, unused

$FFF8 - черт знает что за Y_pos. 65528 или там с минусом? тут бы прояснить.

spr2x2 - видимо размер что 2 тайла на 2.

rquad_tile+00 - номер тайла, откуда начинать рисовать тот 2х2

$FFF8 - тож самое непонятное, только что по Х.


однако почему только 5 штук? разве их не должно быть 16?

то есть тогда таблица выглядела бы по другому:
угол0, используется файлнейм1, размер 2х2, сдвигать по Х на $10, по Y на $10, зеркалох = 0, зеркалоу = 0, половинках = 0, половинкау = 0
угол22, используется файлнейм2, размер 2х2, сдвигать по Х на $10, по Y на $10, зеркалох = 0, зеркалоу = 0, половинках = 0, половинкау = 0
*****
угол112, используется файлнейм4, размер 2х2, сдвигать по Х на $10, по Y на $10, зеркалох = 1, зеркалоу = 0, половинках = 0, половинкау = 0

то есть до 90 они шли без зеркал по очереди, после 90 - используются те-же файлы, но уже применяется зеркало, как пример 112 градусов - зеркалит по оси Х.

тут-же всего 5 вариантов расписано - я не понимаю как система понимает остальные положения. это ладно в том файле они пять положений идут друг за другом 0, 22, 45, 67, 90... но вдруг это соник? там же 0, 125, 90. где-то должна быть эта моя таблица по 16 позициям поворота. ну или если этот танк, там то нету промежуточных - значит всего 8. и тем не менее тут для рокетного квада должно быть 16, а их получается всего 5 и то не вся информация какая должна быть - нет упоминания зеркал и флага половинки, то есть инструкции клонировать, зеркалить и склеивать, как это должно быть в случае с кериолом.

Добавлено позже:
а так-же в таблице должен быть флаг использования анимации. забыл :) как в случае с пехотой. и видимо этот не столько флаг, сколько видимо массив из 3 значений - 3 кадра анимации. если все 3 - одно значение, значит анимации нет. если там разные адреса спрайтов - значит анимация есть.

вот тогда мозаика в моей голове складывается. хотя  еще не совсем - ибо есть еще орнитоптёры :)
« Последнее редактирование: 25 Февраль 2017, 08:20:30 от SeregaZ »

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7901 : 25 Февраль 2017, 08:54:43 »
$10,$10 - это размеры спрайты (16на16), насчёт unused я наврал, они нужны, но только для того чтобы юнит не пропадал на левом и верхнем крае экрана (когда на экране видна только часть юнита).
$FFF8 - это значит -8 , смещение спрайта от центра по Y.
$FFF8 - это тоже самое, по X.
rquad_tile+00 - номер тайла + зеркала (HMirr, VMirr, HVMirr или $0800, $1000, $1800)


Добавлено позже:
rquadspr:
 incbin gfx\sprites\rocketquad.smd
за меткой rquadspr закрепляется файл rocketquad.smd, в котором 5 спрайтов по 2х2 тайла каждый.
метка rquadspr указывает на адрес файл rocketquad.smd в роме, в котором может быть что угодно.

Добавлено позже:
rquad_tile   equ   (rquadspr-new_units_spr)/32+base
тут черт знает что происходит. видимо расчитывается какой это номер тайла по отношению к самому первому.
base это начальный номер тайла в видеопамяти для новых юнитов (base      equ   $ADA0/32   ; base tile    в new_spr_ptr.asm); $ADA0 - адрес видеопамяти,  32 размер тайла.
(rquadspr-new_units_spr)/32  - вычисляем какой начальный тайл у конкретного нового юнита получается. (узнаем размер вычитая rquadspr - адрес рома где лежит файл спрайта квада минус начальный адрес new_units_spr, откуда начинаются файлы спрайтов новых юнитов).


Добавлено позже:
однако почему только 5 штук? разве их не должно быть 16?
Остальные зеркалом образуются.
Sprite_type задан в файле юнита:
sonblast_spr_sets ; 0
std_units_3f; 1
std_units_5f ; 2
soldiers_spr_sets ; 3
soldiers_spr_sets ; 4
thopter_spr_sets ; 5
no_spr_cfg ; 6
carryall_spr_sets ; 7
harvester_spr_sets ; 8
frigate_spr_sets ; 9
config_tank_sprites ; 10
config_SiegeTank_sprites ; 11
superlauncher_spr_sets; 12
lasertank_spr_sets; 13
Возможно сделаю ещё 2 типа, 3f юниты на 8 положений и 5f юниты на 16.

Добавлено позже:
нет упоминания зеркал и флага половинки,
Параметра зеркала половинки не существует.
У кэриолла в конфиге 2 записи вот и всё.
Зеркалирование целого спрайта по V,H,VH для типов std_units_3f и std_units_5f  вычисляется на основе угла поворота юнита (если угол от 128 до 191 - при чтении конфигов код добавляет маску H, если от 128 до 255 , то добавляет маску V).
« Последнее редактирование: 25 Февраль 2017, 09:33:38 от Ti_ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7902 : 25 Февраль 2017, 10:08:55 »
все равно в голове моей чот не складывается :) я подумал раз система танцует от типа спрайта, то тогда все понятно - от этого типа спрайта игра выбирает соответствующий алгоритм постройки таблицы углов для юнита... но вот например соник и ланчер - тип спрайта 1. я думаю у них второй спрайт по идее должен одинаково смотреть на 45 градусов. однако на сонике нифига не 45 - он смотрит совсем в другую сторону - 225. но откуда система знает что базовый спрайт оказывается совсем не 45 и в игре все-таки правильно его разворачивает? значит это не от типа спрайта зависит. где-то в другом месте это обозначено.

тогда выходит тип содержит следующие инструкции:
1. количество спрайтов - 3 или 5. (про угловые.) и соответственно 8 или 16 углов поворота.
2. есть анимация или нету. (у техники нет, у пехоты есть)
3. в случае если 3 спрайта, то сам тип угловых спрайтов - это может быть 0, 45 (или 225), 90 - техника или 0, 90, 180 - пехота. ведь у пехоты нет 45 градусных. ток вверх, вправо и вниз.
4. половинка спрайта или целый (кериол или другие типы)
5. башня есть или нету (танк и харвестер например)
6. особый тяжелый случай с орнитоптёром или это обычный юнит.
7. есть ли анимация выстрела (осадный или скажем трайк)
« Последнее редактирование: 25 Февраль 2017, 10:15:17 от SeregaZ »

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7903 : 25 Февраль 2017, 10:55:20 »
но откуда система знает что базовый спрайт оказывается совсем не 45 и в игре все-таки правильно его разворачивает?
В самом конфиге к номеру тайла добавлена маска зеркала.
stank_spr_cfg1: dc.w 0, $18, $18, $FFF4, $600, $483, $FFF4+4
stank_spr_cfg2: dc.w 0, $18, $18, $FFF4, $A00, $47A+$1800, $FFF4
stank_spr_cfg3: dc.w 0, $18, $18, $FFF4+4, $900, $489, $FFF4

Добавлено позже:
тогда выходит тип содержит следующие инструкции:
Не содержит. std_3f и std_5f общие случаи, всё остальное частные.

Добавлено позже:
4. половинка спрайта или целый (кериол или другие типы)
В 3-ий раз пишу, никакой половинки не существует. Там просто более 1 записи в конфиге (Как и у групп пехоты, у танков). Как я уже писал , можно хоть на 20 частей порезать, и положение каждого кусочка описать, в т.ч. с масками.

Конфиг спрайта кэриолла отдельный, только потому что в него дорисовывается харвестер , если hold_id!=0.  Если переставить тип на std_3f, не будет только этого.

carry_spr_cfg1: dc.w 1
dc.w $20, $20, $FFF0, $700, $1FCC, $FFF0
dc.w $20, $20, $FFF0, $700, $17CC, $0

carry_spr_cfg2: dc.w 0
dc.w $20, $20, $FFF0, $F00, $17D3, $FFF0

carry_spr_cfg3: dc.w 1
dc.w $20, $20, $FFF0, $D00, $17E3, $FFF0
dc.w $20, $20, $0,    $D00, $7E3,  $FFF0

Добавлено позже:
харвестер например)
У харвестера отдельный случай, в котором дорисовывается спрайт хвоста харвестера, если он на спайсе. Правда мне его ещё с 3-конфигов пришлось на 8 разбить, потому что там один из спрайтов сдвинут, говорил для чего. Так бы тоже можно было использовать std_3f.
У танков и прочего (последние 4 типа), частные случаи, в котором номер спрайта из файла юнита значения не имеет, а конфиги читаются с опредленных адресов (c указателей hurricane_spr_cfgs, tank_spr_cfgs, lasertank_spr_cfgs).
« Последнее редактирование: 25 Февраль 2017, 11:14:03 от Ti_ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7904 : 25 Февраль 2017, 12:07:40 »
Цитата
добавлена маска зеркала.
вот тут бы уточнить, но я пока не знаю точно как сформулировать этот уточняющий вопрос :)

не пойму какая еще маска, когда это значение номер тайла. может не маска, а сдвиг по линейке тайлов? я так понимаю есть реальные и есть виртуальные тайлы. реальные - это те, которые лежат в роме. а виртуальные - это по моей теории то, что система сама дорисовывает к тем реальным, но зеркально по всем осям.

например реальных 100 тайлов. система создаст еще 100 и поместит туда отзеркаленные по оси х, потом еще 100 по оси у, потом еще 100 по обеим осям. а после система из конфигов обращается к этому длинному списку тайлов по своим нужным адресам. хотя моя теория рассыпается в моменте с пехотой. ведь когда пехота смотрит мордой вверх - этот тайл не нужно зеркалить, а второй момент - если отзеркалить каждый тайл, то потом при сборке юнит будет вывернут на изнанку.


замудрено это кароче...

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7905 : 25 Февраль 2017, 12:32:44 »
не пойму какая еще маска, когда это значение номер тайла.
        - каждый символьная позиция занимает 2 байта, где хранится:
          • номер символа в знакогенераторе (10 бит); указывает на символ в таблице символов
          • зеркало по горизонтали
          • зеркало по вертикали
          • палитра цвета (2 бита); индекс в памяти цвета (CRAM)
          • приоритет

Добавлено позже:
rquad_tile+00 - номер тайла + зеркала (HMirr, VMirr, HVMirr или $0800, $1000, $1800)

номер тайла от $0000 до $07FF

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7906 : 25 Февраль 2017, 13:00:08 »
так?
%1111111111111111
      11111111111 номер тайла
     1            зеркало по горизонтали
    1             зеркало по вертикали
  11              палитра цвета (понятно чего палитр может быть только 4)
 1                приоритет
приоритет это на случай с кериолом, когда он харвестер будет тащить?

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7907 : 25 Февраль 2017, 14:52:26 »
приоритет это на случай с кериолом, когда он харвестер будет тащить?
Нет, это приоритет над фоном (курсоры,радар, кредиты, иконки).

Оффлайн -RagmuL-

  • Пользователь
  • Сообщений: 131
  • Пол: Мужской
  • -RagmuL-
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7908 : 25 Февраль 2017, 20:33:01 »
Ааааа....
Читая это,чувствую что,становлюсь программистом! ....
Аааа.... Бежать! ....

P.S: Где новости по хакам!?

P.S 2: если что,я шучю! =D

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7909 : 26 Февраль 2017, 05:41:57 »
где где... будут! :) чем больше пытаешь Ti_, тем больше становится возможностей по хакам, и исходя из этих возможностей люди придумывают какие-то новые идеи, и в итоге рождаются какие-то новые хаки.

Оффлайн Серьба

  • Пользователь
  • Сообщений: 3
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7910 : 27 Февраль 2017, 16:36:29 »
Кто-нибудь может подсказать, почему большая иконка юнита в редакторе выглядит вот так? С маленькой иконкой тоже самое.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7911 : 27 Февраль 2017, 17:18:34 »
незнай... у меня все замечательно. попробуй выставить для больших иконок формат графики: 4bpp msx/md/wsc и шаблон: object 12, 7 H

Добавлено позже:
иконки шаблон: sprite 3,3 V. формат тот-же что большие иконки.

Оффлайн Серьба

  • Пользователь
  • Сообщений: 3
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7912 : 27 Февраль 2017, 18:07:56 »
Благодарю!!! Теперь всё нормально.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7913 : 27 Февраль 2017, 19:33:18 »
вот посему то и я хотел бы запилить графический редактор :) чтоб независеть от выбранных настроек в yyy, а чтоб сразу были и правильные шаблоны и палитры и блек джек... и чтоб сразу конфигурационную инфу писалось. и чтоб каждый кадр отдельно показывалось. и чтоб друг за другом анимация была.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7914 : 27 Февраль 2017, 20:27:25 »
вот посему то и я хотел бы запилить графический редактор :) чтоб независеть от выбранных настроек в yyy, а чтоб сразу были и правильные шаблоны и палитры и блек джек... и чтоб сразу конфигурационную инфу писалось. и чтоб каждый кадр отдельно показывалось. и чтоб друг за другом анимация была.
Сборку я обновлю допустим, чтобы можно было и у оригинальных юнитов размеры менять. Но, не очень понятно как ты сможешь сделать, чтобы твой редактор оперировал данными конфигов из файлов. Поскольку данные описывающие спрайты, обращаются по номеру тайла, а не к файлам. Чтобы узнать номер, надо открывать все файлы спрайтов, как бы создавая блок памяти-тайлсет. Ведь в конфигах может что угодно быть, например сделать 3-ки пехоты в отряд 2трупера+2пехотинца.
« Последнее редактирование: 04 Март 2017, 16:59:40 от Ti_ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7915 : 28 Февраль 2017, 06:55:22 »
ну это то даааа... еще сто лет назад я говорил про номера спрайтов или тайлов :) чтобы вместо названиефайла.бин - был номер. хотя там ошибки случаем нет? сейчас смотрю номер спрайта (не тайла) в редакторе и чот харикейн и лазер танк обои 121 и он же осадный. я чот думал что номер спрайта вещь уникальная... походу этот номер спрайта нигде не участвует в работе игры.

по поводу номера тайла я еще подумаю потом. начать наверное надо с самого самого простого - редактирования большой и маленькой иконки, а так-же палитры к ним. надеюсь флаг палитры иконок тоже будет в новой версии вынесен? чтоб мне победить древний недочет с разнобоем в палитре рисования иконок в своем редакторе.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7916 : 28 Февраль 2017, 19:42:19 »
сейчас смотрю номер спрайта (не тайла) в редакторе и чот харикейн и лазер танк обои 121 и он же осадный. я чот думал что номер спрайта вещь уникальная... походу этот номер спрайта нигде не участвует в работе игры.
Номер спрайта указывает на ; main sprites ptrs
sprites_offs.
Вероятно, в пк-версии использовалась только одна эта таблица. В сега версии такие вещи как танки и некоторые другие сделаны костылем в коде, и их значения sprite1 (и sprite2) из файла юнита значения не имеют. Поскольку движок на 1 объект, только 1 спрайт поддерживает.


Добавлено позже:
а так-же палитры к ним. надеюсь флаг палитры иконок тоже будет в новой версии вынесен? чтоб мне победить древний недочет с разнобоем в палитре рисования иконок в своем редакторе.
Номер палитры, которые во время игры заключены в sprites_offs, в старший байт адреса.


Добавлено позже:
походу этот номер спрайта нигде не участвует в работе
Ну в теории можно передалть, чтобы для каждого юнита по номеру спрайта бралось по таблице.
« Последнее редактирование: 04 Март 2017, 16:59:26 от Ti_ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7917 : 01 Март 2017, 06:09:33 »
Цитата
Ну в теории можно передалть, чтобы для каждого юнита по номеру спрайта бралось по таблице.
не... я к тому, что раз этот параметр не используется, то и в редакторе тогда он нафиг :)


а вот геморой с флагом палитры иконок - это новость плохая.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7918 : 01 Март 2017, 20:23:30 »
первый цвет в палитре всегда прозрачный? это закон? хочу запилить вставку картинки с прозрачным цветом. это оказывается тот еще геморой... там целая система оказывается. спёр у буржуев код, еще пока сам точно невдуплил, но вроде получается. вот думаю при копировании из буфера обмена чтоб картинка прозрачилась везде, где цвет, который под первым номером в палитре (сейчас это фиолетовый вроде)

так-же думаю для удобства работы в том-же пейнте думаю надо сделать некую картинку шаблон - где будут границы иконки и 16 квадратов с цветами, чтоб можно было пипеткой в пейнте правильные цвета брать.

вот с селектом целая история... этот селект наверное не получится реализовать.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #7919 : 01 Март 2017, 21:37:03 »
не... я к тому, что раз этот параметр не используется, то и в редакторе тогда он нафиг :)
Тебе же проще будет, если всё по одной системе, чем добавлять костыли вроде "в случае если spritetype=10 , то считать поинтер на конфиг из lasert_cfg_ptr: dc.l lasertank_spr_cfgs, а не из общей таблицы".

Добавлено позже:
первый цвет в палитре всегда прозрачный? это закон?
да.