User Tag List

Страница 24 из 43 ПерваяПервая ... 202122232425262728 ... ПоследняяПоследняя
Показано с 231 по 240 из 428

Тема: Ищу желающих выступить в роли программиста

  1. #231

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    это же одна команда djnz
    я еще не отошел от ПЗУ для zx8080

    а так конечно НУЖНО менять на djnz

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

    поправил
    чтоб никто не брал за пример

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

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    и не надо call каждый раз, а сразу прописать там же цикл
    НЕТ у него уже есть готовая процедура ldi_32
    который он кидает строки по одной

    чтобы прописывать сразу в цикл
    уже нужно будет тянуть 32 ldi и сюда которые по 2 байта
    а аффтар зажимает память
    пушо пишет на каких то паскалях
    а потом еще ВНЕЗАПНО окажется что и для резинки...

    а так это и экономия
    и быстрей чем просто ldir

    а так с djnz это ~35422
    а прямо в цикле было бы ~33625
    еще +1,7 килотакта под блекджек и шлюх

    Я бы вообще поставил 2К ldi или бы заюзал стек
    Последний раз редактировалось NEO SPECTRUMAN; 30.08.2020 в 03:38.

  2. #232

    Регистрация
    31.12.2017
    Адрес
    г. Реж
    Сообщений
    156
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    34
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    боже какая жесть
    а чего нельзя это все таблично?
    Там в книжке, насколько я помню, способ самый универсальный(спрайты любой конфигурации) и соответственно очень далеко не самый быстрый, потому как книжка для совсем новичка.

    Цитата Сообщение от ALKO Посмотреть сообщение
    Конечно можно воспользоваться ситуацией, что часть спрайтов рендерится строго на одной трети.
    У тебя, насколько я вижу, спрайты прямоугольные, потому можно их хранить и рисовать по линиям, а не по знакоместам(зонтики с рукой всякие отдельными спрайтами) и выводить по линиям очень легко по Y в пикселях.
    Для вычисления адреса следующей линии в случае рисования в одну треть, всё ограничивается увеличением старшего байта адреса на 1.
    В случае разных третей - небольшая функция, сдвигающая адрес на строчку вниз
    Например там же на сайте zxpress есть статьи вывода спрайтов. Там подобное можно найти

    Скрытый текст

    Код:
    DOWN	INC	H
    	LD	A,H
    	AND	#07
    	RET	NZ
    	LD	A,L
    	ADD	A,#20
    	LD	L,A
    	RET	C
    	LD	A,H
    	SUB	#08
    	LD	H,A
    	RET
    [свернуть]


    Можно хранить список с заранее вычисленными адресами для каждой линии(сам не применял именно в таком виде), типа

    Скрытый текст

    Код:
    Y_ADDR
    	defw	#4000
    	defw	#4100
    	defw	#4200
    
    	...
    
    	defw	#57e0
    [свернуть]


    и брать как нибудь так

    Скрытый текст

    Код:
    	ld	de,y
    	ld	a,x
    	...
    
    	ld	hl,Y_ADDR	;берём адрес начала
    	add	hl,de		;смещение соответствующее Y
    	ld	($+4),hl	;запишем в следующую команду
    	ld	hl,(#0000)	;возьмём из списка адрес
    	or	l		;сложим с X
    	ld	l,a		;обратно в l
    	;теперь тут адрес в экране
    [свернуть]


    Вобщем вариантов море, главное посмотреть что будет быстрее в конкретном случае

    Иногда очень полезна бывает вот такая раскладка

    Скрытый текст

    Код:
                   H                               L
               -------------+-------------¬   --------------+-------------¬
               ¦                          ¦   ¦                           ¦
             г==T===T===T===T===T===T===T===T===T===T===T===T===T===T===T==¬
             ¦0 ¦ 1 ¦ 0 ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X¦
             L==¦=T=¦===¦===¦===¦===¦===¦===¦===¦===¦===¦===¦===¦===¦===¦==-
                  ¦       ¦    ¦  ¦       ¦   ¦       ¦   ¦               ¦
                  ¦       L-----  L--------   L--------   L----------------
             Адрес 16384   Номер    Номер      Номер        Номер столбца
                          сегмента  линии      ряда
                           0...2    0...7       0...7         0 ... 31
    
    
    
                            H                               L
               -------------+-------------¬   --------------+-------------¬
               ¦                          ¦   ¦                           ¦
             г==T===T===T===T===T===T===T===T===T===T===T===T===T===T===T==¬
             ¦0 ¦ 1 ¦ 0 ¦ 1 ¦ 1 ¦ 0 ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X¦
             LT=¦===¦===¦===¦=T=¦===¦=T=¦===¦===¦===¦===¦===¦===¦===¦===¦==-
              L------T---------       ¦               ¦   ¦               ¦
                     ¦                L----------------   L----------------
                  адрес 22528               Номер           Номер столбца
                                            ряда
                                           0...23           0 ... 31
    [свернуть]
    Последний раз редактировалось Dwa83; 30.08.2020 в 08:18.

    Эти 2 пользователя(ей) поблагодарили Dwa83 за это полезное сообщение:

    ALKO(30.08.2020), dimidus(31.08.2020)

  3. #233

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dwa83 Посмотреть сообщение
    У тебя, насколько я вижу, спрайты прямоугольные
    Не все, но большинство.
    Есть отличные от прямоугольников.
    Поначалу я хотел воспользоваться процедуркой вывода прямоугольных имеджей для отдельно взятых спрайтов, но в ней не было проверки границ экрана, из-за чего спрайт, вылезший за границы, коцал дальнейшие адреса, вплоть до атрибутной области.

  4. #234

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dwa83 Посмотреть сообщение
    потому как книжка для совсем новичка.
    да как раз понять тот поток сознания будет на порядок сложней
    чем понять как работает табличный вариант

  5. #235

    Регистрация
    31.12.2017
    Адрес
    г. Реж
    Сообщений
    156
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    34
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dwa83 Посмотреть сообщение
    сам не применял именно в таком виде
    И нафиг не надо ни в коем случае. Получается примерно 67 тактов + 384 байта занято фигнёй.

    Проще вот так

    Скрытый текст

    Код:
    ;на входе H - y в пикселях, L - x в знакоместах
    ld	a,H		;4
    rla			;4
    rla			;4
    and	%11100000	;7
    or	L		;4
    ld	L,a		;4
    ld	a,H		;4
    and	%00000111	;7
    ld	b,a		;4	Портится регистр B
    ld	a,H		;4
    rra			;4
    rra			;4
    rra			;4
    and	%00011000	;7
    ;0101100 для #4000
    ;1101100 для #с000
    or	b		;4
    ld	H,a		;4  = 66 на вычисление одного адреса
    ;на выходе в HL адрес
    [свернуть]


    Но это для случая вывода спрайта с точностью до пикселя по вертикали
    минус - Портится регистр B(или c,d,e)

    В книжке - вариант для познакоместного вывода. Если убрать все проверки, получится

    Скрытый текст

    Код:
    [CALL  3742]
    
    ld	d,a		;4
    rrca			;4
    rrca			;4
    rrca			;4
    and	%11100000	;7
    ld	l,a		;4
    ld	a,d		;4
    and	%00011000	;7
    or	%01000000	;7
    ld	h,a		;4 = 49
    
    	...
    
    ADD	A,C		;4
    	...проверка выхода
    ADD	A,L		;4
    LD	L,A		;4 = 61
    [свернуть]


    61 такт.
    Плюсы: быстрее
    Минусы: познакоместно, вызывается для каждого знакоместа в спрайте, хотя для попиксельного вывода будет вызываться кусок, выполняющий сдвиг адреса вниз для каждой байтовой линии в спрайте. Так что тут хз.

    Единственное, что приходит в голову, подумать над форматом хранения спрайтов, но надо ли, ведь не супер-демо пишется

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

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    да как раз понять тот поток сознания будет на порядок сложней
    Не согласен, эта книжка у меня была когда-то, всё нормально понималось вроде, как для того, кто вощбе не знал маш.коды. Но может у меня такое мнение потому, что других книг по спеку не было, и сравнивать не с чем. Была ещё такая же "на бейсике" и zx-ревю 1993 (1-12), но эта не в счёт(кстати всё ещё в бумаге вон валяется страшная, как война).
    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    чем понять как работает табличный вариант
    Можешь ссылку дать? А-то я тоже всякий колхоз придумываю, а с нормальными способами не знаком.
    Последний раз редактировалось Dwa83; 31.08.2020 в 07:25.

  6. #236

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    я не силен в спрайтах
    с ходу на*****кодил такую процедуру рисования спрайтов
    шириной 2 знакоместа
    высотой сколько хош (после 16 знакомест есное дело нужно сделать 1 inc hl вместо inc l)
    с точностью до 8 пикселей и выводом змейкой
    без масок и какого либо наложения
    с 512 байт табличкой адресов по Y


    ;33 вычисления адреса

    ;78+82+82+82 = 324 / 2 знакоместа
    ;38 down hl

    ;357 / 2 знакоместа = 22,3125 такта на байт
    ;719 / 4 знакоместа = 22,46875 такта на байт
    ;1081 / 6 знакомест = 22,52083 такта на байт

    Код:
    	;l = y
    	;a = x
    	;de = sprite data
    	
    	
    	ld h,Y_tab_haddr	;7
    	add (hl)		;7 low addr
    	inc h			;4
    	ld h,(hl)		;7
    	ld l,a			;4
    
    	ex de,hl		;4	
    
    				;		33t
    	
    line1_1
    	ldi	;ld (de),(hl)	;16	X+0
    		;inc de inc hl
    line1_2
    	ld a,(hl)		;7	X+1
    	ld (de),a		;7
    	inc l			;4
    line2_2
    	inc d	;Y=2		;4	X+1
    	ld a,(hl)		;7	
    	ld (de),a		;7
    	inc l			;4
    line2_1
    	dec e			;4	X+0
    	ld a,(hl)		;7	
    	ld (de),a		;7
    	inc l			;4		78t
    	
    	
    line3_1
    	inc d	;Y=3		;4
    	ldi	;ld (de),(hl)	;16	X+0
    	   	;inc de inc hl		
    line3_2
    	ld a,(hl)		;7	X+1
    	ld (de),a		;7
    	inc l			;4
    line4_2
    	inc d	;Y=4		;4	X+1
    	ld a,(hl)		;7	
    	ld (de),a		;7
    	inc l			;4
    line4_1
    	dec e			;4	X+0
    	ld a,(hl)		;7	
    	ld (de),a		;7
    	inc l			;4		82t
    	
    	
    line5_1
    	inc d	;Y=5		;4
    	ldi	;ld (de),(hl)	;16	X+0
    	   	;inc de inc hl		
    line5_2
    	ld a,(hl)		;7	X+1
    	ld (de),a		;7
    	inc l			;4
    	
    line6_2
    	inc d	;Y=6		;4	X+1
    	ld a,(hl)		;7	
    	ld (de),a		;7
    	inc l			;4
    line6_1
    	dec e			;4	X+0
    	ld a,(hl)		;7	
    	ld (de),a		;7
    	inc l			;4		82t
    	
    	
    line7_1
    	inc d	;Y=5		;4
    	ldi	;ld (de),(hl)	;16	X+0
    	   	;inc de inc hl		
    line7_2
    	ld a,(hl)		;7	X+1
    	ld (de),a		;7
    	inc l			;4
    line8_2
    	inc d	;Y=8		;4	X+1
    	ld a,(hl)		;7	
    	ld (de),a		;7
    	inc l			;4
    line8_1
    	dec e			;4	X+0
    	ld a,(hl)		;7	
    	ld (de),a		;7
    	inc l			;4		82t
    	
    ;урезанный down hl
    	inc h			;4
    	;ld a,h			;
    	;and 7			;
    	;jp nz,exit		;
    	
    	ld a,l			;4
    	sub -32			;7
    	ld l,a			;4
    	sbc a,a			;4
    	and -8			;7
    	add a,h			;4
    	ld h,a			;4		38t
    
    	;дальше копия line1_1...
    	
    		
    
    	;33 вычисления адреса
    	
    	;78+82+82+82	= 324 / 2 знакоместа
    	;38 down hl
    	
    	;357 / 2 знакоместа = 22,3125 тактов на байт
    	;719 / 4 знакоместа = 22,46875 тактов на байт
    - - - Добавлено - - -

    Цитата Сообщение от Dwa83 Посмотреть сообщение
    Можешь ссылку дать?
    не могу
    не одной ссылки у меня под рукой нет

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

    поправил смороженный бред
    Последний раз редактировалось NEO SPECTRUMAN; 30.08.2020 в 13:38.

  7. #237

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Dwa83, когда ждать следующий апдейт движка Марио ?
    Думаю, расчехлять ли щас реал для теста, иль подождать. А то влом лишний раз с кишками возиться, а на эбуляторе #не_лампава

  8. #238

    Регистрация
    31.12.2017
    Адрес
    г. Реж
    Сообщений
    156
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    34
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я пока не решил чем дальше заняться. И не понятно Марио ли делать. Так же не понятно стоит ли заморачиваться инертным движением персонажа. Или подумать над обратным скроллинга ом. Хз
    Да и времени щас только вечером будет.

  9. #239

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    SMB уже есть. Да и это попса.
    Вот bram stokers Dracula на донди/ мастер систем - крутотень. Такого не хватает на спеке. Но там сложный движок. Скролл работает по всем 8ми направлениям, есть наклонные платформы. На спеке, разумеется, всë это можно было бы упростить, как всегда.
    А ещë в дракуле два канала на музыку, один на эффекты. Что очень на руку трëхколосому AY.
    Последний раз редактировалось ALKO; 31.08.2020 в 08:06.

  10. #240

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Процедура очистки, кстати.
    На ней можно выиграть тактов в оптимизации?
    Код:
    CLEARVIRTSCR
    		LD HL, 63648; 55296+6144+96+64 начало атрибутной области виртуалки 
    		
    		LD    BC,320       
    CLEARVIRTSCR1             
    		ld a,(_CLRCOL)
    		ld (hl),a
    		inc hl
    	   
    		DEC   BC        
    		LD    A,B        
    		OR    C
    		JR    NZ,CLEARVIRTSCR1
    		ret

Страница 24 из 43 ПерваяПервая ... 202122232425262728 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. с Днем Программиста!
    от goblinish в разделе Поздравления
    Ответов: 17
    Последнее: 16.09.2015, 02:04
  2. С Днём компьютерщика и программиста !
    от Хорошист в разделе Поздравления
    Ответов: 4
    Последнее: 17.02.2013, 05:54
  3. С Днём компьютерщика и программиста !
    от Хорошист в разделе Новости
    Ответов: 5
    Последнее: 17.02.2013, 05:54
  4. Ищу желающих написать программу для ВИДЕО-игры
    от ALKO в разделе Программирование
    Ответов: 26
    Последнее: 17.02.2012, 15:07

Ваши права

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