Ничего необычного, просто ремейк демки 256b:
;https://codegolf.stackexchange.com/questions/126738/lets-draw-mona-lisa
;https://www.pouet.net/prod.php?which=62917
Dim co(4)
co(0)=RGB($ff,$e2,$89);$FFE289; RRGGBB
co(1)=RGB($e9,$9e,$45);$E99E45
co(2)=RGB($a5,$5a,$00);$A55A00
co(3)=$000000
seed.l=$7EC80000
XOR_MSK.l = $04C11DB7
dir.l=0
carry.l=0
If InitSprite() And OpenWindow(0,0,0,640,480,"Mona Lisa",#PB_Window_SystemMenu) And OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)
StartDrawing(ScreenOutput())
For part=0 To 63
word.l=PeekU(?BRUSH+part*2)
seed = (seed&$FFFF0000)|word
bx.a=word&255
by.a=(word>>8)&255
For length = 0 To (64 - part) * 32 - 1
carry = seed&$80000000
seed = (seed << 1) &$FFFFFFFF
If carry
seed = seed ! XOR_MSK
dir.l = seed & 255
EndIf
Select dir & $82
Case 0:
by = (by + 1) &127
Case 2:
bx = (bx + 1) & 127
Case $80:
by = (by - 1) &127
Case $82:
bx = (bx - 1) &127
EndSelect
bs=4; box size
If bx<128 And by<96
Box((bx)*bs,(by)*bs,bs,bs,co(part &3))
EndIf
Next length
Next part
StopDrawing()
FlipBuffers()
Repeat
Until WindowEvent()=#PB_Event_CloseWindow
EndIf
DataSection
BRUSH:
Data.u $030A, $37BE, $2F9B, $072B, $0E3C, $F59B, $8A91, $1B0B
Data.u $0EBD, $9378, $B83E, $B05A, $70B5, $0280, $D0B1, $9CD2
Data.u $2093, $209C, $3D11, $26D6, $DF19, $97F5, $90A3, $A347
Data.u $8AF7, $0859, $29AD, $A32C, $7DFC, $0D7D, $D57A, $3051
Data.u $D431, $542B, $B242, $B114, $8A96, $2914, $B0F1, $532C
Data.u $0413, $0A09, $3EBB, $E916, $1877, $B8E2, $AC72, $80C7
Data.u $5240, $8D3C, $3EAF, $AD63, $1E14, $B23D, $238F, $C07B
Data.u $AF9D, $312E, $96CE, $25A7, $9E37, $2C44, $2BB9, $2139
;https://www.pouet.net/prod.php?which=62917
Dim co(4)
co(0)=RGB($ff,$e2,$89);$FFE289; RRGGBB
co(1)=RGB($e9,$9e,$45);$E99E45
co(2)=RGB($a5,$5a,$00);$A55A00
co(3)=$000000
seed.l=$7EC80000
XOR_MSK.l = $04C11DB7
dir.l=0
carry.l=0
If InitSprite() And OpenWindow(0,0,0,640,480,"Mona Lisa",#PB_Window_SystemMenu) And OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)
StartDrawing(ScreenOutput())
For part=0 To 63
word.l=PeekU(?BRUSH+part*2)
seed = (seed&$FFFF0000)|word
bx.a=word&255
by.a=(word>>8)&255
For length = 0 To (64 - part) * 32 - 1
carry = seed&$80000000
seed = (seed << 1) &$FFFFFFFF
If carry
seed = seed ! XOR_MSK
dir.l = seed & 255
EndIf
Select dir & $82
Case 0:
by = (by + 1) &127
Case 2:
bx = (bx + 1) & 127
Case $80:
by = (by - 1) &127
Case $82:
bx = (bx - 1) &127
EndSelect
bs=4; box size
If bx<128 And by<96
Box((bx)*bs,(by)*bs,bs,bs,co(part &3))
EndIf
Next length
Next part
StopDrawing()
FlipBuffers()
Repeat
Until WindowEvent()=#PB_Event_CloseWindow
EndIf
DataSection
BRUSH:
Data.u $030A, $37BE, $2F9B, $072B, $0E3C, $F59B, $8A91, $1B0B
Data.u $0EBD, $9378, $B83E, $B05A, $70B5, $0280, $D0B1, $9CD2
Data.u $2093, $209C, $3D11, $26D6, $DF19, $97F5, $90A3, $A347
Data.u $8AF7, $0859, $29AD, $A32C, $7DFC, $0D7D, $D57A, $3051
Data.u $D431, $542B, $B242, $B114, $8A96, $2914, $B0F1, $532C
Data.u $0413, $0A09, $3EBB, $E916, $1877, $B8E2, $AC72, $80C7
Data.u $5240, $8D3C, $3EAF, $AD63, $1E14, $B23D, $238F, $C07B
Data.u $AF9D, $312E, $96CE, $25A7, $9E37, $2C44, $2BB9, $2139
Комментарии
Отправить комментарий