Разработка и ромхакинг > Ромхакинг и программирование
Battle City для SEGA MEgaDrive2
<< < (6/9) > >>
sergi:
Если что то вот тут можно найти информацию как управлять PSG и FM режимами для синтезаторов Yamaha - в принципе управление у них общее так сказать

http://www.raregame.ru/file/15/YM2608.pdf
HoRRoR:

--- Цитата ---откуда уверенность что по двум крайним точкам?
--- Конец цитаты ---
Прямиком из кода. Брался как-то писать клон (абсолютный клон) танчиков под PC, консультировался с АнС'ом, который работал с исходниками. Узнал много интересного о технической части игры.


--- Цитата ---HoRRoR (19:03:35 12/05/2009)
Кстати, ты не можешь описать мне AI противников?
В смысле в обычных танках

АнС (19:03:47 12/05/2009)
в оригинальных танчиках?

HoRRoR (19:03:49 12/05/2009)
Угу

АнС (19:03:51 12/05/2009)
да
там всё аи построено на вероятности вражеского танка переключить режим
т.е. танки вообще не думают и не знают, где находятся, что впереди или сзади
они движутся по прямой впрёд
но при пересечении границы тайла (когда X или Y кратны 8) делается вызов рандомного числа от 0 до 255
точнее даже от 0 до 15
т.к. после JSR Get_Random это число ещё и AND 0F
короче, если число = 0, то танк меняет направление на случайное (одно из четырёх, ттоже рандомно, может совпасть с текущим)
т.е. вероятность повернуть - одна шестнадцатая
но это только при обычной езде
когда танк упирается в стенку, получается интересная ситуация
в каждом кадре его координата кратна 8
ведь он не сдвигается с места, т.к. впереди стена (или вода)
соответственно, вероятность повернуть резко возрастает

HoRRoR (19:08:53 12/05/2009)
Вернее он чаще берёт рэндом?

АнС (19:08:55 12/05/2009)
точнее, вероятность остаётся той же - 1/16, но т.к. вызов рандомного числа делается в каждом кадре, то поворот вскоре осуществляется

HoRRoR (19:09:09 12/05/2009)
А если он с танком сталкивается?

АнС (19:09:28 12/05/2009)
все танки рисуют под собой стенку
так осуществляется быстрая проверка коллизий
если бы проверять все 8 танков перебором - ресурсов процессора не хватило бы

HoRRoR (19:09:54 12/05/2009)
Но тогда одна координата не кратна 8. Он проверяет кратность только по оси движения?

АнС (19:10:11 12/05/2009)
а другая всегда будет кратна
ведь при повороте танки выравниваются на границу тайла
можешь сейчас запустить BC и поуправлять своим танком
когда поворачиваешь на 90 градусов, танк смещается на пару пикселей, автоматически выравниваясь по координатам блоков
именно поэтому в BC удобно управлять, не цепляясь краями спрайта за стенки
да во многих играх так
движение реально осуществляется по сетке

HoRRoR (19:12:11 12/05/2009)
Т.е. при столкновении вызывается та же процедура, что и при кратности координат?

АнС (19:12:16 12/05/2009)
но в пределах одной клетки движение попиксельное

HoRRoR (19:12:31 12/05/2009)
Или кратность координат проверяется только по оси движения?

АнС (19:12:32 12/05/2009)
нет никакой проверки столкновений

HoRRoR (19:12:40 12/05/2009)
Ну это я условно

АнС (19:12:46 12/05/2009)
кратность координат проверяется по обоим
вместо коллизий спрайтов проверяется коллизия с бэкграундом

HoRRoR (19:13:18 12/05/2009)
Или стенки под танками рисуются по координатам, кратным 8-ми?

АнС (19:13:18 12/05/2009)
а на бэкграунде остаются невидимые следы под каждым танком
да, под каждым танком 4 тайла
зачастую эта "тень" не совпадает с реальным положением спрайта - сдвинута на пару пикселей

HoRRoR (19:13:56 12/05/2009)
Т.е. если танк по координатам 1,1 - стенка будет 0,0?

АнС (19:14:00 12/05/2009)
да
только танк не может быть по координатам 1:1

HoRRoR (19:14:16 12/05/2009)
А

АнС (19:14:18 12/05/2009)
только по 0:1 или 1:0

HoRRoR (19:14:19 12/05/2009)
Ну 1,0 :)

АнС (19:14:45 12/05/2009)
Вообще, много хитростей придумали эти ребята из namco

HoRRoR (19:15:05 12/05/2009)
А каждый тайл может иметь 5 состояний?

АнС (19:15:15 12/05/2009)
почему, 256

HoRRoR (19:15:37 12/05/2009)
А, тьфу
Ну т.е. каждый тайл условно состоит из 4-х частей?
Каждая из которых может быть уничтожена?

АнС (19:15:56 12/05/2009)
не, это сквадрон (или блок)
сквадрон - 16x16 пикселей
тайл - 8x8
а ты, наверное, говоришь про кирпичные тайлы
с кирпичами хитрость есть мелкая
существует 16 версий тайла кирпича - посмотри в FCEUX PPU Viewer и сразу поймёшь

HoRRoR (19:17:11 12/05/2009)
Ну я так и думал)

АнС (19:17:25 12/05/2009)
реально все 16 являются непроходимым тайлом (точнее 15, т.к. нулевая версия - это пустота)
но визуально они отличаются степенью разрушенности

HoRRoR (19:18:02 12/05/2009)
А как расчитывается попадание пули в танк?

АнС (19:18:03 12/05/2009)
в игре можно заметить, что наполовину разрушенная стенка действует так же, как и полная

HoRRoR (19:18:09 12/05/2009)
Ну это понятно
Вот большие танки отличаются от маленьких в плане попадания в них пуль?

АнС (19:18:27 12/05/2009)
а, ну вот это рассчитывается нормальным пересечением прямоугольников
нет, не отличаются
все танки одинаковы - 16x16
кстати, на проверку коллизий пуль с танками и пуль с пулями уходит бОльшая часть кадра
ещё странно, что для пуль есть две проверки коллизий
по двум крайним точкам
одна справа от носа пули, другая слева

HoRRoR (19:20:34 12/05/2009)
Т.е. только эти две точки проверяются?

АнС (19:21:01 12/05/2009)
ну да
только ведь можно было бы и один раз првоерять - для центра пули

HoRRoR (19:21:17 12/05/2009)
0,0 и 8,0?

АнС (19:21:37 12/05/2009)
да, как-то так

HoRRoR (19:21:51 12/05/2009)
Они обе должны попадать или хотя бы одна?

АнС (19:21:59 12/05/2009)
хотя бы одна
а раз коллизии проверяются дважды, можно стрелять пулей в центр кирпичного сквадрона, тем самым нанося урон ДВУМ тайлам
двум соседним тайлам, между которыми влетает пуля

HoRRoR (19:22:29 12/05/2009)
Хм, видимо поэтому и сделано так)
А скорость движения как в игре реализована?

АнС (19:22:47 12/05/2009)
скорость чего?

HoRRoR (19:23:15 12/05/2009)
Движения. Ну т.е. как там хранится скорость и как смещение координат по ней высчитываются?
У объектов ведь разная скорость

АнС (19:23:38 12/05/2009)
да ну :)))
скорость одинаковая, просто некоторые объекты не просчитываются в через кадр
некоторые враги работают только в нечётные кадры

HoRRoR (19:24:19 12/05/2009)
Т.е. скорость может быть только в разы медленнее?

АнС (19:24:20 12/05/2009)
а БТР - в каждом кадре
ну как в разы.. вот у игроков обработка происходит каждые три кадра из четырёх

HoRRoR (19:24:51 12/05/2009)
А

АнС (19:24:54 12/05/2009)
т.е. они почти как БТР, на 25% медленнее

HoRRoR (19:24:56 12/05/2009)
А какой FPS?

АнС (19:25:08 12/05/2009)
60Гц :)

HoRRoR (19:25:18 12/05/2009)
Во, то что надо)

АнС (19:25:34 12/05/2009)
кстати, ещё момент про аи
когда враг в результате вызова рандома решает изменить статус, он может провернуться либо в случайную сторону, либо в сторону одного из игроков, либо в сторону штаба
причём это выбирается тоже рандомно
в общем, никакого АИ :)
но вероятности подобраны довольно разумно

HoRRoR (19:27:58 12/05/2009)
А вероятность выстрела как берётся?

АнС (19:28:08 12/05/2009)
а,тут ситуация какая
выстрелы реально оторваны от врагов
выстрелы сами решают, когда им осуществиться
у каждого врага есть одна своя пуля
в каждом кадре вызывается рандом и округляется до значения от 0 до 31
если пуля уже летит, то выстрел не осуществляется
если пули нет, то она генерируется в центре своего танка
и копирует текущее направление своего танка
и всё
а, ну конечно, если взят приз часы, то новые пули не генерируются

HoRRoR (19:30:34 12/05/2009)
А сколько кадров действуют часы?

АнС (19:30:48 12/05/2009)
10 секунд по 64 кадра - 640 кадров
или это каска...
сейчас посмотрю
Bonus_Helmet:
LDA #10
STA Invisible_Timer,X
Bonus_Watch:
LDA #10
STA EnemyFreeze_Timer
значит 16
16 * 64 = 1024 кадра
хе, а вот штаб появляется на 20 секунд

HoRRoR (19:33:08 12/05/2009)
А каска?

АнС (19:33:15 12/05/2009)
Helmet

HoRRoR (19:33:24 12/05/2009)
А, тьфу

АнС (19:33:43 12/05/2009)
ты что, хочешь полностью скопировать геймплей танчиков?

HoRRoR (19:33:47 12/05/2009)
Да

АнС (19:33:57 12/05/2009)
дмаю, от некоторых анахронизмов стоило бы отказаться

HoRRoR (19:34:03 12/05/2009)
Например?

АнС (19:34:33 12/05/2009)
ну, что танки проверяют коллизии только с фоном, а не друг с другом
из-за этого визуально танки могут въезжать внутрь друг друга на пару пикселей
это особенно видно, если танк "большой"
опять же, то же самое с кирпичами
пока не расстреляешь весь тайл - не проедешь
из-за этого возникают моменты, когда впереди есть заметное расстояние в 5-7 пикселей, а при нажатии вперёд танк не движется
это особенно заметно с "маленькими" танками
кстати, с пулями тоже прикол замечен
есть два вида пуль - быстрые и медленные
быстрые летят со скоростью 4 пикселе за кадр, медленные - два пикселя
так вот, если быстрые проверяются в каждом кадре, то медленные - через кадр
из-за этого могут вылезти баги! :D
причём баги очень тасерские
не догадываешься, как можно применять проверку коллизий только в нечётные кадры?
в смысле, как можно использовать это для таса?

HoRRoR (19:39:37 12/05/2009)
Чтобы пуля пролетала сквозь?

АнС (19:39:44 12/05/2009)
ага
если игра тормозит в каждом нечётном кадре
процессор не успевает дойти  до обработки коллизии данной пули, а в следующем кадре он и не должен этого делать
конечно, это надо серьёзно напрячь игру, это только в режиме двух игроков и с быстрыми пулями, стрелять постоянно, и чтоб повезло с врагами (которые тоже должны стрелять интенсивно)

--- Конец цитаты ---
totin:
столько важных деталей который я искал но так и не смог найти, особенно по поведению противников. спасибо HoRRoR
пули насколько я понял проверяются попаданием точки на прямоугольник
ALEX_230_VOLT:
качал версия 1.02 и до сих пор с положением танка если заехать на нижнюю границу
DarkArmor:
Battle City >>> Dune 2


--- Цитата: totin от 23 Июль 2009, 02:17:00 ---да на здоровье (: могу даже сказать адреса графики и палитр если нужно

--- Конец цитаты ---

Адреса графики нашол всё ок.
Танки прешлось перерисовывать в ручную
Ну нечо! Battle City теперь на 10% зблизился к Dune 2 ^_^
Но я думаю продолжить зближение до всех 50%.

А адреса палитр подскожите пожалуйста. :D

__________________
КАЧАЙТЕ И ОЦЕНИТЕ   Battle City >>> Dune 2  :D
\/ \/ \/ \/ \/ \/ \/ \/ \/
totin:
0xCB84 адрес первой, думаю они там все поочереди одна за одной.
вот порядок:
pal_menu:
pal_red:
pal_green:
pal_yellow:
pal_grey:
pal_logo:
pal_orange_text:
pal_red_text:

pal_red: это основная из которой берутся цвета бля кирпичей, травы, воды и процей графики, заодно и для бонусного танка, все остальные думаю по названию понятно

Добавлено позже:
да, с дюновской техникой забавно получилось (: посмотрим что будет когда палитры приведешь в порядок
Denis_:
ХМ! как у вас тут интересно стало! HoRRoR, totin спасибо за информацию.
DarkArmor:
Ты какой программой пользуешся? Мне надо разобраться с этим долбаным адресом! 0xCB84.
totin:
я пользуюсь обычным хекс редактором. Hex Workshop v5.1 называется
Марат:

--- Цитата: DarkArmor от 24 Июль 2009, 15:44:25 ---У меня проблема моя DjinnMapper.exe мало функциональна.

--- Конец цитаты ---
Уж палитру с помощью нее точно можно заменить.
DarkArmor:
А у меня WinHex Естли чесно то у меня внём проблема. :blush:

Добавлено позже:
НАШОЛ! Hex Workshop 6.0.1 Professional Hex Editor
www.bpsoft.com/downloads/

Добавлено позже:
Чот я тут нехрена немогу догнать! Я палитры ещё неразу неменял.
ALEX_230_VOLT:
DarkArmor, твой хак напоминает мне об одной из моих задумок - сделать танчики на тему Дюны с разными миссиями, картой выбора миссий и выбором стороны (от этого будут различатся апгрейды). Увы, это были лишь задумки :-\
хотя я пытался состряпать танчики на GM, но вышло с глюками
totin:

--- Цитата: DarkArmor от 24 Июль 2009, 21:10:34 ---А у меня WinHex Естли чесно то у меня внём проблема. :blush:

Добавлено позже:
НАШОЛ! Hex Workshop 6.0.1 Professional Hex Editor
www.bpsoft.com/downloads/

Добавлено позже:
Чот я тут нехрена немогу догнать! Я палитры ещё неразу неменял.

--- Конец цитаты ---

ну так попробуй поменять и увидишь. там каждый цвет 2 байта занимает, в палитре 16 цветов
topos84:
Ребята, молодцы! Просто Дюна 3000 какая-то получилась. Осталось только заменить кусты на песок, а стены на горы. ;)
DarkArmor:
Ну я так и думаю сделать!

Добавлено позже:
О! Теперь всё здорово!  :wow:
Тока я замучаюсь так все цвета подберать!  0_0
Вот дапустим я хочу максимально синий цвет. Как ????
Может кто подскажет??? ^_^
Zephyr:
Таблица цветов Sega Genesis системы, содержала 4 "активные" палитры по
16 цветов в каждой. На каждую компоненту RGB приходилось по 3 бита. Всего же количество цветов производимых видеосистемой "Genesis"
равнялось 512.
totin:
Zephyr по 4 бита на компоненту если быть точным.
DarkArmor как я уже говорил на каждый цвет палитры уходит два байта, порядок цветов BGR, если хочешь максимально синий то это будет так 0x0f00, если зеленый то 0х00f0 если красный то 0x000f, а так будет желный выглядить 0x00ff и так далее, думаю смысл понятен.
кстати, кто то знает за что отвечают старшие четыре бита старшего байта цвета? или не задействованы вобще? я их покрутил но никакого эфекта не увидил

Добавлено позже:
DarkArmor и  кстати скриншоты с пиксельной графикой лучше не делай в жепеге, делай пнг или гиф
DarkArmor:
Хорошо. Пасиб за информацию!

Народ! Помогите найти этот дебуггер что на картинке!
Или чтото подобное предложите может.
HoRRoR:
No$GBA Debugger 1.4c
Марат:

--- Цитата: totin от 25 Июль 2009, 02:41:14 ---Zephyr по 4 бита на компоненту если быть точным.
DarkArmor как я уже говорил на каждый цвет палитры уходит два байта, порядок цветов BGR, если хочешь максимально синий то это будет так 0x0f00, если зеленый то 0х00f0 если красный то 0x000f, а так будет желный выглядить 0x00ff и так далее, думаю смысл понятен.
кстати, кто то знает за что отвечают старшие четыре бита старшего байта цвета? или не задействованы вобще? я их покрутил но никакого эфекта не увидил



--- Конец цитаты ---
Ну, ты не забывай, что реально значимых битов на каждую интенсивность цвета только 3. А 4-ый бит всегда нулевой. А старшие 4 бита не задействованы, и всегда нулевые.
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии