nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 19 Oct 2018 11:11



Reply to topic  [ 21 posts ]  Go to page Previous  1, 2
Ивановский doom в dss 
Author Message
Senior

Joined: 05 Oct 2009 20:44
Posts: 136
Location: 212.164.105.5
Reply with quote
А ты в ahdl силён?


30 Mar 2016 05:03
Profile
Maniac

Joined: 22 Jun 2005 05:35
Posts: 239
Location: МО Россия
Reply with quote
не verilog тока, и то в режиме чтения и мелких патчей


30 Mar 2016 05:37
Profile ICQ
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17014
Location: Colorado
Reply with quote
А можно разжевать для тупых API масштабирования через прошивку? Оно вроде нигде не задокументировано было...

_________________
:eugeek: https://twitter.com/Shaos1973


30 Mar 2016 07:18
Profile WWW
Senior

Joined: 05 Oct 2009 20:44
Posts: 136
Location: 212.164.105.5
Reply with quote
Quote:
А можно разжевать для тупых API масштабирования через прошивку? Оно вроде нигде не задокументировано было...

Точно. Единственный пример это исходники дума. судя по этим исходникам и некоторым отдельным выражениям в те времена от Ивана я понял так, что прошивка добавляет аппаратное масштабирование. Более конкретно:
устанавливаем масштаб 1:1. читаем в аксель линию спрайта/текстуры (например, если текстура 64на64, тогда читаем 64 байта в аксель). Далее указываем через порт масштаб с которым будем выводить. Через регистр b задаём старшую часть коэффициента масштабирования, c=0 (всегда, как я понял), данные в сам порт = младшая часть коэффициента. Насколько в плюс и минус можно масштабировать, я пока не знаю, т.к. пока не могу применить эту прошивку.
После того как указали масштаб, говорим акселю, что нужно выкинуть данные из него. Аксель выбросит линию согласно масштаба. Единственное, не уверен, требуется ли по новой задавать размер транзакции или не требуется. Вот запущу прошивку, тогда и понятно будет...
Таким образом прошивка добавляет акселератору дополнительный параметр транзакции (дополнительное управление акселем). на входе чтение как 1к1, но на выходе получаем размер транзакции*hi.low_коэффициент_масштаба. Таким образом линия будет или меньше оригинала или больше.
Если применить эту прошивку, например, к моему ротозумеру, тогда при том же размере (видимом) можно получить больше фпс, т.к. выгрeбaть из текстуры я буду 104 байта, а выкидывать 208. Единственное, дублить строки придётся один фиг.

з.ы. Shaos, форум некоторые слова, почему-то, заменяет на символ $. баг какой-то...


30 Mar 2016 09:37
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17014
Location: Colorado
Reply with quote
Это автоцензор :)

А коэффициент не целый ведь? В каком месте там точка?

_________________
:eugeek: https://twitter.com/Shaos1973


30 Mar 2016 10:08
Profile WWW
Senior

Joined: 05 Oct 2009 20:44
Posts: 136
Location: 212.164.105.5
Reply with quote
Quote:
А коэффициент не целый ведь? В каком месте там точка?

я могу привести пример кода из исходника дума.
Code:
;    ld c,0
    ld b,1
    out (c),c   ; масштаб 1:1,
   exx

   set 4,l      ;
   ld a,(hl)   ; номер линии

   exx

    ld h,a
;    ld l,0
    ld l,c
    set 6,h
    res 7,h

    ex af,af'
    out (cpu_w1),a   ; стенка   стенка раскидана на 16 килобайт

    ld d,d
    ld a,40h   ; взять 64 байта
    ld l,l
    ld a,(hl)   ; взять немасштабированно!
    ld b,b      ; стенка в озу акселератора!
ld a,5
place_l2 equ $-1
    out (cpu_w1),a   ; следующее положение

   exx

   res 4,l         ;
   ld a,(hl)   ; a - высота

;   ld a,80h

   exx
    ld h,table_x/256
    ld l,a      ; высота table_x - таблица высот
    ld b,(hl)   ; старшая часть коэфициента
;    ld b,0
    inc h

    ld l,(hl)   ; младшая часть коэфициента/смещение в стенке
;    ld c,0
    out (c),l   ; масштабирование
;    outi      ; b уменьшается сначала!

    bit 7,a
    jr z,high_1   ; 64 точки, не на весь экран

; <64 точки, на весь экран
    xor a
    out (port_y),a   ; с самого начала

    ld d,d
    ld (de),a   ; 256 байт и line-z-bufer!!!!
    ld b,b
    ld a,58h
    out (cpu_w3),a   ;
    ld a,a
    ld (de),a   ; фигакс всю линию!!!
    ld b,b
    xor a
    ld (de),a   ; line-z-bufer!!!!

   exx
   jr next_angle

прямо сейчас таблички у меня нет, но есть код который её генерит:
Code:
FOR j=0 TO 120
    LET a=64/(256-j*2)
    POKE 40960+256+j,INT (a)
    POKE 40960+j,INT (256*(a-INT (a)))
    POKE 40960+512+j,-j*2
NEXT j
RETURN

насколько сильно там масштабирование с точкой сказать пока не могу. нужно запустить прошивку для начала.


30 Mar 2016 10:23
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 21 posts ]  Go to page Previous  1, 2

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.