сперва про плохое
добавлять то сии приблуды можно... но это увеличивает костыли из раза в раз. предполагается что взяв оригинальный сборщик Тая новая версия редактора внесет все наши тяп-ляп изменения, и испортит эту красоту. это как бы не сложно... при запуске редактор будет проверять наличие всех новых файлов, распакует их куда надо и допишет в файл include.asm все что надо... НО! все что было до но чушь собачья - если раньше редактор уже дописывал в конец include.asm строчку с плагинами:
то теперь новые фиксы надо бы дописывать между последней ортодоксальной строчкой ENDC и нашими еретическими плагинами. если ранее редактор тупо открывал include.asm, прыгал в конец файла и вписывал свою писанину, то теперь так сделать не получится. ведь писанина уже может быть - если юзер распаковывал плагины ранее.
с другой стороны - можно будет фиксы внести в файл plugins.asm. естественно сделав проверку сначала: а распаковывал ли пользователь плагины? и старый ли этот файл plugins.asm - заменить его на новый? в принципе это можно сделать и так-же добавив переменные для вкл \ выкл этих новых фиксов. разве что можно еще прикопаться к названию - plugins.asm, но внутри помимо плугинов будут еще и фиксы. ээээ... ну как-то не очень
работать может и будет, но название не подходит... ладно черт с ним пока оставим как есть.
далее:
; -------------------------------------------------
; Fix timer VRAM overlap issue
; -------------------------------------------------
org $37ec
move.l #$71000003,(a2) ; 7F400003
org $5936
dc.w $A788; $A7FA
тут вроде все классно. перенос из старого места в памяти, в куда вписывался фригат или детханд или надпись нет денег по моему... поскольку они редкослучаемые вещи, то писались в одно и то-же место с целью экономии памяти. таймер писался туда-же и в результате при вызове фригата на нем были циферки. так-же и дедханд цифровой летал... пячаль. адрес теперь рядышком с таблицей спрайтов. видимо там было свободное место, которое не использовалось и туда как раз влезли цифры. хотя я думал фикс будет более сложный: если появляется фригат или детханд на карте - таймер просто не отображается. как только ракета долетела и взорвалась или фригат улетел с карты - таймер возвращается. ну да ладно. сделано как сделано.
второе:
; -------------------------------------------------
; Fix new block types bullet holes
; -------------------------------------------------
org $16b0e
jmp locFixNewTypesBulletHoles
*и в конце файла
; -------------------------------------------------
; Fix new block types bullet holes
; -------------------------------------------------
locFixNewTypesBulletHoles:
;org $16b0e
; set boundaries on new blocks values
and.w #$1f,d0
; get table
lea surfaces_bullet_types(pc),a0
; get table value : 1 = earth, 0 = sand
move.b (a0,d0.w),d0
; if not earth, dont set the flag
beq .notEarth
; set earth flag
moveq #1,d4
.notEarth:
; return to old routine
jmp $16B18
surfaces_bullet_types:
dc.b 0, 0, 0, 0
dc.b 1, 1, 0, 0
dc.b 0, 0, 0, 0
dc.b 0, 0, 0, 1
dc.b 0, 0, 0, 0
even
я думал честно говоря что за вид воронок на земле или песке отвечает другой параметр - тот который, как выяснилось за количество дырок или на худой конец тот, где переключается песок \ не песок для червя - у этого параметра логика в принципе такая-же.
но оказалось что он не бум бум и не управляет этой фигней... для меня это вообще открытие
а тут бахнули отдельную таблицу для этого параметра... эм... это все конечно не сложно будет прикрутить к редактору, но почему неользя было оригинальную таблицу использовать для этого? тем более мы её уже обрабатываем. конечно стрим не смотрел... и возможно вместо:
; get table
lea surfaces_bullet_types(pc),a0
использовать что-то типа surfacesptr (предварительно эту метку добавив в файл с сурфейсами) и изменить формулу pc на что-то типа:
lea surfacesptrs((pc * 28) + 14),a0
предположил бы что pc начинается с нуля и соответствнно умножая на 28 - получим сдвиг на строчку в той оригинальной таблице, а +14 - сдвиг на нужный параметр. правда там .w тип, а здесь .b - однобайтовые... и сама логика работает наоборот вместо get table value : 1 = earth, 0 = sand - 1 песок, 0 земля. но видимо или lea не поддерживает умножение, или эти математические операции добавят головной боли 68000 с Z80, которые итак уже икают под нагрузками. и тем не менее отдельная таблица для этой приблуды меня конечно расстраивает. было бы удобнее использовать оригинальную. чтоб все в одном месте лежало.
третье: фикс, который... эээ... не фикс?
; -------------------------------------------------
; Fix new block types harvester issue
; -------------------------------------------------
org $a8e6
jmp locFixNwTypes
* внизу
; -------------------------------------------------
; New block types harvester spawn fix
; -------------------------------------------------
locFixNwTypes:
; old checks
cmpi.w #$b,4(sp)
beq subFixNewTypesOldWall
cmpi.w #$6,4(sp)
beq subFixNewTypesOldMountain
; new type check
cmpi.w #$f,4(sp)
beq subFixNewTypesOldMountain ; behave like a mountain
; return to old routine
jmp $a8f6
subFixNewTypesOldWall:
jmp $a934
subFixNewTypesOldMountain:
jmp $a8fe
я так понимаю что тут без разбору новому блоку... эээ... под номером $f ? внушается что он гора. и тогда харвестер наконец раздупляется, что перед ним непроходимое препятствие и тогда начинает спавница из завода как полагается и ехать по своим делам. нооо это какой-то полуфикс. ведь нужно еще чтоб была во первых проверка на все 4 новые поверхности, а во вторых выставлена ли скорость 0 для харвестера у данного типа поверхности. в итоге это хоть и работает... но не совсем верно. тоже самое касается не только харвестера но и других юнитов, которые будут строится в заводе, который в круг застроен таким новым блоком. должна быть сначала проверка - а нулевая ли скорость на данном типе блока? и только потом отфутболивание на тип горы... посему это костыль, а не фикс. впрочем игра Дюна сама по себе ходячий костыль... уже столько раз думаешь про себя: о! я нашел вроде бы систему! она работает по такому-то закону! тут бац вылазит какой-то нюанс... юнитов 32? и среди нет сардукаров с фрименами? но они есть
палитры 4 штуки? последние 3 цвета - цвет дома? - но иконка девастатора это не то. ты не понимаешь, это другое! и таких костылей, выбивающихся из общей логики работы - тьма
про хороше:
вернул в зад возможность конвертации сэмплов через SOX - редактор будет распаковывать сам из себя эту папку с SOX.
добавил аквалайзер для варианта конвертации сэмплов через bass.dll. там так-же есть возможность передвигать полоски аквалайзера, то есть не жесткие привязки типа как в винампе: 60, 120, 300... а прям мышкой драг н дроп и двигай влево или вправо на нужную частоту.
добавил возможность создания шняготаблиц. незнаю какой в них толк, но как ты просил - добавил. но без турелей. ну их в задницу...
обновил окошко редактирования сурфейсов
ну и жалко что хвост харвестера не пофиксили