Вход

Просмотр полной версии : Кому исходник тетриса размеро #01de байт... :)



rasmer
15.10.2014, 00:39
вот он:


;SmallTris
;by rasmer/fishbone crew
;18.09.2014
DEVICE ZXSPECTRUM128
org #4000
figures:
;1
db %01000100
db %01000100
db %01000100
db %01000100

db %00000000
db %11111111
db %00000000
db %00000000

db %01000100
db %01000100
db %01000100
db %01000100

db %00000000
db %11111111
db %00000000
db %00000000

;2
db %01100110
db %01100110
db %00000000
db %00000000

db %01100110
db %01100110
db %00000000
db %00000000

db %01100110
db %01100110
db %00000000
db %00000000

db %01100110
db %01100110
db %00000000
db %00000000

;3
db %01000100
db %01100110
db %00100010
db %00000000

db %01100110
db %11001100
db %00000000
db %00000000

db %01000100
db %01100110
db %00100010
db %00000000

db %01100110
db %11001100
db %00000000
db %00000000

;4
db %00100010
db %01100110
db %01000100
db %00000000

db %11001100
db %01100110
db %00000000
db %00000000

db %00100010
db %01100110
db %01000100
db %00000000

db %11001100
db %01100110
db %00000000
db %00000000

;5
db %01000100
db %01000100
db %01100110
db %00000000

db %00100010
db %11101110
db %00000000
db %00000000

db %01100110
db %00100010
db %00100010
db %00000000

db %11101110
db %10001000
db %00000000
db %00000000

;6
db %00100010
db %00100010
db %01100110
db %00000000

db %11101110
db %00100010
db %00000000
db %00000000

db %01100110
db %01000100
db %01000100
db %00000000

db %10001000
db %11101110
db %00000000
db %00000000

;7
db %01000100
db %11101110
db %00000000
db %00000000

db %01000100
db %11001100
db %01000100
db %00000000

db %00000000
db %11101110
db %01000100
db %00000000

db %01000100
db %01100110
db %01000100
db %00000000

;8 ;) lalala
db %01000100
db %11101110
db %00000000
db %00000000

db %01000100
db %11001100
db %01000100
db %00000000

db %00000000
db %11101110
db %01000100
db %00000000

db %01000100
db %01100110
db %01000100
db %00000000

tetristart:
ei
ld b,8
tts01: ld a,b
dec a
out (#fe),a
halt
djnz tts01

ld hl,#5800
push hl
ld de,#5801
ld bc,#2ff
ld (hl),l
ldir
pop hl
dec c
ld de,32
ld b,20
call ShowLine
ld e,1
ld b,11
call ShowLine
ld de,-32
ld b,21
call ShowLine
NewFigure:
ld a,r
and %01110000
ld (AddrFigure),a
ld hl,#5804
ld (AddrScreen),hl
call CheckFigure
jr c,tetristart
GameLoop:
ld a,0
inc a
and %00001111
ld (GameLoop+1),a

call ShowHideFigure ;show
halt
call ShowHideFigure ;hide
ld bc,#effe
in a,(#fe)
rra
jr nc,PressRotate
rra
jr nc,PressRotate
rra
jr nc,PressFaster
rra
jr nc,PressRight
rra
jr nc,PressLeft
gl01:
ld a,(GameLoop+1)
or a
call z,ToDown
jr GameLoop
PressFaster:
ld a,(GameLoop+1)
and %00000001
call nz,ToDown
jr gl01
PressRight
ld hl,-1
ld (UnMoving+1),hl
ld de,1
jr pl01
PressLeft
ld hl,1
ld (UnMoving+1),hl
ld de,-1
pl01: call Moving
call CheckFigure
call c,UnMoving
jr gl01
UnMoving:
ld de,#0000
Moving:
ld hl,(AddrScreen)
add hl,de
ld (AddrScreen),hl
ret
PressRotate:
ld a,(GameLoop+1)
and %00000011
jr nz,gl01
ld d,4
call Rotate
call CheckFigure
call c,UnRotate
jr gl01
UnRotate:
ld d,-4
Rotate:
ld a,(AddrFigure)
ld l,a
add a,d
and %00001111
ld h,a
ld a,l
and %11110000
or h
ld (AddrFigure),a
ret
ToDown:
ld hl,-32
ld (UnMoving+1),hl
ld de,32
call Moving
call CheckFigure
ret nc
call UnMoving
call ShowHideFigure

ld hl,#5800
ld b,20
td01: push hl
push bc
ld c,11
td02:
xor a
or (hl)
jr z,td03
inc l
dec c
jr nz,td02

ld a,l
and %11100000
ld l,a
push hl
push hl
ld bc,#5820
sbc hl,bc
ld b,h
ld c,l
pop hl
ld de,#20
add hl,de
ex hl,de
pop hl
lddr

td03: pop bc
pop hl
ld de,32
add hl,de
djnz td01
jp NewFigure

CheckFigure:
ld a,#07
ld (sf04+0),a
ld a,#d8
jr sf05
AddrFigure:
dw #4000
AddrScreen:
dw #5804
ShowHideFigure:
ld a,#ee
ld (sf04+0),a
ld a,#ff
sf05: ld (sf04+1),a

ld hl,figures
ld de,FigureBuffer
ld bc,128
ldir

ld h,high FigureBuffer
ld a,(AddrFigure)
ld l,a

ld de,(AddrScreen)
ld b,4
sf01: ld c,4
sf02: rlc (hl)
jr nc,sf03
ld a,(de) ;#4a
sf04: xor #ff ;#ee,#ff ;07 - RLCA ;#d8 - ret C
ld (de),a ;12
sf03: inc de
dec c
jr nz,sf02
push hl
ld hl,28
add hl,de
push hl
pop de
pop hl
inc l
djnz sf01
or a ;!!!!!
ret
ShowLine:
ld (hl),c
add hl,de
djnz ShowLine
ret
DISPLAY $
align 256

FigureBuffer:
SAVESNA "smalltris.sna",tetristart

denpopov
15.10.2014, 06:40
Бугага, как я написал тетрис для дендиконфы, это стало поветрием:)

на самом деле:
http://256bytes.untergrund.net/demo/903

rasmer
15.10.2014, 07:10
а я и не писал, что он самый маленький.... просто мне это ненадо (для баловства за вечер написал), а ктото может покопается....

denpopov
15.10.2014, 10:09
интересно как фигурки забиты.
каноничнее так:
http://i63.fastpic.ru/big/2014/1015/cd/cff94686c832d66f91b36f529c65bfcd.jpg

rasmer
15.10.2014, 14:55
А мне вот так захотелось... :-)

klondike
18.10.2014, 14:37
Для минимизации размера проще хранить фигуры как последовательность направлений смещения:

1-лево
2-вверх
3-право
4-вниз


А поворот фигуры обсчитывать как +1 направлению, при достижении 5, утснавливаем в 1.
Конец описания фигуры – включенный старший бит, т.к. длина описания фигуры может быть разной, для более точного определения “центра вращения” фигуры.
Т.е. например, квадрат – 3 байта:

000000100;4
000000001;1
100000010;2+старший бит


Без счета баллов и всякого оформления я писал тетрис в 100 байт, включая описания фигур.

Да, проверку возможности вращения и достижения поверхности осуществляем прямо при отрисовке, которая имеет 2 режима: отрисовка с проверкой - если в новой позиции место "занято", то отрисовка не возможна. И непосредственно отрисовка, если вращение или перемещение возможно.

drbars
21.10.2014, 15:01
Без счета баллов и всякого оформления я писал тетрис в 100 байт, включая описания фигур.
Исходники в студию :)

AAA
21.10.2014, 17:39
В двух демах недавна сделали эффект тетриса. Еще чтоли сделать третий?
Мне кажеться что в деме зтв все сделано уже и более добавить нечего

denpopov
21.10.2014, 18:18
Еще чтоли сделать третий?
если только найдешь похожую гифку:)

AAA
21.10.2014, 19:40
если только найдешь похожую гифку

Я и гаврарю нафига.

denpopov
21.10.2014, 20:00
Я и гаврарю нафига.
это в другой тред про идеи демо. Тетрис уже исчерпан почти что.

AAA
21.10.2014, 20:04
это в другой тред про идеи демо. Тетрис уже исчерпан почти что.

Есть эффект которого не было. Наброска цветных знакомест в виде фигур тетриса при смене экрана другим. так и не сделали.

denpopov
21.10.2014, 20:09
Есть эффект которого не было. Наброска цветных знакомест в виде фигур тетриса при смене экрана другим. так и не сделали.

не помню дему с захи,но был похожий эффект, где фигурки из тетриса составляли надпись. и похожий эффект был в кректре на пейси.

шо касается зтв, то идея выросла из картинки, где сердце сложено из фигурок тетриса(у мну нет, увы..)

klondike
22.10.2014, 23:37
Исходники в студию :)

:) 1995 год, какие исходники?

У нас (RIP Group) с UCom тогда была идея сделать тетрис "Beavis & Butt-head do tetris"
Эти два кренделя стояли по сторонам "стакана" и могли по-разному реагировать на твои успехи.
Пинать руками и ногами стакан с разных сторон - все свободные в этом направлении блоки смещались в направлении "удара" с усилием, пропорциональным уровню пинка ногой или рукой.
Или топать ногами, тогда все "висящие" в воздухе блоки после подскока должны были рушиться.
За удачный проход, сюрприз!, показывалась картинка с обнажённой, которую честно попиксельно рисовал UCom.

Пока писалась музыка и рисовалась графика я написал и вылизал весь код, дико заоптимизировав его. Включая все эффекты сдвигов и падений.

Но, как оно часто у нас случалось, на этапе дизайна и арта все и похерилось.
В целом почти все, что мы сделали - мы делали в припадке, за день-два.
Пока было настроение и запал не прошел.

Все сохранившиеся диски я лет 8 назад передал AAA, часть данных он (золотые руки!) вытащил.
Но исходников, увы, на этих дисках практически нет.
Но, в 100b реализации ничего сверхъестественного нет, т.е. задача вполне посильная.
Основную экономию памяти я уже описал – паковка фигур в 3-4 байта.

AAA
22.10.2014, 23:48
Все сохранившиеся диски я лет 8 назад передал AAA, часть данных он (золотые руки!) вытащил.

Клондайк, это ж спектрумисты. Им давай не давай, они все равно скажут что ААА ничего не давал. Все что ты дал выложено во все колекции.

http://sderni.ru/246973

Твои эффекты реально бесподобны. И даже мы с ВНН сделали с них дему )))

http://zxaaa.untergrund.net/view_demo.php?id=7479


http://www.youtube.com

Кстати я ее обожаю, ваще вышло круто, музыка бесподобна и твой скролл ваще в натуре хорош. У тебя все эффекты фильдиперстовые были. А учитывая что писал их в МОНС так это ваще бомба