Обратите внимание, что новости можно получать по RSS.
X
-

Демосцена, Информационные технологии, История вычислительной техники и IT

2 марта 2016, 00:27 (2978 дней назад) № 9900
Кажется начинаю понимать, почему на TI-99/4a были такие проблемы с качественными играми... Вот какой у меня получился код для рисования прямоугольника с градиентом. Просто от края до края экрана (т.е. x всегда 0, ширина всегда весь экран).
Он даже не успевает отрисоваться в обратный ход луча! Понятно, что тут что-то можно соптимизировать (я первый раз пишу для TMS9900), но всё равно ситуация как-то не радует...
------------------------
def start

vdpwd equ >8C00 ; VDP RAM write data
vdpwa equ >8C02 ; VDP RAM read/write address
ws0 equ >8300 ; Workspace 0 (till 831f)
R0L equ ws0+1 ; Workspace 0 R0 low byte

start:
li r1,25 ; y coord (top left corner of the color bar)
li r6,10 ; height (lines) max. 16

; convert Y to addr

; in: r1 - y (lines)
mov r1,r0 ; store Y
sla r0,5 ; R0 *= 32
soc r1,r0 ; R0 = R0 OR y
andi r0,>ff07

ai r0,>2000 ; >2000 - Color Table start address

mov r0, r4 ; store addr

; out: r4 = VDP addr = dst addr

; calc how many lines to draw for top half of the bar

mov r4,r5
andi r5,>00ff

neg r5
ai r5,8 ; now r5 = number of lines in top half

c r6,r5 ; compare total height (r6) with top half height (r5)
jhe skip_h
mov r6,r5 ; use initial total height! (otherwise use calculated remainder)
skip_h:

li r3,32 ; blocks (32*8 = 256 = full horiz. line of blocks)

; draw TOP half

nextblock1:
clr r2

mov r4,r0 ; set VDP RAM addr (low, hi)
movb @R0L,@vdpwa
ori r0,>4000
movb r0,@vdpwa

ai r4,8 ; increase VDP RAM addr to next block

nextline_in_block1:

movb @colortbl(r2),@vdpwd
inc r2
c r2,r5 ; +height (max 8)
jne nextline_in_block1

dec r3
jne nextblock1

c r2,r6 ; if bar completed, skip it bottom half
jeq skip_bottom

; draw BOTTOM half
; r5 - top half height

neg r5
ai r5,8 ; bottom half height = 8 - top half height (r5)

s r5,r4

li r3,32 ; blocks (32*8 = 256 = full horiz. line of blocks)
mov r2,r7 ; r2 - current line (total line counter)

nextblock2:
mov r7,r2

mov r4,r0 ; set VDP RAM addr (low, hi)
movb @R0L,@vdpwa
ori r0,>4000
movb r0,@vdpwa

ai r4,8 ; increase VDP RAM addr to next block

nextline_in_block2:
movb @colortbl(r2),@vdpwd ; r2 continues

inc r2
c r2,r6 ; compare with total height
jne nextline_in_block2

dec r3
jne nextblock2

skip_bottom:
nop

done: jmp done

colortbl:
BYTE >11, >1c, >12, >13, >1f, >1f, >13, >12, >1c, >11

end start
-------
Опубликовано: Пётр Соболев

Эта заметка и комментарии к ней в Facebook: ссылка
(возможно, в Facebook она не будет вам доступна - видимость ограничена)

Случайная заметка

9024 дня назад, 11:3013 августа 1999 Уточнение к новости о новом процессоре в PalmVII: Palm не собирается делать никаких [маркетинговых] заявлений по этому поводу и вообще как-то этот факт афишировать: This is a special announcement being made only to our developers to aid in preventing potential incompatibilities between the new hardware configuration and any software developed for the Palm VII platform. No general announcement or press release will be made, and this information should be kept ...далее

Избранное

2549 дней назад, 01:575 мая 2017 Часть 1: От четырёх до восьми Я люблю читать воспоминания людей, заставших первые шаги вычислительной техники в их стране. В них всегда есть какая-то романтика, причём какого она рода — сильно зависит от того, с каких компьютеров люди начали. Обычно это определяется обстоятельствами — местом работы, учёбы, а иногда и вовсе — ...далее

2061 день назад, 20:305 сентября 2018 "Finally, we come to the instruction we've all been waiting for – SEX!" / из статьи про микропроцессор CDP1802 / В начале 1970-х в США были весьма популярны простые электронные игры типа Pong (в СССР их аналоги появились в продаже через 5-10 лет). Как правило, такие игры не имели микропроцессора и памяти в современном понимании этих слов, а строились на жёсткой ...далее