Важная информация

User Tag List

Страница 8 из 23 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя
Показано с 71 по 80 из 228

Тема: Портирование игр с PC на БК

  1. #71
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,722
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    403
    Поблагодарили
    256 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от S_V_B Посмотреть сообщение
    Как это будет выглядеть в коде например для двух объектов с разной скоростью?
    т.е. для каждого объекта нужно хранить скорость и накопитель?
    Да. Я так делаю в проигрывателе трекерной музыки для каждого звукового канала.

    Может все таки проще иметь один счетчик циклов, и сравнивать с кол-вом пропусков в объекте..
    Ой, не знаю - по мне так проще как я описал. Универсальней что ли.
    manwe.pdp-11.ru

  2. #72
    Veteran
    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,396
    Спасибо Благодарностей отдано 
    86
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    136 сообщений
    Mentioned
    21 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  3. #73
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,722
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    403
    Поблагодарили
    256 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я немного выпал из процесса - другие дела были.
    Попробую завтра написать процедуру вывода спрайта по произвольным координатам.
    manwe.pdp-11.ru

  4. #74
    Veteran
    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,396
    Спасибо Благодарностей отдано 
    86
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    136 сообщений
    Mentioned
    21 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кстати в порте для Win очень подходящая фоновая музычка:
    https://yadi.sk/d/Vk0wZ7VkJ1a1RQ
    только она ogg, для AY можно будет что-нибудь подобное сделать? Я слышал, что музыкой вы тоже увлекаетесь..
    Уж больно по стилю подобная музыка подходит для такой игры.. обычно для AY делают забойные трели и бульканье, которое быстро напрягать начинает.

  5. #75
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,722
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    403
    Поблагодарили
    256 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от S_V_B Посмотреть сообщение
    Кстати в порте для Win очень подходящая фоновая музычка
    Да, симпатичная.


    Цитата Сообщение от S_V_B Посмотреть сообщение
    Я слышал, что музыкой вы тоже увлекаетесь
    Да, но под AY никогда ничего серьёзного не писал. Это лучше в спектрумовском разделе поспрашивать кто из музыкантов хочет поучаствовать. В каком-нибудь простом формате, который БК умеет играть.
    manwe.pdp-11.ru

  6. #76
    Veteran
    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,396
    Спасибо Благодарностей отдано 
    86
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    136 сообщений
    Mentioned
    21 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Жаль, спектрумисты вряд ли заинтересуются.. почему-то у них стойкая неприязнь ко всему что связано с БК
    Да и мотивации не будет..
    Последний раз редактировалось S_V_B; 28.09.2018 в 19:13.

  7. #76
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #77
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,722
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    403
    Поблагодарили
    256 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Написал вывод спрайта с произвольными координатами.
    Образ .bkd

    Платформу поджал в пропорциях 5:8 и подрисовал чтобы красиво было:


    Процедура XY - преобразование координат в адрес экрана и маску начального пикселя.
    Процедура DRAWSPRITE16 - вывод спрайта 16 точек высотой. Ну или можно такие высокие спрайты разбивать на два (по 8 точек в высоту каждый), тогда процедура немного упростится.
    SCREEN - начальный адрес игрового поля (у меня 47402). То бишь координаты не абсолютные для всего экрана, а относительные внутри игровой области.

    Код:
    		MOV #45.,R1		; x coord
    		MOV #19.,R2		; y coord
    		CALL XY			; get screen address and pencil mask
    		MOV #PLATFORM,R1	; sprite address
    		MOV #25.,R5		; sprite width in pixels
    		CALL DRAWSPRITE16
    
    		HALT
    
    ; subroutine: calculate address from x (R1) and y (R2)
    ; returns screen addres in R2 and pencil mask in R0
    
    XY:		SWAB R2
    		MOV R1,R0
    		BIC #7,R0
    		BIS R0,R2
    		ASR R2
    		ASR R2
    		ADD #SCREEN,R2		; screen address
    		BIC #177770,R1
    		ASL R1
    		MOV DOTS(R1),R0		; pencil mask
    		RET
    DOTS:	.WORD 2,10,40,200,1000,4000,20000,100000
    
    
    ; subroutine: draw sprite 16 pixels high
    ; input:
    ; R0 - pencil mask, R1 - sprite address,
    ; R2 - screen address, R5 - sprite width in pixels
    
    DRAWSPRITE16:
    1:		MOV R2,-(SP)		; save screen address
    		MOV #100,R4
    
    2:		MOV (R1)+,R3		; word to rotate
    
    		CLC			; draw a column of points
    3:		ROL R3
    		BCC 31			; if zero skip next command
    		BIS R0,(R2)		; draw 1st bit of dot
    		CLC
    31:		ROL R3
    		BCC 32
    		CLC
    		ROR R0
    		BIS R0,(R2)		; draw 2nd bit of  dot
    		ASL R0
    32:		ADD R4,R2		; next row of the screen
    		TST R3			; no more dots?
    		BNE 3
    
    		MOV (SP),R2
    		ADD #1000,R2
    		INC PC			; repeat twice
    		BR 2
    
    		MOV (SP)+,R2		; column is drawn, restore screen address
    
    		ASL R0			; move pencil
    		ASL R0
    		BNE 4
    		MOV #2,R0		; set pencil to the first point
    		ADD #2,R2		; increase screen address
    
    4:		DEC R5			; switch to the next column
    		BNE 1			; all columns are drawn?
    
    		RET
    
    
    PLATFORM:
    		insert_file "sprites/platform01.raw"
    		.EVEN
    Ещё для оптимизации можно подумать вот над чем:
    платформа состоит из верхней неизменной части и нижней анимированной. Действительно тогда стоит разбить платформу на 2 спрайта и выводить их разными процедурами. Если на каждом кадре объекты могут сдвигаться только на 1 пиксель, то неанимированные спрайты можно не перерисовывать целиком, а просто сдвигом на экране обновлять. А вот с анимированными сложней: придётся стирать старый спрайт и рисовать поверх новый. Благо, это можно делать поточечно, то есть мерцания из-за стирания старого спрайта не будет.
    Последний раз редактировалось Manwe; 29.09.2018 в 19:55.
    manwe.pdp-11.ru

  9. #78
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,746
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    265
    Поблагодарили
    199 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ксттати не заметил особо вывода поточечно
    во всяком случае на спеке выглядит как вывод до 4 точек
    С уважением,
    Jerri / Red Triangle.

  10. #79
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,722
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    403
    Поблагодарили
    256 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    ксттати не заметил особо вывода поточечно
    Гусеничная платформа может двигаться на любое число точек, а не только ровно по границам тайлов. Да и тайлы здесь 6x8, что не соответствует границам байтов, так что спрайты лабиринта тоже выводятся поточечно.
    manwe.pdp-11.ru

  11. #80
    Veteran
    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,396
    Спасибо Благодарностей отдано 
    86
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    136 сообщений
    Mentioned
    21 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    /* ксттати не заметил особо вывода поточечно */
    Потому что на спеке однобитная графика, а на БК двух.

    - - - Добавлено - - -

    /*Процедура XY - преобразование координат в адрес экрана и маску начального пикселя.*/
    Класс, т.е. смысл выставить начальную позицию карандаша..
    есть над чем подумать.. сделать базовую для всех процедуру и к ней уже.. вывод тайла, спрайта, символа и строки.
    Теперь уже можно запаковать лабиринт. Пробовал сжимать спрайты - некрасиво получается. Сейчас доделаю перевод спрайтов в текст, чтобы вставлять их в исходник, так будет удобней с указателями работать.
    Последний раз редактировалось S_V_B; 30.09.2018 в 08:51.

Страница 8 из 23 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Портирование Lode Runner БК->УКНЦ
    от nzeemin в разделе ДВК, УКНЦ
    Ответов: 103
    Последнее: 12.12.2020, 04:04
  2. Ответов: 21
    Последнее: 04.10.2019, 18:03
  3. Портирование Stop the Express
    от nzeemin в разделе ДВК, УКНЦ
    Ответов: 90
    Последнее: 21.11.2018, 09:46
  4. Ответов: 38
    Последнее: 23.11.2014, 16:00

Ваши права

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