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

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

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

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

3695 дней назад, 02:4825 мая 2015 Около года назад взял себе Boogie Board - простое устройство для рукописных заметок. Там использовалась довольно специфическая технология - малоконтрастный Reflex LCD экран, на котором можно писать как на бумаге, но нельзя сохранять или стирать написанное (очистить можно только сразу весь экран). То есть, его даже сложно назвать ...далее

Избранное

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

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