TS-Conf F.A.Q.
Re: TS-Conf F.A.Q.
ну так
; задаем адрес где лежат спрайты ($8000, это то же самое что 0000, потому что дма видит только смещение внутри 16к страницы)
это оно и есть.
ты из паги в пагу пересылаешь, а не из абсолютного адреса
; задаем адрес где лежат спрайты ($8000, это то же самое что 0000, потому что дма видит только смещение внутри 16к страницы)
это оно и есть.
ты из паги в пагу пересылаешь, а не из абсолютного адреса
Re: TS-Conf F.A.Q.
VBI писал(а):ты из паги в пагу пересылаешь, а не из абсолютного адреса
а как с $4000 ?
[x] No Screenshot
Re: TS-Conf F.A.Q.
смотри, для дма не используются старшие 2 бита в адресе.
т.е. адрес всегда дма видит как 00хх хххх хххх хххх
ну и ей что 4000, что 8000, что 0000, что с000 - всё 0000
другое дело - номер паги.
т.е. адрес всегда дма видит как 00хх хххх хххх хххх
ну и ей что 4000, что 8000, что 0000, что с000 - всё 0000
другое дело - номер паги.
Re: TS-Conf F.A.Q.
У тебя если #4000 лежит в паге #05 то просто для дма вбиваешь пагу 5 и все,адрес #4000=#8000=#c000=#0000 ,то-есть пересыл в пагу 5 по этим адресам = #4000,старший не учитывается как будто для дма страница одна размером #3fff.
Re: TS-Conf F.A.Q.
смотрите, оно и понятно. неясно, где задается адрес.
я сов7 запутался.
я сов7 запутался.
[x] No Screenshot
Re: TS-Conf F.A.Q.
У тебя в голове каша из адреса з80 и физического адреса.
Еще раз (пишу просто так, не надеясь на взаимность и понимание):
0. Физическая память (4 мегабайта), условно разбита на паги по 16 килобайт.
1. Z80
Работает с адресами в диапазоне 64кБ. Этот диапазон разбит на 4 окна по 16кБ.
Какая пага физической памяти видна в каждом окне задают регистры Рage0..3.
2. DMA
Работает с физическим адресом в диапазоне 4МБ (22 бит), ибо не ограничена, как проц в 64кБ.
3. Графика, спрайты
Тоже работают с физическими адресами, старшие биты адреса задаются в соответствующих регистрах паг (SGPage, TxGPage etc).
Еще раз (пишу просто так, не надеясь на взаимность и понимание):
0. Физическая память (4 мегабайта), условно разбита на паги по 16 килобайт.
1. Z80
Работает с адресами в диапазоне 64кБ. Этот диапазон разбит на 4 окна по 16кБ.
Какая пага физической памяти видна в каждом окне задают регистры Рage0..3.
2. DMA
Работает с физическим адресом в диапазоне 4МБ (22 бит), ибо не ограничена, как проц в 64кБ.
3. Графика, спрайты
Тоже работают с физическими адресами, старшие биты адреса задаются в соответствующих регистрах паг (SGPage, TxGPage etc).
Re: TS-Conf F.A.Q.
Адрес задаешь в регистрах источник (DMASH #1BAF и DMASL #1AAF) + пага где это находится (DMASX #1CAF), так же и приемник куда кидаешь DMADL #1DAF DMADH #1EAF DMADX #1FAF страницы переключать не надо,не нужно их включать для зетника ,переслал данные,потом для з80 включил страницу куда переслал ,а там уже все есть.
Вопрос про прерывания,VBI ответил так:ты можешь вызвать свой код сразу по завершению пересылки дма. это и будет прерыванием.
если у нас включен бит обработки прерывания от дма - то по завершению пересылки будет вызван обработчик, всё
а если этот бит выключен - то обработчик не вызывается
Вопрос про прерывания,VBI ответил так:ты можешь вызвать свой код сразу по завершению пересылки дма. это и будет прерыванием.
если у нас включен бит обработки прерывания от дма - то по завершению пересылки будет вызван обработчик, всё
а если этот бит выключен - то обработчик не вызывается

Re: TS-Conf F.A.Q.
а чем отличается чистка памяти от чистки экрана?
Re: TS-Conf F.A.Q.
VBI писал(а):а чем отличается чистка памяти от чистки экрана?
моя каша в голове понятия не имеет.
[x] No Screenshot
Re: TS-Conf F.A.Q.
VBI писал(а):а чем отличается чистка памяти от чистки экрана?
тем что память не рисуется, а экран рисуется:)
Re: TS-Conf F.A.Q.
g0blinish смотри у тебя в памяти лежит картинка начинается со страницы указанной VPage и идет по порядку,для 16цветной картинки 360х288=103680/2=51840 50кБайт/16кб = 4 страницы,вот и чисти от VPage до VPage+4,256цветные также но в 2раза больше страниц надо пройтись.
А там же строка 512,тогда 512х288 =4.5 страницы ,5 страниц в цикле.
Просто разница (просто памяти) и VPage,в том ,что VPage всегда должна начинаться с четной страницы основной памяти ,8 для 16цветов и четной 16 для 256цветов ,вроде так.
А там же строка 512,тогда 512х288 =4.5 страницы ,5 страниц в цикле.
Просто разница (просто памяти) и VPage,в том ,что VPage всегда должна начинаться с четной страницы основной памяти ,8 для 16цветов и четной 16 для 256цветов ,вроде так.
Последний раз редактировалось AndyD Вс, 17.01.2016 13:45:46, всего редактировалось 2 раза.
Re: TS-Conf F.A.Q.
$this->spoil_pass('ld bc,#13af
ld a,#10
out (c),a
xor a
ld hl,#c000
ld (hl),a
inc l
ld (hl),a
ld b,32
loop push bc
ld hl,clear512
call copyDMA
xor a
ld (qqw+1),a
ld a,(dst0+1)
add a,#02
ld (dst0+1),a
pop bc
djnz loop
ld b,5 ;количество страниц
loop1 push bc
ld hl,clear16
call copyDMA
ld a,(vpage1+1)
inc a
ld (vpage1+1),a
pop bc
djnz loop1
ret
copyDMA ld bc,#27AF
DMA_busy in (c)
jp m,DMA_busy
;ld c,#AF
.m1 ld b,(hl)
inc hl
inc b
ret z ; JR z,dma_stats
outi
JP .m1
clear512 db #1a,0
src0 db #1b,0
vpage0 db #1c,#10
qqw db #1d,2
dst0 db #1e,0
vpage1 db #1f,#10
dl db #26,#FF ;512байт
bl db #28,#0 ;сколько блоков 512
db #27,%00000001 ;RAM (Src) is copied to RAM (Dst)
db #ff
clear16 db #1a,0
db #1b,0
vpage0 db #1c,#10
db #1d,0
db #1e,0
vpage1 db #1f,#10
dl db #26,#FF ;512байт
bl db #28,#20 ;сколько блоков 512
db #27,%00000001 ;RAM (Src) is copied to RAM (Dst)
db #ff')
Вот накидал говнокод,тоже ждал когда гуру свое оптимизированное покажут.
ld a,#10
out (c),a
xor a
ld hl,#c000
ld (hl),a
inc l
ld (hl),a
ld b,32
loop push bc
ld hl,clear512
call copyDMA
xor a
ld (qqw+1),a
ld a,(dst0+1)
add a,#02
ld (dst0+1),a
pop bc
djnz loop
ld b,5 ;количество страниц
loop1 push bc
ld hl,clear16
call copyDMA
ld a,(vpage1+1)
inc a
ld (vpage1+1),a
pop bc
djnz loop1
ret
copyDMA ld bc,#27AF
DMA_busy in (c)
jp m,DMA_busy
;ld c,#AF
.m1 ld b,(hl)
inc hl
inc b
ret z ; JR z,dma_stats
outi
JP .m1
clear512 db #1a,0
src0 db #1b,0
vpage0 db #1c,#10
qqw db #1d,2
dst0 db #1e,0
vpage1 db #1f,#10
dl db #26,#FF ;512байт
bl db #28,#0 ;сколько блоков 512
db #27,%00000001 ;RAM (Src) is copied to RAM (Dst)
db #ff
clear16 db #1a,0
db #1b,0
vpage0 db #1c,#10
db #1d,0
db #1e,0
vpage1 db #1f,#10
dl db #26,#FF ;512байт
bl db #28,#20 ;сколько блоков 512
db #27,%00000001 ;RAM (Src) is copied to RAM (Dst)
db #ff')
Вот накидал говнокод,тоже ждал когда гуру свое оптимизированное покажут.
Re: TS-Conf F.A.Q.
AndyD, сильно жестоко. дма сама переключает страницы при транзакциях.
http://hype.retroscene.org/blog/dev/180.html
Очистка (заливка) экрана:
для 360х288 в fill_screen меняем
http://hype.retroscene.org/blog/dev/180.html
Очистка (заливка) экрана:
Код: Выделить всё
ld bc,PAGE3
ld a,Vid_page
out (c),a
ld hl,0 ;00 - цвет, заданный в палитре
ld (#c000),hl
ld hl,fill_screen
jp set_ports
fill_screen defb #1a,0 ;
defb #1b,0 ;
defb #1c,Vid_page ;
defb #1d,0 ;
defb #1e,0 ;
defb #1f,Vid_page ;
defb #28,200 ;
defb #26,#ff ;
defb #27,%00000100 ; DMA_FILL
db #ff
для 360х288 в fill_screen меняем
Код: Выделить всё
defb #28,288-1 ;
defb #26,360/2 ;
Re: TS-Conf F.A.Q.
Так это только для обнуления 2х байт в начале VPage или вообще просто памяти что надо очистить,кстати после вызова дма есть кучка тактов пока дма работает.
RAM (Dst) is filled with word from RAM (Src) а это заменяет тот мой бред для смещения дест и сорс
RAM (Dst) is filled with word from RAM (Src) а это заменяет тот мой бред для смещения дест и сорс

Последний раз редактировалось AndyD Вс, 17.01.2016 17:28:10, всего редактировалось 1 раз.
Re: TS-Conf F.A.Q.
MGN Group
Re: TS-Conf F.A.Q.
Да, на всякий случай напомню, что чистить надо прямоугольное окно экранки, а не ВСЕ паги целиком.
Re: TS-Conf F.A.Q.
TS-Labs писал(а):а, на всякий случай напомню, что чистить надо прямоугольное окно экранки, а не ВСЕ паги целиком.
а как?
[x] No Screenshot
Re: TS-Conf F.A.Q.
Размер бурста в ширину экранки, выравнивание под режим 256/512.
Re: TS-Conf F.A.Q.
любой (произвольный) GROB 

Re: TS-Conf F.A.Q.
Не,ну они издеваются
Нет чтоб объяснить по человечески ,специально делают,что бы ты не успел к конкурсу,бояться

Нет чтоб объяснить по человечески ,специально делают,что бы ты не успел к конкурсу,бояться

Re: TS-Conf F.A.Q.
AndyD писал(а):Нет чтоб объяснить по человечески ,специально делают,что бы ты не успел к конкурсу,бояться
это ты зря. я с Вовкиной помощью три прода вывалил:)
[x] No Screenshot
Re: TS-Conf F.A.Q.
Клёвый зощенко)
Народ, ну просто же всё
Заливаем память двумя байтами - словом.
Указываем адрес и пагу, а потом - сколько длина одной линии заливки (льёт сразу 2байта за раз, поэтому наша длина /2), и сколько таких линий всего. То что будет задействовано несколько паг сразу - не беда, дма сама перейдёт на следующую
Еще стоит учесть биты выравнивания. Т.е.задача сводится к отрисовке прямоугольника произвольного размера одним цветом.
Народ, ну просто же всё
Заливаем память двумя байтами - словом.
Указываем адрес и пагу, а потом - сколько длина одной линии заливки (льёт сразу 2байта за раз, поэтому наша длина /2), и сколько таких линий всего. То что будет задействовано несколько паг сразу - не беда, дма сама перейдёт на следующую
Еще стоит учесть биты выравнивания. Т.е.задача сводится к отрисовке прямоугольника произвольного размера одним цветом.
Последний раз редактировалось VBI Пн, 18.01.2016 19:49:43, всего редактировалось 1 раз.