nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 09:41



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

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


30 Mar 2016 04:03
Profile
Maniac

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


30 Mar 2016 04:37
Profile ICQ
Admin
User avatar

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

_________________
:dj: https://mastodon.social/@Shaos


30 Mar 2016 06:18
Profile WWW
Maniac

Joined: 05 Oct 2009 19:44
Posts: 223
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 08:37
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Это автоцензор :)

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

_________________
:dj: https://mastodon.social/@Shaos


30 Mar 2016 09:08
Profile WWW
Maniac

Joined: 05 Oct 2009 19:44
Posts: 223
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 09:23
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Глядя на бейсик программу можно предположить:
Масштаб это 64/(256-j*2) т.е. от 64/256=1/4 до 64/16=4
#A000...#A0FF - пишется дробная часть масштаба умноженная на 256
#A100...#A1FF - пишется целая часть масштаба от 0 до 4
#A200...#A2FF - пишется число от 0 до -240 что в положительном виде означает число от 256 до 16 (т.е. новый размер отрезка)

_________________
:dj: https://mastodon.social/@Shaos


03 Mar 2021 22:29
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 22 posts ]  Go to page Previous  1, 2

Who is online

Users browsing this forum: No registered users and 4 guests


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.