ads

Showing posts with label ностальгия. Show all posts
Showing posts with label ностальгия. Show all posts

Friday, March 15, 2013

Сейчас скинули посмотреть новую модельку Т-34 в зимней гамме для одной новой игрушки, которая сейчас активно разрабатывается. И это напомнило мне мою первую 3d работу. Если это можно назвать работой =)) Еле-еле нашел исходники и смог отрендерить. Аж слезу пустил.


Кажется, это должна была быть игрушка Танчики. Тогда на третьем курсе не хватило на нее время в силу массы причин.

Хотя нет! Первой моделью был "Галаксиан" -- что-то типа робота, летающего в космосе =) Это писалась игра "Космические гладиаторы" на втором курсе и делалась на своем 3d движке, досовском, компилируется только Borland C++ 3.0. Велосипедисты же мы были =) Но было интересно.


Код еле-еле скомпилировал. Особенно доставляют вот такие строчки:


void InitGraph() { asm { mov ax,0x13; int 0x10 }; };
void CloseGraph() { asm { mov ax,3; int 0x10 }; };
void PointB(int x, int y, unsigned char color, int sel)
{
  asm {
    cmp x,0; jl notout; cmp y,0
    jl notout; cmp x,320; jge notout
    cmp y,200; jg notout
    push ds; push sel; pop ds
    mov ax,320; mov bx,y
    mul bx; add ax,x; mov bx,ax
    mov al,color; mov [bx],al; pop ds
  };
  notout:;
};

Тогда компьютеры были большие, деревья маленькие, а мы наивно полагали, что сможем на ассемблере сделать более эффективный код, чем компилятор С. Но это было очень интересно.

Графический движок умел даже текстурировать каким-то моим лично изобретенным алгоритмом.


У меня тогда был комп с Intel 80486 DX2. На нем все это адски тормозило. Но это было чертовски интересно =)

Надеюсь, еще через 15 лет буду также ржать над тем, что делаю сейчас =)

Friday, June 10, 2011

Шахматные роботы =)

Поностальгировал. Запустил из-под дос-бокса игрушку, которую я писал в школе еще, в 1998 году. На, прости господи, бейсике. Работает! Роботы ходят, стреляют, шахматные правила там анализируются, даже рекордер есть и проигрыватель.



UPD. 11/Jun/2010.
Из той же оперы первая демка на ассемблере... 2229 байт =) На первом курсе универа.


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

Оттуда, мега-крутой алгоритм сжатия картинки =)))

UnPack macro
; Макрос восстанавливает рисунок из сжатого состояния.
mov bx,offset picture
mov si,offset pack
mov dh,y ; Принцип работы:
mov dl,halfx ; Каждая последовательность пикселов
goloop: mov al,[si] ; представляется в виде байта (!)
mov ah,al ; где старшие 4 бита указывают на
mov cl,4 ; длину последовательности, а младшие
shr ah,cl ; - на цвет. Причем цвет надо еще
mov cl,ah ; умножить на 4 чтобы получить весь
and al,0fh ; диапазон (исключая не кратные 4).
shl al,1 ; Таким образом, максимальная длина
shl al,1 ; последовательности = 15, но для
sml: mov [bx],al ; указания последовательности большей
inc bx ; длины можно использовать два байта.
dec dl
jnz nxl
mov dl,halfx ; Процедура оставляет место
add bx,halfx ; в памяти для работы Mirror.
dec dh
jz ext
nxl: loop sml
inc si
jmp goloop
ext: Mirror ; Делаем зеркальное отображение.
endm