а не написать ли ради тебя спрайтовый движок?:v2_dizzy_coder:
Вид для печати
блин ну есть же уже готовый спрайтграбер одноименный с темой. выделяем спрайты, выбираем save module, после если басик то - adr+6=x adr+7=y adr+8=номер спрайта (от нуля) и рандомазя узер adr. а если ассемблер, то - ld c,x ld b,y ld a,номер спрайта call adr+2
вот и все дела. но все познакоместно! потому что спрайты цветные и вообще.
у меня черно белые будут. Со знакоместом разберусь :)
Нет, с попиксельно все сложно. Не в смысле код вывода сложный, а в смысле с грабером это плохо сочетается. Надо много думать. Грабер не для этого был задуман. Может быть когда-нибудь нескоро.
Да, только зачем тебе код с 32768? Сколько на Бэйсик-то тогда останется? Я бы сделал так:
1) нарисовал бы в грабере спрайты;
2) Командой save module сохралил бы файл с кодом вывода и спрайтами;
3) домустим, после шага 2 получится файл размером 1234 байт. Тогда я бы из BASIC'а дал команду CLEAR 64301, грузил бы файл по адресу 64302 и с этого адреса бы его запускал (64302 = 65536 - 1234). Тогда под бэйсик остается максимальный объем памяти. А для вывода второго спрайта в координаты x = 3, y = 7 делал бы так: POKE 64308,3:POKE 64309,7:POKE 64310,2:RANDOMIZE USR 64302.
Да это я так к примеру просто сказал. Ну а как, с маской получится? И еще по поводу зеркального отображения, сможешь реализовать?
Руслан, если у тебя такие планы на игру, то изучай ассемблер. Бейсик фтопку.
Вот скажи зачем мне изучать ассемблер если для игры мне за глаза бэйсика хватит? Первый Мышонок Мики, тоже на бэйсике, сам персонаж состоит из редактированных символов. Но насколько я знаю его не обсерали, да и если обсерали, то только те кто сам ни хера не делает и не делал.
Да и понимаю если я собирался не одну игру делать. А так ведь только ту которую к сожалению забросил много лет назад. Я конечно не утверждаю что после ее я ни чего больше делать не буду, кто знает. Но изучения ассемблера, тем более написание игры на нем займет гораздо больше времени и сил.
Что касаемо Alex Rider, если он не станет делать маску и зеркалку, то я буду игру без них делать, конечно не так будет выглядеть как с маской - ну да ладно. Главное что она будет. Ведь сейчас по моему от наших любителей спектрума очень мало игр поступает. Если вообще поступает.
Маску постараюсь сделать сегодня или на следующей неделе, а вот зеркальное отражение делать не буду. Оно совершенно не вписывается в концепцию тулы, поскольку миссия грабера - выдирание спрайтов из экранов. Никакие функции редактирования в нем не нужны. Использование грабера предполагает, что все спрайты во всех модификациях уже есть на экране, с которого происходит выдирание. Для зеркального отражения спрайтов можно воспользоваться, например, Art Studio.
Alex Rider, крайне признателен и думаю не один я. На счет зеркалки конечно - это не обязательно. Благодарю вас за помощь!
AER, если сделаю маску, с тебя демка с движением маскированного объекта. А то что ж я, зря писать буду что ли?
а зачем тебе игра на бейсике? если только отладить и отточить логику, то -пожалуйста. я не игродел, но две игрушки написал, причем одну тогда, когда увидел, что прога для адвентюр не подходит под задумку.
Другое дело, когда мы с приятелем на пьянке на спор "слабо?" стрелялку написали.
"Мысли свои собери в узду, не охай, не ахай"... понял, да?)
---------- Post added at 02:15 ---------- Previous post was at 02:06 ----------
http://pouet.net/prod.php?which=59570
пример, достойный подражанию..
И где это ты мат нашел?
---------- Post added at 09:55 ---------- Previous post was at 09:52 ----------
Хер - это буква кириллицы.
Заходит мужчина в страховой офис и просит-"Застрахерте меня пожайлуста".Ему в ответ-"да как Вам не стыдно!!?".он в ответ-"а что лучше застрахуйте?"
Советы или рекомендации? И с чего это ты взял что не прислушиваюсь?. Или имеешь ввиду - не следую им? )
---------- Post added at 11:12 ---------- Previous post was at 11:10 ----------
goblinish, да с тобой без гугла не обойтись похоже. )
хватит трепаться не по делу, займитесь уже игрописанием
А вот кто сможет ответить мне на хитрые вопросы... Вот грабер заточен под вывод спрайта с атрибутами. Ну допустим сделаю я способ вызова, который кинет на экран маску спрайта как маску, потом спрайт как спрайт. А как быть с атрибутами? Выводить оба раза - не эффективно. Выводить только для спрайта - криво (во-первых, атрибуты будут храниться и для маски, поскольку в момент выдирания грабер не знает маску он выдирает, или спрайт, а, во-вторых, не понятно по какому параметру определять надо выводить атрибуты, или нет). Предложение добавить еще одну переменную тоже не хорошо, поскольку грабер задумывался для вызова из бэйсика, а POKE: POKE: ... : POKE до бесконечности перед вызовами стремительно снижают скорость работы до уровня блочной графики и PRINT'а. Как быть?
надо спрайт делать в спец.формате - чередовать маску и спрайт. тогда вывод один раз и атрибуты 1 раз.
Пока не придумал как оно в концепцию грабера плавно вольется. Вот есть тул, который сдирает с экрна спрайты, делает из них файл, лепит к нему процедуру вывода и выплевывает на диск. А как гармонично к нему прилепить масковые спрайты... Можно подумать, но нет уверенности, что придумается решение.
когда спрайты сдираешь, заводишь внутренний флаг, маска это или спрайт. потом как-то комбинируешь (типа, 1я маска к 1му спрайту, 2я ко 2му). процедура вывода своя, формат спрайта свой.
Придумался вариант, когда добавляется пункт меню (типа Get sprite with mask), при этом с экрана спрайт и маска сдираются одновременно (маска прижата справа к спрайту и имеет тот же размер, атрибуты сдираются только со спрайта). Такой маскоспрайт помечается в наборе определенным образом (например, установленным старшим битом в размере по y), а в выгружаемый модуль добавляется процедура вывода просто спрайта и маскоспрайта (да, и расчета размера маскоспрайта тоже). Про этом, правда, модуль распухает и AER становится недовольным.
Не выглядит ли это концептуально криво?
Alex Rider, а есть возможность выводить спрайты по ксор? насколько помню такое наложение не затерало фона. Ну оно конечно кривовато выглядит, но может для некоторых случаев пригодиться. А так вчера на бэйсике сделал тестов, чтоб мик по экрану бегал, вроде скорость норм (это пока логики туда не понапихал ))))
Там любые изменения примерно одинаковы по геморрою - часов на 5, не меньше. Никак не могу их найти. Связано это с тем, что у меня сейчас весь проект в "разобранном" состоянии, в частности, убиты все сборочные файлы (которые я не включаю в исходиники, которые выкладываю сюда). Так что все не быстро - добавить-то способ печати я могу хоть в блокноте, а вот собрать это потом пока не получается.
Руслан, а вы не пробовали бейсик-программы переводить на ассемблер построчно? это довольно легко, зато скорость возрастает и ассемблер сам собой изучается.
)), тама не поке а эмулятор - на реале все гуд - бегает мышь как шальная). Я просто не знаю сколько по времени буду игру делать поскольку она будет со смыслом дизика (забыл как жанр называется). На бейсике я это прекрастно понимаю как делать, а вот на асме - даже не представляю)
а ты и грабер не зря сделал, я его просил и ты сделал как хочу. а маска... ну это хорошо, но разрастается это в огромную ненужную каку. хотя если выбирать какой нужен тебе save module то прекрасно. а вопрос как-то я давал тебе о выводе спрайта, расширим настройки, ld h, 0 - обычная, 1 - xor, 2 - or. но это все утяжеляет работу вывода.
---------- Post added at 11:56 ---------- Previous post was at 11:55 ----------
итого - мне достаточно, что есть. хотя... help.. че зря делал...
Да не говори. Времени ни когда не хватает.
Промежуточный релиз по просьбам трудящихся:
-- добавлено сохранение/вывод спрайтов с маской;
-- выводилка спрайтов больше не обращается в ПЗУ (но по-прежнему на ~100 тактов запрещает прерывания).
Для использования маски сделано минимум изменений. В меню появился новый пункт "Create Masked Sprite" - он работает как "Create Sprite", но считает правую половину выделенной на экране области маской (при нечетной ширине показывает ошибку). Сделать масочный спрайт шириной более 16 знакомест не получится, да оно и мало кому надо. Спрайты, снятые с маской, всегда печатаются с маской, спрайты, снятые без маски, всегда печатаются без нее. Процедура вывода в выгруженном модуле одна, выросла из-за маски она не сильно.
Пользуйтесь!
Upd: пришел фидбек, пофиксил баг, обновил вложение.
что будет с цветом спрайта маскированного при печати?
Сорри, забыл написать. Цвет будет как у самого спрайта, но не у маски - сохраняются атрибуты левой половины выделенной области.
Эх, я уж было обрадовался... но как оказалось функционала оказалось недостаточно.
Для облегчения трудов по работе с графикой к игре нужны следующие функции.
0) Поддержка Kempston Mouse. (кликаем, тянем — область выделяется)
1) Выделение области по вертикали с кратностью 1 пиксель.
2) Ротация (циклическая/обычная) внутри выделенной области верх-низ, лево-право, диагональ. (по hash: X0, 0X яркостным сеткам) — это нужно чтобы спрайт можно было выставить правильно, не загружая экран снова и снова в ARTStudio чтобы подвинуть на пиксель.
3) Генерация автомаски для выделенной области.
4) Формат спрайта: +0x00h - длина в знакоместах (#00-#1F; bit 7 - признак наличия атрибутов, bit 6 - принзнак наличия маски, bit 5 - пакованный спрайт [например hrust'ом]), +0x01h - высота в пикселах, +0x02h - тело спрайта, атрибуты (опционально).
5) Сохранение сграбленных спрайтов в линейном формате. Спрайты с маской: байт маски/спрайта; спрайт-маска, маска-спрайт.
6) Сохранение массива сграбленных спрайтов: формат: массив указателей на спрайты (word) + сами спрайты в формате п.4.
upd. пересмотрел все известные мне редакторы спрайтов, ни один (!) не работает попиксельно... Все повторяют один и тот же велосипед :)
Авторы делали упор на интерфейс, на кредитсы... но никак не на юзабилити своего детища.
upd2. в общем-то можно для этих целей приспособить Art Studio. Там есть возможность работать с набором спрайтов в блонкоте. Конвертер не проблема :)