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

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

2 марта 2016, 00:27 (3217 дней назад) № 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 она не будет вам доступна - видимость ограничена)

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

9118 дней назад, 23:075 января 2000 Продолжая тему выпуска в Open Source, не могу не сослаться на действительно, как я считаю, очень важный и интересный шаг: Apple собирается "отпустить" OS X (кодовое название Darwin). Об этом заявил Стив Джобс на Macworld Expo. OS X - это BSD-based система (с весьма изрядными, насколько мне известно по общению с несколькими программистами проекта, ...далее

Избранное

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

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