User Tag List

Страница 6 из 11 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя
Показано с 51 по 60 из 105

Тема: Evacuator - help thread.

  1. #51

    Регистрация
    04.02.2010
    Адрес
    Санкт-Петербург
    Сообщений
    61
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так я же вроде сделал демо режим....
    )))
    или Вы имеете в виду что-то другое?
    И что Вы понимаете под рисовалкой уровней?

  2. #52

    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,198
    Спасибо Благодарностей отдано 
    40
    Спасибо Благодарностей получено 
    128
    Поблагодарили
    103 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  3. #53

    Регистрация
    04.02.2010
    Адрес
    Санкт-Петербург
    Сообщений
    61
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Слушай, чет с музыкой не клеится((
    Вроде всё сделал как надо... но дает одну ноту и все... может я чего-то не так понял?

    в им2
    1)40000-адрес загружаемой мелодии
    2)40012-адрес пригрывания следующей ноты
    3)0-адрес остановк, который не указывается
    4)39900-адрес загрузки им2, по этому же адресу и будут запускаться прерывания, а соответственно и музыка...


    в бейсике

    10 randomize usr 15619: rem: load"music" code 40000
    20 randomize usr 15619:rem: load"im" code 39900
    30 randomize usr 39900

    правда адрес 39900 он не пропускает (почему такое происходит?), поэтому указываю тот, который он предлагает.

  4. #54

    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,198
    Спасибо Благодарностей отдано 
    40
    Спасибо Благодарностей получено 
    128
    Поблагодарили
    103 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    Цитата Сообщение от Andrey Vladimirovich Посмотреть сообщение
    в им2
    для мелодии компилированной в wham! с адреса 40000 в режиме always, по порядку вводятся следующие значения:
    первый адрес вызывается при старте (40000)
    второй адрес вызывается при остановке (0, т.к. ничего вызывать не нужно)
    третий адрес вызывается каждое прерывание (40012)
    четвертый адрес первый байт занимаемый процедурой (расположение в памяти, не более того).



    правда адрес 39900 он не пропускает (почему такое происходит?), поэтому указываю тот, который он предлагает.
    Потому, что в ПЗУ нужного вектора нет, а в ОЗУ значения можно записать только по адресу 255+256*154=39679\39680 (либо 255+256*155=39935\39936). По одному из них и заносится указатель на адрес, начала процедуры обработки прерываний (старший и младший байт).



    Цитата Сообщение от Andrey Vladimirovich Посмотреть сообщение
    в бейсике
    для запуска на бейсике ввести (для данного случая):
    Код:
     8 clear 39899
    10 randomize usr 15619: rem: load"music" code 40000
    20 randomize usr 15619: rem: load"im" code 39935
    30 randomize usr 39971
    Кстати, для той мелодии, что использовалась мною в демонстрации нужны другие адреса (ибо написана она не в wham!, воспроизводится не через бипер, и принцип прогирывания другой).
    ----
    На самом деле, обработчик можно прописать по любому адресу (т.к. все три части не особо связаны между собой), занеся два байта в ячейки на которые указывает вектор прерываний. Для этого можно использовать программу autoIM2 стерев строки со 2 по 17 и набрать:
    Код:
     2 let m1=адрес при старте
     4 let m2=адрес при остановке
     6 let m3=адрес в прерывании
     8 let i=адрес начала процедуры
    10 let o=i
    12 let z=старший байт вектора (0-255)
    в своей программе же нужно вписать:
    Код:
    здесь z и i - числа, соответствующие переменным использованным в предыдущей программе!
    
    10 poke 255+256*z,i-256*int (i/256)
    12 poke 255+256*z+1,int (i/256)
    либо вычислить все значения заранее.
    ----
    Сам долго не мог разобраться, как работают прерывания, пока не допетрил, что вектор прерываний указывает на две ячейки, содержимое которых указывает на адрес начала процедуры обработки прерываний. Что-то вроде рекурсии: go to n, где в строке n стоит go to m, а уже со строки m располагается подпрограмма.
    ----
    добавил вложение.. enjoy it!
    ----
    Цитата Сообщение от Andrey Vladimirovich Посмотреть сообщение
    спасибо!!! теперь все ок!!!
    Ну, наконец-то.. Рад за вас!
    Последний раз редактировалось null_device; 03.10.2015 в 13:42.

  5. #55

    Регистрация
    04.02.2010
    Адрес
    Санкт-Петербург
    Сообщений
    61
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    спасибо!!! теперь все ок!!!

  6. #56

    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,198
    Спасибо Благодарностей отдано 
    40
    Спасибо Благодарностей получено 
    128
    Поблагодарили
    103 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Может все таки вторые прерывания используем более продуктивно? Водичку анимируем, ключики крутящиеся сделаем или еще че-нить придумаем.. ну, или музыку в каком-нить другом редакторе написать можно. Игра на бипере сильно подвешивает даже вторые прерывания (из-за особенности синтез звука).
    Последний раз редактировалось null_device; 23.02.2010 в 19:47.

  7. #57

    Регистрация
    04.02.2010
    Адрес
    Санкт-Петербург
    Сообщений
    61
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    пока не думал...
    Хотя идея очень интересная! Сначала надо бы уровней побольше и музыку впихнуть))) а там уже будет видно...
    А по какому принципу это все будет работать?

  8. #58

    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,198
    Спасибо Благодарностей отдано 
    40
    Спасибо Благодарностей получено 
    128
    Поблагодарили
    103 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Такой размышлизм: Скидывая magic button различный варез на диски и изучая, то, что получилось - столкнулся с музыкой лежащей в доп страницах (при том, зачастую, одних и тех же). Такое ощущение, что мелодия используется путем впечатывания страницы - проигрывается квант мелодии - возвращается на место предыдущая страница.
    ----
    Написал загогулину! %) Даже две! Процедурка получилась сырой, но вполне работспособный пример в виде снапшота. Пока, работает довольно тормознуто. Вариант номер раз: даем run - запуск вторых прерываний, потом пауза - жмем любую кнопку, запуск только самой процедуры замкнутой в цикл. Вариант два: просто run и глядим, как крутятся ключики, бежит водичка и шевелится растительность.. Либо набиваем строку 30 как в первом варианте и смотрим работу только процедурины (они компилированы в одни и те же адреса). 8D
    Последний раз редактировалось null_device; 03.10.2015 в 13:42.

  9. #59

    Регистрация
    04.02.2010
    Адрес
    Санкт-Петербург
    Сообщений
    61
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прикольно!!
    А разница только в скорости изменения изображения?
    и ещё мне интересен принцип... надо вводить новые значения графики udg? каким образом это делается?

  10. #60

    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,198
    Спасибо Благодарностей отдано 
    40
    Спасибо Благодарностей получено 
    128
    Поблагодарили
    103 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Никаких задержек в самой программе специально не делается.. Первый вариант тормозит из-за неоптимального алгоритма (и, вообще использования компилятора, надо полагать). Если бы писалось на ассемблере без использования штатных процедур ПЗУ скорость была бы выше на порядок.
    Первый вариант: каждое прерывание выводится один элемент (из 50), значения которого беруться из массива. Получилось тормознуто, решил сделать обработку "оптом".
    Второй вариант: каждое прерывание выводится максимально возможное кол-во элементов (в моем случае все 50).
    Видимо проблема медленной работы в том что происходит инициализация компилированной программы и обработка стандартной процедуры (jp 56) прерываний после вызова подпрограммы в кодах.
    Программка простая до ужаса. Правда, пришлось увеличить кол-во спрайтов (на каждый юнит 4 спрайта для анимации).
    Код:
    10 let s=40000 : let g=50000 ; таблица юнитов, обл спрайтов
    12 let n=peek s: if n>50 then goto 200 ; проверка обработки всех юнитов
    14 let m=peek (s+1+(n*4)) : let f=peek (s+2+(n*4)) ; тип юнита, фаза спрайта
    16 let y=peek (s+3+(n*4)) : let x=peek (s+4+(n*4)) ; координаты юнита
    18 randomize (g+(m-1)*32) : poke 23675, peek 23670: poke 23676, peek 23671
    20 if m<>0 then go to 30 ; проверка на пустой юнит
    22 goto 104
    ...
    30 let f=f+1 : if f>3 then let f=0 ; инкремент фазы
    100 poke s+2+(n*4),f
    102 print st y,x; paper 8; ink 8; chr$ (144+f) ; печать юнита
    104 poke s,n+1: goto 12 ; следующий юнит
    200 stop
    ----
    Добавил вложение с бейсик программой и компилятором (т.к. конечный вариант сделан именно им). Для просмотра нужно загрузить файл probe.B, запустить со строки 1000. После чего можно сделать run посмотреть работу одного цикла программки, или вставив в строку 200 goto 12 - зациклить анимацию.
    Последний раз редактировалось null_device; 03.10.2015 в 13:41.

Страница 6 из 11 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •