6 Commits

Author SHA1 Message Date
d538e7b4e8 Blocks: add 3 models 2025-07-26 21:24:07 +03:00
6aff7b8c02 Kernel: Fixed bug in iso9660
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 1m33s
Build system / Build (pull_request) Successful in 7m3s
Fixed a bug of outputting erroneous file names in iso9660 (not juliet)
2025-06-23 12:54:22 +02:00
e0d724286f Kernel: Fixed magic numbers and constants in iso9660 2025-06-23 12:54:22 +02:00
03dcc2051f FASM: Remove SVN tagged versions (#268)
- Delete SVN tagged versions `1.68` and `1.71`. We do not need to retain historic FASM versions in KolibriOS source code.

(Work towards #75, point 1)

Reviewed-on: #268
Reviewed-by: Burer <burer@noreply.localhost>
Co-authored-by: Andrew <dent.ace@gmail.com>
Co-committed-by: Andrew <dent.ace@gmail.com>
2025-06-23 09:08:41 +02:00
03111f5e99 programs: Optimize GIFs (Pt 2) (#238)
Lossless optimization of GIF image files.
Processed with `gifsicle -O3`(extreme) or `gifsicle --no-loopcount --no-comments` (when only minimal adjustment is permitted).
LZW stream optimized with `flexigif -p -f -a=1`. Methods selected to ensure optimal compression with final KPACK step, since better LZW may reduce LZMA used in bundling programs; evaluated with: `xz --format=lzma --check=none --lzma1=mode=normal,dict=64KiB,nice=273,lc=3,lp=0,pb=2 -k -c in.gif > out.lzma`
QA with [GIF Inspector](https://movableink.github.io/gif-inspector/) and via code review.

📦 Program graphics (compiled or included with software):
- Slimmed `demos/free3d04 `, saved 1489 bytes, ~4%.
- Slimmed `media/midamp/` 3 files, saving 131 bytes, average ~4%.
- Slimmed `testing/cpuid/trunk/cyrix.gif`, saved 25 bytes, ~3%.

📖 Documentation only artwork (distributed outside a program):
- Slimmed `Beat/Beat.gif`, saved 29 bytes, ~0.5%.

🥀 Old vestigial images, no longer used (pending deletion):
- Slimmed `demos/3detx60b/` 2 files, saving 762 bytes, average ~5%.

Reviewed-on: #238
Reviewed-by: Burer <burer@noreply.localhost>
Reviewed-by: Ivan B <dunkaist@noreply.localhost>
Co-authored-by: Andrew <dent.ace@gmail.com>
Co-committed-by: Andrew <dent.ace@gmail.com>
2025-06-18 07:04:52 +02:00
4cc716458a programs/games: Optimize GIFs (#235)
Lossless optimization of GIF image files.
Processed with `gifsicle -O3`(extreme) or `gifsicle --no-loopcount` (when only minimal adjustment is permitted).
LZW stream optimized with `flexigif -p -f -a=1`. Methods selected to ensure optimal compression with final KPACK step, since better LZW may reduce LZMA used in bundling programs, using: `xz --format=lzma --check=none --lzma1=mode=normal,dict=64KiB,nice=273,lc=3,lp=0,pb=2 -k -c in.gif > out.lzma`
QA with [GIF Inspector](https://movableink.github.io/gif-inspector/) and via code review.

📦 Program graphics (compiled or included with software):
- Slimmed `almaz/aniall.gif`, saving 380 bytes, ~9%.
- Slimmed `invaders/` 21 files, saving 1232 bytes, average ~3%.
- Slimmed `megamaze/orientg2.gif`, saving 986 bytes, ~31%.
- Slimmed `phenix/objects.gif`, saving 24 bytes, ~2%.

🥀 Old vestigial images, no longer used:
- Deleted `almaz/explode1.gif`, 4865 bytes.

Reviewed-on: #235
Reviewed-by: Burer <burer@noreply.localhost>
Reviewed-by: Ivan B <dunkaist@noreply.localhost>
Co-authored-by: Andrew <dent.ace@gmail.com>
Co-committed-by: Andrew <dent.ace@gmail.com>
2025-06-17 23:54:40 +02:00
39 changed files with 797 additions and 131 deletions

View File

@@ -809,7 +809,8 @@ iglobal
align 4
iso9660_user_functions:
dd iso9660_free
dd (.end - $ - 4) / 4
dd (.end - .first) / 4
.first:
dd iso9660_Read
dd iso9660_ReadFolder
dd 0
@@ -828,7 +829,7 @@ iso9660_create_partition:
; esi -> DISK structure
; out:
; eax -> iso9660 partition structure, 0 = not iso9660
cmp dword [esi + DISK.MediaInfo.SectorSize], 2048 ; cd disks
cmp dword [esi + DISK.MediaInfo.SectorSize], CDBlockSize
jnz .fail_disk_sector
push ebx
@@ -838,7 +839,7 @@ iso9660_create_partition:
add [esp], eax
mov dword[esp + 4], 0 ; base encoding - ascii
add ebx, 2048
add ebx, CDBlockSize
.new_descr:
inc dword[esp]
; read 16 sector, check header of descriptor
@@ -899,7 +900,7 @@ iso9660_create_partition:
; copy data on struct
add esp, 4
pop dword[eax + ISO9660.type_encoding]
mov dword[eax + ISO9660.lba_size], 2048 ;TODO
mov dword[eax + ISO9660.lba_size], CDBlockSize
pop dword[eax + ISO9660.primary_descr]
mov ecx, dword[ebx + ISO9660_PRIMARY_DESCRIPTOR.root_dir_record + ISO9660_DIRECTORY_RECORD.lba]
@@ -928,12 +929,10 @@ iso9660_create_partition:
; IN: eax - ptr PARTITION
; OUT: -
; SAVE: esi, edi
; Function free PARTITION struct and all object this structure
; The function frees the PARTITION structure and all its elements from memory
iso9660_free:
jmp free
;-----------------------------------------------------------------------------
; ISO9660 external functions
; in:
@@ -946,14 +945,14 @@ iso9660_Read:
sub esp, 4 ; for ptr on memory page
call iso9660_find_file
mov esi, eax
mov edi, [ebx + 16] ; ptr to programm buffer
mov edi, [ebx + f70s0arg.buf] ; ptr to programm buffer
test byte[esi + ISO9660_DIRECTORY_RECORD.flags], 10b ; check dir
jnz iso9660_find_file.not_found
; check offset (offset <= size)
mov edx, [ebx + 4] ; low offset
cmp dword[ebx + 8], 0 ; high offset
mov edx, [ebx + f70s0arg.offset.lo] ; low offset
cmp dword[ebx + f70s0arg.offset.hi], 0 ; high offset
jnz iso9660_find_file.bad_offset ; error offset > max size
cmp edx, [esi + ISO9660_DIRECTORY_RECORD.data_length]
@@ -961,39 +960,48 @@ iso9660_Read:
; good file - copy file data
sub esp, 4*4
mov dword[esp + 3*4], 0
mov [esp + 1*4], edx ; offset to start copy
mov dword[esp], 0 ; count copping byte
virtual at esp
.var_count_copied_data dd ?
.var_offset_copy dd ?
.var_size_copy_data dd ?
.var_fs_err dd ?
.var_buffer dd ?
end virtual
mov dword[.var_fs_err], 0 ; ENOERR
mov [.var_offset_copy], edx ; offset to start copy
mov dword[.var_count_copied_data], 0 ; count copping byte
; check end offset (offset+size_buff <= size)
mov ecx, [esi + ISO9660_DIRECTORY_RECORD.data_length]
mov eax, [ebx + 12] ;size copy data - buffer size
mov eax, [ebx + f70s0arg.count] ;size copy data - buffer size
sub ecx, edx
mov [esp + 2*4], eax ; set count copy = buffer size
cmp ecx, eax ; max copy size > buffer size
mov [.var_size_copy_data], eax ; set count copy = buffer size
cmp ecx, eax ; max copy size > buffer size
jae @f
mov [esp + 2*4], ecx
mov dword[esp + 3*4], ERROR_END_OF_FILE
mov [.var_size_copy_data], ecx
mov dword[.var_fs_err], ERROR_END_OF_FILE
@@:
mov esi, [esi + ISO9660_DIRECTORY_RECORD.lba]
; [esp + 4*4] = ptr temp buffer
; [esp+3*4] = fs err code [esp+2*4] = size copy data
; [esp+1*4] = offset copy [esp] = count copying data
; [esp+1*4] = offset copy [esp] = count copied data
.full_size:
; check offset mod sector_size = 0
test edx, not -2048
jz .first_align ; no creat buffer for first align
test edx, not -CDBlockSize
jz .first_align
mov ebx, [esp + 4*4]
mov ebx, [.var_buffer]
; read sector
push edx
and edx, -2048
shr edx, BSF 2048
and edx, -CDBlockSize
shr edx, BSF CDBlockSize
mov eax, esi ; ISO9660_DIRECTORY_RECORD.lba
add eax, edx
mov ecx, 1
@@ -1010,18 +1018,18 @@ iso9660_Read:
mov ecx, edx
neg edx
and edx, not -2048
and ecx, not -2048
and edx, not -CDBlockSize
and ecx, not -CDBlockSize
; create new offset
add dword[esp + 1*4], not -2048
and dword[esp + 1*4], -2048
add dword[.var_offset_copy], not -CDBlockSize
and dword[.var_offset_copy], -CDBlockSize
cmp dword[esp + 2*4], edx ; copy data > read in this sector
cmp dword[.var_size_copy_data], edx ;copy data > read in this sector
jae @f
mov edx, [esp + 2*4]
mov edx, [.var_size_copy_data]
@@:
sub dword[esp + 2*4], edx
add dword[esp], edx
sub dword[.var_size_copy_data], edx
add dword[.var_count_copied_data], edx
;DEBUGF 1, "K : iso c=%x d=%x Hz\n", ecx, edx
push esi
@@ -1035,22 +1043,22 @@ iso9660_Read:
;stdcall kernel_free, ebx
.first_align:
mov ecx, [esp + 2*4]
and ecx, -2048
mov ecx, [.var_size_copy_data]
and ecx, -CDBlockSize
cmp ecx, 2048
cmp ecx, CDBlockSize
jb .copy_finish_block
mov eax, [esp + 1*4]
shr eax, BSF 2048
mov eax, [.var_offset_copy]
shr eax, BSF CDBlockSize
; copy main block
mov ebx, edi
add edi, ecx
sub dword[esp + 2*4], ecx
add dword[esp + 1*4], ecx
add dword[esp], ecx
sub dword[.var_size_copy_data], ecx
add dword[.var_offset_copy], ecx
add dword[.var_count_copied_data], ecx
shr ecx, BSF 2048
shr ecx, BSF CDBlockSize
xor edx, edx
add eax, esi ; ISO9660_DIRECTORY_RECORD.lba
; ebx - buffer
@@ -1063,14 +1071,14 @@ iso9660_Read:
.copy_finish_block:
cmp dword[esp + 2*4], 0
jz .end_align ; creat buffer for end read sector
cmp dword[.var_size_copy_data], 0
jz .end_align
mov ebx, [esp + 4*4]
mov ebx, [.var_buffer]
;copy finish block
mov eax, [esp + 1*4]
shr eax, BSF 2048
mov eax, [.var_offset_copy]
shr eax, BSF CDBlockSize
xor edx, edx
mov ecx, 1
@@ -1084,16 +1092,16 @@ iso9660_Read:
jnz .err_disk_1
mov esi, ebx
mov ecx, [esp + 2*4]
add dword[esp], ecx
mov ecx, [.var_size_copy_data]
add dword[.var_count_copied_data], ecx
rep movsb
;stdcall kernel_free, ebx
.end_align:
; set ebx size copy data
mov ebx, [esp]
mov esi, [esp + 3*4]
mov ebx, [.var_count_copied_data]
mov esi, [.var_fs_err]
add esp, 4*4
call kernel_free
@@ -1124,13 +1132,13 @@ iso9660_ReadFolder:
test byte[eax + ISO9660_DIRECTORY_RECORD.flags], 10b ; check dir
jz iso9660_find_file.not_found
mov edi, [ebx + 16] ; buffer
push dword[ebx + 16]
push dword[ebx + 4] ; first file
push dword[ebx + 8] ; encoding
mov edi, [ebx + f70s1arg.buf] ; buffer
push dword[ebx + f70s1arg.buf]
push dword[ebx + f70s1arg.start_idx] ; first file
push dword[ebx + f70s1arg.encoding] ; encoding
push dword 0
push dword 0
push dword[ebx + 12] ; count file
push dword[ebx + f70s1arg.count] ; count files
push dword[eax + ISO9660_DIRECTORY_RECORD.data_length]
push dword[eax + ISO9660_DIRECTORY_RECORD.lba]
@@ -1142,17 +1150,28 @@ iso9660_ReadFolder:
; [esp + 24] - first item 0..(2^32 -1)
; [esp + 28] - user buffer
; edi - user buffer
virtual at esp
.var_lba dd ?
.var_size dd ?
.var_max_count dd ?
.var_counter dd ?
.var_all_count_files dd ?
.var_encoding dd ?
.var_first_item dd ?
.var_user_buffer dd ?
.var_buffer dd ?
end virtual
; set header(32 byte) in buffer
mov dword[edi], 1
add edi, 32 ;set on first item
add edi, sizeof.bdfe_hdr ;set on first item
; loop copy file info and name
.read_sector:
mov ebx, [esp + 32]
mov ebx, [.var_buffer]
mov ecx, 1
xor edx, edx
mov eax, [esp]
mov eax, [.var_lba]
; ebx - buffer
; edx:eax - num sector
; ebp - PARTITION
@@ -1165,27 +1184,27 @@ iso9660_ReadFolder:
jz .next_sector
; inc counter all files
inc dword[esp + 16]
inc dword[.var_all_count_files]
; check copy
mov eax, [esp + 24]
cmp [esp + 16], eax
mov eax, [.var_first_item]
cmp [.var_all_count_files], eax
jbe .skip
mov eax, [esp + 12]
cmp [esp + 8], eax
mov eax, [.var_counter]
cmp [.var_max_count], eax
je .skip
inc dword[esp + 12]
inc dword[.var_counter]
mov eax, ebx
mov ecx, edi
call iso9660_GetFileInfo.copy_file_info
; copy encoding
movzx eax, byte[esp + 20]
movzx eax, byte[.var_encoding]
mov [edi + 4], eax
add edi, 40
add edi, bdfe.name
;-----------------------------------------------------------------------------
; copy name
push ebx
@@ -1219,9 +1238,9 @@ iso9660_ReadFolder:
cmp eax, 2
je .ascii2utf16
@@:
sub ecx, 1 ; CF + ZF
jbe @f
movsd
sub ecx, 1 ; CF
jb @f
movsb
cmp byte[esi], ';'
jne @b
@@:
@@ -1298,31 +1317,31 @@ iso9660_ReadFolder:
movzx ecx, byte[ebx]
add ebx, ecx
test ebx, 2048
test ebx, CDBlockSize
jnz .next_sector
mov eax, ebx
and eax, not -2048
cmp eax, [esp + 4]
and eax, not -CDBlockSize
cmp eax, [.var_size]
jb .new_file
mov eax, [esp + 12]
cmp eax, [esp + 8]
mov eax, [.var_counter]
cmp eax, [.var_max_count]
jb .new_file
jmp .end_loop
.next_sector:
inc dword[esp]
sub dword[esp + 4], 2048
inc dword[.var_lba]
sub dword[.var_size], CDBlockSize
ja .read_sector
.end_loop:
mov ecx, [esp + 28]
mov ebx, [esp + 12]
mov [ecx + 4], ebx
mov esi, [esp + 16]
mov [ecx + 8], esi
mov esi, [esp + 8] ; max count
mov ecx, [.var_user_buffer]
mov ebx, [.var_counter]
mov [ecx + bdfe_hdr.read_cnt], ebx
mov esi, [.var_all_count_files]
mov [ecx + bdfe_hdr.total_cnt], esi
mov esi, [.var_max_count] ; max count
; free buffer
add esp, 8*4
call kernel_free
@@ -1334,11 +1353,11 @@ iso9660_ReadFolder:
@@:
ret
.err_disk:
mov ecx, [esp + 28]
mov ebx, [esp + 12]
mov [ecx + 4], ebx
mov esi, [esp + 16]
mov [ecx + 8], esi
mov ecx, [.var_user_buffer]
mov ebx, [.var_counter]
mov [ecx + bdfe_hdr.read_cnt], ebx
mov esi, [.var_all_count_files]
mov [ecx + bdfe_hdr.total_cnt], esi
; free buffer
add esp, 8*4
call kernel_free
@@ -1361,13 +1380,13 @@ iso9660_GetFileInfo:
sub esp, 4 ; for ptr on memory page
call iso9660_find_file
mov ecx, [ebx + 16] ; buffer
mov ecx, [ebx + f70s5arg.buf] ; buffer
call .copy_file_info
call kernel_free
xor eax, eax
mov ebx, 40
mov ebx, bdfe.name
ret
; IN: eax -> ISO966_DIRECTORY_RECORD
@@ -1375,11 +1394,11 @@ iso9660_GetFileInfo:
; destruct: edx
.copy_file_info:
; copy size
mov [ecx + 36], dword 0
mov [ecx + bdfe.size.hi], dword 0
mov edx, [eax + ISO9660_DIRECTORY_RECORD.data_length]
mov [ecx + 32], edx
mov [ecx + bdfe.size.lo], edx
; copy flags(dir of file)
; copy flags(dir or file)
xor edx, edx
or dl, 000001b
test byte[eax + ISO9660_DIRECTORY_RECORD.flags], 1b ; check hidden flag
@@ -1389,11 +1408,11 @@ iso9660_GetFileInfo:
test byte[eax + ISO9660_DIRECTORY_RECORD.flags], 10b ; check dir
jz @f
or dl, 10000b ; dir flag
mov dword[ecx + 32], 0 ; size = zero
mov dword[ecx + bdfe.size.lo], 0 ; size = zero
@@:
mov [ecx], edx
mov [ecx], edx ; set bdfe.attr
; copy date creat file
; copying the file creation date
movzx edx, byte[eax + ISO9660_DIRECTORY_RECORD.date_time]
add edx, 1900 ; year
shl edx, 8
@@ -1402,26 +1421,26 @@ iso9660_GetFileInfo:
shl edx, 8
mov dl, byte[eax + ISO9660_DIRECTORY_RECORD.date_time + 2] ;day
mov [ecx + 12], edx
mov [ecx + 20], edx
mov [ecx + 28], edx
mov [ecx + bdfe.cdate], edx
mov [ecx + bdfe.adate], edx
mov [ecx + bdfe.mdate], edx
; copy time creat file
; copying the file creation time
movzx edx, byte[eax + ISO9660_DIRECTORY_RECORD.date_time + 3] ;hour
shl edx, 8
mov dl, byte[eax + ISO9660_DIRECTORY_RECORD.date_time + 4] ; minute
mov dl, byte[eax + ISO9660_DIRECTORY_RECORD.date_time + 4] ;minute
shl edx, 8
mov dl, byte[eax + ISO9660_DIRECTORY_RECORD.date_time + 5] ; second
mov dl, byte[eax + ISO9660_DIRECTORY_RECORD.date_time + 5] ;second
mov [ecx + 8], edx
mov [ecx + 16], edx
mov [ecx + 24], edx
mov [ecx + bdfe.ctime], edx
mov [ecx + bdfe.atime], edx
mov [ecx + bdfe.mtime], edx
ret
.rootdir:
mov edi, [ebx + 16] ; edi = buffer
; copy flags (dir)
mov edi, [ebx + f70s5arg.buf] ; edi = buffer
; copy flags (partition dir)
mov byte [edi], 8
; copy size drive
mov eax, dword[ebp + PARTITION.Length+DQ.lo]
@@ -1431,12 +1450,12 @@ iso9660_GetFileInfo:
bsf ecx, ecx
shld edx, eax, cl
shl eax, cl
mov [edi + 32], eax ; bdfe.size.lo
mov [edi + 36], edx ; bdfe.size.hi
mov [edi + bdfe.size.lo], eax
mov [edi + bdfe.size.hi], edx
mov eax, [ebx + 8]
mov eax, [ebx + f70s5arg.xflags]
; copy encoding
mov [edi + 4], eax
mov [edi + bdfe.nameenc], eax
; check encoding on fs struct
test eax, eax ; check f70s5arg.xflags
jz .no_name
@@ -1464,8 +1483,8 @@ iso9660_GetFileInfo:
jnz .err_read_part
add esi, ISO9660_PRIMARY_DESCRIPTOR.VolumeName
mov edx, [edi + 4]
add edi, 40 ; offset partition name
mov edx, [edi + bdfe.nameenc]
add edi, bdfe.name ; offset partition name
mov ecx, 32
call iso9660_copy_name
@@ -1473,7 +1492,7 @@ iso9660_GetFileInfo:
call kernel_free
.no_name:
xor eax, eax
mov ebx, 40
mov ebx, bdfe.name
ret
.err_read_part:
call kernel_free
@@ -1492,7 +1511,7 @@ iso9660_GetFileInfo:
; [esp + 4] - ptr to memory page for destruct
iso9660_find_file:
stdcall kernel_alloc, 4096 ;
stdcall kernel_alloc, PAGE_SIZE ;
test eax, eax
jz .err_get_memory
@@ -1507,13 +1526,21 @@ iso9660_find_file:
; [esp] - sector num [esp + 4] - size dir
; [esp + 8] - ebx [esp + 16] - buffer
; get size root dir (not record size)
virtual at esp
.var_sector_num dd ?
.var_size_dir dd ?
.var_save_ebx dd ?
.var_eip dd ?
.var_buffer dd ?
end virtual
.read_sector:
; get sector for directory
mov edi, [esp + 16]
mov ebx, [esp + 16]
mov edi, [.var_buffer]
mov ebx, [.var_buffer]
mov ecx, 1
xor edx, edx
mov eax, [esp]
mov eax, [.var_sector_num]
; ebx - buffer
; edx:eax - num sector
; ebp - PARTITION
@@ -1522,7 +1549,7 @@ iso9660_find_file:
test eax, eax
jnz .err_disk_1
mov ecx, [esp + 4]
mov ecx, [.var_size_dir]
.next_record:
; check size
@@ -1536,7 +1563,7 @@ iso9660_find_file:
movzx edx, byte[edi + ISO9660_DIRECTORY_RECORD.size]
add edi, edx
test edi, 2048 ;worked for allocate of page
test edi, CDBlockSize ;worked for allocate of page
jnz .next_sector
sub ecx, edx
@@ -1545,9 +1572,9 @@ iso9660_find_file:
jmp .next_record
.next_sector:
sub dword[esp + 4], 2048
sub dword[.var_size_dir], CDBlockSize
jbe .not_found_2
inc dword[esp]
inc dword[.var_sector_num]
jmp .read_sector
.found:
@@ -1557,12 +1584,12 @@ iso9660_find_file:
inc esi
mov edx, [edi + ISO9660_DIRECTORY_RECORD.lba]
mov dword[esp], edx
mov dword[.var_sector_num], edx
mov edx, [edi + ISO9660_DIRECTORY_RECORD.data_length]
mov dword[esp + 4], edx
mov dword[.var_size_dir], edx
jmp .read_sector
.done:
mov ebx, [esp + 8]
mov ebx, [.var_save_ebx]
add esp, 4*3
mov eax, edi
ret
@@ -1591,7 +1618,7 @@ iso9660_find_file:
; errors
.err_disk_1:
; free stack values
mov ebx, [esp + 8]
mov ebx, [.var_save_ebx]
add esp, 4*3
.err_disk:
add esp, 4
@@ -1601,7 +1628,7 @@ iso9660_find_file:
ret
.not_found_2:
mov ebx, [esp + 8]
mov ebx, [.var_save_ebx]
add esp, 4*3
.not_found_1:
add esp, 4
@@ -1621,7 +1648,7 @@ iso9660_find_file:
.err_get_memory:
add esp, 8 ; skip addr return and dword for ptr to buffer
add esp, 8 ;skip return address and dword for the buffer pointer
.no_memory:
mov eax, TASKMAN_ERROR_OUT_OF_MEMORY
xor ebx, ebx
@@ -1776,4 +1803,3 @@ iso9660_copy_name:
mov word[edi], 0
@@:
ret

View File

@@ -60412,6 +60412,67 @@ dd -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0,\
0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0,\
0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0
@@:
db 'r1x3x1',0
align 4
dd (@f-$)/24 ;points
dd -1.95, -1.95, 0.0, -1.95, 9.95, 3.0, -1.95, 9.95,\
0.0, -1.95, 9.95, 3.0, -1.95, -1.95, 0.0, -1.95, -1.95,\
3.0, -1.95, 9.95, 3.0, 1.95, -1.95, 3.0, 1.95, 9.95,\
3.0, 1.95, -1.95, 3.0, -1.95, 9.95, 3.0, -1.95, -1.95,\
3.0, 1.95, -1.95, 3.0, 1.95, 9.95, 0.0, 1.95, 9.95,\
3.0, 1.95, 9.95, 0.0, 1.95, -1.95, 3.0, 1.95, -1.95,\
0.0, 1.95, -1.95, 0.0, 1.25, -1.25, 0.0, 1.95, 9.95,\
0.0, 1.95, -1.95, 0.0, -1.25, -1.25, 0.0, 1.25, -1.25,\
0.0, -1.25, -1.25, 0.0, -1.95, -1.95, 0.0, -1.25, 9.25,\
0.0, -1.95, -1.95, 0.0, -1.25, -1.25, 0.0, 1.95, -1.95,\
0.0, 1.25, 9.25, 0.0, 1.95, 9.95, 0.0, 1.25, -1.25,\
0.0, -1.25, 9.25, 0.0, 1.95, 9.95, 0.0, 1.25, 9.25,\
0.0, -1.25, 9.25, 0.0, -1.95, 9.95, 0.0, 1.95, 9.95,\
0.0, -1.95, 9.95, 0.0, -1.25, 9.25, 0.0, -1.95, -1.95,\
0.0, -1.95, -1.95, 0.0, 1.95, -1.95, 3.0, -1.95, -1.95,\
3.0, 1.95, -1.95, 3.0, -1.95, -1.95, 0.0, 1.95, -1.95,\
0.0, 1.95, 9.95, 0.0, -1.95, 9.95, 3.0, 1.95, 9.95,\
3.0, -1.95, 9.95, 3.0, 1.95, 9.95, 0.0, -1.95, 9.95,\
0.0, -1.25, -1.25, 1.999, -1.25, 9.25, 0.0, -1.25, 9.25,\
1.999, -1.25, 9.25, 0.0, -1.25, -1.25, 1.999, -1.25, -1.25,\
0.0, -1.25, -1.25, 1.999, 1.25, 9.25, 1.999, 1.25, -1.25,\
1.999, 1.25, 9.25, 1.999, -1.25, -1.25, 1.999, -1.25, 9.25,\
1.999, 1.25, -1.25, 0.0, 1.25, 9.25, 1.999, 1.25, 9.25,\
0.0, 1.25, 9.25, 1.999, 1.25, -1.25, 0.0, 1.25, -1.25,\
1.999, -1.25, 9.25, 0.0, 1.25, 9.25, 1.999, -1.25, 9.25,\
1.999, 1.25, 9.25, 1.999, -1.25, 9.25, 0.0, 1.25, 9.25,\
0.0, 1.25, -1.25, 0.0, -1.25, -1.25, 1.999, 1.25, -1.25,\
1.999, -1.25, -1.25, 1.999, 1.25, -1.25, 0.0, -1.25, -1.25,\
0.0
dd -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0,\
-1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0,\
0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0,\
0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0,\
1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0,\
1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0,\
0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0,\
0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0,\
0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0,\
0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0,\
0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0,\
0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0,\
0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0,\
0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0,\
0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0,\
0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0,\
0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0,\
0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0,\
1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0,\
1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0,\
0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0,\
0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0,\
-1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0,\
-1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0,\
0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0,\
0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0,\
0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0,\
0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0
@@:
db 'f1x2x1',0
align 4
dd (@f-$)/24 ;points
@@ -65876,6 +65937,76 @@ dd 0.32144, -0.94693, 0.0, 0.13052, -0.99145, 0.0, 0.44229, -0.89687, 0.0,\
-0.7071, -0.70711, 0.0, -0.38269, -0.92388, 0.0, -0.70711, -0.70711, 0.0,\
-0.38268, -0.92388, 0.0, -0.70711, -0.70711, 0.0, -0.38268, -0.92388, 0.0
@@:
db 'a1x1x2',0
align 4
dd (@f-$)/24 ;points
dd -1.95, -1.95, 0.0, -1.95, 1.95, 3.0, -1.95, 1.95,\
0.0, -1.95, 1.95, 3.0, -1.95, -1.95, 0.0, -1.95, -1.94994,\
6.0, -1.95, -1.94994, 6.0, -1.95, -1.95, 0.0, -1.95, -1.95,\
6.0, -1.95, -1.94994, 6.0, 1.95, -1.95, 6.0, 1.95, -1.94994,\
6.0, 1.95, -1.95, 6.0, -1.95, -1.94994, 6.0, -1.95, -1.95,\
6.0, 1.95, -1.95, 0.0, 1.95, 1.95, 3.0, 1.95, -1.94994,\
6.0, 1.95, -1.95, 0.0, 1.95, -1.94994, 6.0, 1.95, -1.95,\
6.0, 1.95, 1.95, 3.0, 1.95, -1.95, 0.0, 1.95, 1.95,\
0.0, -1.95, -1.95, 0.0, 1.95, -1.95, 6.0, -1.95, -1.95,\
6.0, 1.95, -1.95, 6.0, -1.95, -1.95, 0.0, 1.95, -1.95,\
0.0, 1.95, 1.95, 0.0, -1.95, 1.95, 3.0, 1.95, 1.95,\
3.0, -1.95, 1.95, 3.0, 1.95, 1.95, 0.0, -1.95, 1.95,\
0.0, -1.95, 1.95, 3.0, 1.95, -1.94994, 6.0, 1.95, 1.95,\
3.0, 1.95, -1.94994, 6.0, -1.95, 1.95, 3.0, -1.95, -1.94994,\
6.0, 1.95, -1.95, 0.0, 1.25, -1.25, 0.0, 1.95, 1.95,\
0.0, 1.95, -1.95, 0.0, -1.25, -1.25, 0.0, 1.25, -1.25,\
0.0, -1.25, -1.25, 0.0, -1.95, -1.95, 0.0, -1.25, 1.25,\
0.0, -1.95, -1.95, 0.0, -1.25, -1.25, 0.0, 1.95, -1.95,\
0.0, 1.25, 1.25, 0.0, 1.95, 1.95, 0.0, 1.25, -1.25,\
0.0, -1.25, 1.25, 0.0, 1.95, 1.95, 0.0, 1.25, 1.25,\
0.0, -1.25, 1.25, 0.0, -1.95, 1.95, 0.0, 1.95, 1.95,\
0.0, -1.95, 1.95, 0.0, -1.25, 1.25, 0.0, -1.95, -1.95,\
0.0, -1.25, -1.25, 1.999, -1.25, 1.25, 0.0, -1.25, 1.25,\
1.999, -1.25, 1.25, 0.0, -1.25, -1.25, 1.999, -1.25, -1.25,\
0.0, -1.25, -1.25, 1.999, 1.25, 1.25, 1.999, 1.25, -1.25,\
1.999, 1.25, 1.25, 1.999, -1.25, -1.25, 1.999, -1.25, 1.25,\
1.999, 1.25, -1.25, 0.0, 1.25, 1.25, 1.999, 1.25, 1.25,\
0.0, 1.25, 1.25, 1.999, 1.25, -1.25, 0.0, 1.25, -1.25,\
1.999, -1.25, 1.25, 0.0, 1.25, 1.25, 1.999, -1.25, 1.25,\
1.999, 1.25, 1.25, 1.999, -1.25, 1.25, 0.0, 1.25, 1.25,\
0.0, 1.25, -1.25, 0.0, -1.25, -1.25, 1.999, 1.25, -1.25,\
1.999, -1.25, -1.25, 1.999, 1.25, -1.25, 0.0, -1.25, -1.25,\
0.0
dd -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0,\
0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0,\
0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0,\
0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0,\
1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0,\
1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0,\
0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0,\
0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0,\
0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0,\
0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0,\
0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0,\
0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0,\
0.0, 0.0, 0.60972, 0.79262, 0.0, 0.60972, 0.79262, 0.0, 0.60972,\
0.79262, 0.0, 0.60972, 0.79262, 0.0, 0.60972, 0.79262, 0.0, 0.60972,\
0.79262, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0,\
-1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0,\
-1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0,\
-1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0,\
-1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0,\
-1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0,\
-1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0,\
-1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0,\
-1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0,\
0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0,\
0.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0,\
-1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0,\
-1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0,\
0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0,\
0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0,\
0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0,\
0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0,\
0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0,\
0.0
@@:
db 'a1x2x2',0
align 4
dd (@f-$)/24 ;points

View File

@@ -0,0 +1,170 @@
// block name, color, step, coord: x,y,z, rotation: x,y,z
const m1=6740181;
const m2=6650840;
const m3=16777215;
const m4=16757993;
const m5=8454144;
model_list=[
['b1x6x1', m1, 0, 0, -4, 0, 0,0,90],
['b2x6x1', m1, 0, 0, 0, 0, 0,0,90],
['b2x6x1', m1, 0, 0,-12, 0, 0,0,90],
['b2x4x1', m1, 0, 16, 0, 0, 0,0,90],
['b2x4x1', m1, 0, 16,-12, 0, 0,0,90],
['b1x4x1', m1, 0, 16, -4, 0, 0,0,90],
['u1x2x1', m1, 0,-24, -4, 0, 0,0,90],
['u1x2x1', m1, 0,-24, 0, 0, 0,0,90],
['u1x2x1', m1, 0,-24, -8, 0, 0,0,90],
['b2x3x1', m1, 0, 20, -8, 0, 0,0,0],
['t2x3x1', m1, 0, 28, -4, 0, 0,0,0],
['b1x3x1', m2, 0, -8,-16, 0, 0,0,90],
['b1x3x1', m2, 0, -8, 8, 0, 0,0,90],
['b1x3x1', m2, 0, 16, 8, 0, 0,0,90],
['b1x3x1', m2, 0, 16,-16, 0, 0,0,90],
['b1x3x1', m2, 0, 36, -8, 0, 0,0,0],
['b1x2x1', m2, 0, -8, 12, 0, 0,0,90],
['b1x2x1', m2, 0, -8,-20, 0, 0,0,90],
['b1x2x1', m2, 0, 20, 12, 0, 0,0,90],
['b1x2x1', m2, 0, 20,-20, 0, 0,0,90],
['b1x2x1', m2, 0, 16,-24, 0, 0,0,90],
['b1x2x1', m2, 0, 16, 16, 0, 0,0,90],
['b1x2x1', m2, 0,-12, 16, 0, 0,0,90],
['b1x2x1', m2, 0,-12,-24, 0, 0,0,90],
['t2x3x1', m2, 0, 40, -4, 0, 0,0,0],
['a1x2x2', m3, 0,-16,-20, 0, 0,0,90],
['a1x2x2', m3, 0,-16, 12, 0, 0,0,90],
['a1x2x2', m3, 0, 12, 12, 0, 0,0,90],
['a1x2x2', m3, 0, 12,-20, 0, 0,0,90],
['u1x2x2', m1, 1,-28, 0, 3, 0,0,90],
['u1x2x2', m1, 1,-28, -4, 3, 0,0,90],
['u1x2x2', m1, 1,-28, -8, 3, 0,0,90],
['b2x3x1', m1, 1,-24, -8, 3, 0,0,0],
['l2x2x1', m1, 1,-16, 4, 3, 0,0,180],
['l2x2x1', m1, 1,-16,-12, 3, 0,0,90],
['b2x3x1', m1, 1,-12, -8, 3, 0,0,0],
['t2x3x1', m1, 1, -8, 4, 3, 0,0,90],
['t2x3x1', m1, 1,-12, 12, 3, 0,0,180],
['t2x3x1', m1, 1,-12,-20, 3, 0,0,180],
['t2x3x1', m1, 1, -8,-12, 3, 0,0,-90],
['b2x3x1', m1, 1, 0, -8, 3, 0,0,0],
['b2x3x1', m1, 1, 8, -8, 3, 0,0,0],
['b1x2x1', m1, 1, 4, 4, 3, 0,0,90],
['b1x2x1', m1, 1, 4,-12, 3, 0,0,90],
['b1x2x1', m1, 1, 8,-16, 3, 0,0,0],
['b1x2x1', m1, 1, 8, 4, 3, 0,0,0],
['b1x4x1', m1, 1, 12, 4, 3, 0,0,0],
['b1x4x1', m1, 1, 12,-24, 3, 0,0,0],
['b1x2x1', m1, 1, 20, 0, 3, 0,0,90],
['b1x2x1', m1, 1, 20, -8, 3, 0,0,90],
['b1x4x1', m2, 1, 28, -4, 3, 0,0,90],
['b1x3x1', m1, 1, 40, -4, 3, 0,0,90],
['b2x3x1', m1, 2,-28, -8, 6, 0,0,0],
['t2x3x1', m1, 2,-20, -4, 6, 0,0,0],
['b2x3x1', m1, 2, -8, 0, 6, 0,0,90],
['b2x3x1', m1, 2, -8,-12, 6, 0,0,90],
['b2x3x1', m1, 2, 4,-16, 6, 0,0,90],
['b2x3x1', m1, 2, 4, 4, 6, 0,0,90],
['l2x2x1', m1, 2, 8, 0, 6, 0,0,90],
['l2x2x1', m1, 2, 8, -8, 6, 0,0,180],
['t2x3x1', m1, 2, 12, -4, 6, 0,0,0],
['u1x2x2', m1, 3,-32, -4, 9, 0,0,90],
['u1x2x2', m1, 3,-32, -8, 9, 0,0,90],
['u1x2x2', m1, 3,-32, 0, 9, 0,0,90],
['a1x2x3', m1, 3,-28, 0, 9, 0,0,-90],
['a1x2x3', m1, 3,-28, -8, 9, 0,0,-90],
['b1x3x1', m1, 3,-20, -4, 9, 0,0,90],
['b2x3x1', m1, 3,-16, -8, 9, 0,0,0],
['b2x3x1', m1, 3, -8, -8, 9, 0,0,0],
['b2x3x1', m1, 3, 0, 4, 9, 0,0,90],
['b2x3x1', m1, 3, 0,-16, 9, 0,0,90],
['b1x1x1', m1, 3,-12, 4, 9, 0,0,0],
['b1x1x1', m1, 3,-12,-12, 9, 0,0,0],
['l2x2x1', m1, 3, 4, 0, 9, 0,0,90],
['t2x3x1', m1, 3, 8, -4, 9, 0,0,0],
['t2x3x1', m1, 3, 4, -8, 9, 0,0,-180],
['b2x3x1', m1, 4,-32, -8, 12, 0,0,0],
['b1x1x1', m1, 4,-24, -4, 12, 0,0,0],
['b2x3x1', m1, 4,-12, -8, 12, 0,0,0],
['b1x1x1', m1, 4,-12, 4, 12, 0,0,0],
['b1x2x1', m1, 4, -4, 0, 12, 0,0,0],
['b1x3x1', m1, 4, -4,-12, 12, 0,0,0],
['b1x3x1', m1, 4, 4, -8, 12, 0,0,0],
['b1x4x1', m2, 4, 0,-12, 12, 0,0,0],
['b1x1x1', m2, 4, 8, -4, 12, 0,0,0],
['b1x1x1', m2, 4, 0, 4, 12, 0,0,0],
['b1x1x1', m2, 4, -8, 4, 12, 0,0,0],
['b1x1x1', m2, 4,-16, -4, 12, 0,0,0],
['b1x1x1', m2, 4, -8,-12, 12, 0,0,0],
['b2x3x1', m1, 5,-36, -8, 15, 0,0,0],
['t2x3x1', m1, 5,-28, -4, 15, 0,0,0],
['b1x3x1', m1, 5, -4, -8, 15, 0,0,0],
['b1x1x1', m2, 5, 0, -4, 15, 0,0,0],
['b1x3x1', m2, 5, -8, -8, 15, 0,0,0],
['b2x3x1', m1, 6,-36, -8, 18, 0,0,0],
['t2x3x1', m1, 6,-28, -4, 18, 0,0,0],
['l2x2x1', m1, 7,-36, -8, 21, 0,0,-90],
['l2x2x1', m1, 7,-36, 0, 21, 0,0,0],
['b1x4x1', m1, 7,-36, -4, 21, 0,0,-90],
['u1x2x1', m1, 7,-28, 0, 21, 0,0,-90],
['u1x2x1', m1, 7,-28, -8, 21, 0,0,-90],
['b2x3x1', m1, 8,-48, -8, 24, 0,0,0],
['b2x3x1', m1, 8,-40, -8, 24, 0,0,0],
['u1x2x1', m4, 8,-40, -8, 21, 0,0,90],
['u1x2x1', m4, 8,-40, -4, 21, 0,0,90],
['u1x2x1', m4, 8,-40, 0, 21, 0,0,90],
['b2x3x1', m1, 8,-32,-12, 24, 0,0,0],
['b2x2x1', m1, 8,-32, 0, 24, 0,0,0],
['b1x3x1', m1, 8,-36, 4, 24, 0,0,90],
['b1x3x1', m1, 8,-36,-12, 24, 0,0,90],
['b1x1x1', m1, 8,-24, 0, 24, 0,0,0],
['b1x1x1', m1, 8,-24, -8, 24, 0,0,0],
['b1x1x1', m2, 8,-24, -4, 24, 0,0,0],
['u1x2x1', m1, 8,-32, 4, 21, 0,0,-90],
['u1x2x1', m1, 8,-32,-12, 21, 0,0,-90],
['b1x2x1', m2, 9,-24, -4, 27, 0,0,90],
['a1x1x2', m2, 9,-48, 0, 27, 0,0,90],
['a1x1x2', m2, 9,-48, -8, 27, 0,0,90],
['a1x1x2', m1, 9,-48, -4, 27, 0,0,90],
['b2x3x1', m1, 9,-44,-12, 27, 0,0,0],
['b2x3x1', m1, 9,-36, -8, 27, 0,0,0],
['b2x2x1', m1, 9,-44, 0, 27, 0,0,0],
['a1x2x3', m1, 9,-28, 0, 27, 0,0,-90],
['a1x2x3', m1, 9,-28, -8, 27, 0,0,-90],
['b1x1x1', m1, 9,-28,-12, 27, 0,0,0],
['b1x1x1', m1, 9,-28, 4, 27, 0,0,0],
['b1x1x1', m4, 9,-32,-12, 27, 0,0,90],
['b1x1x1', m4, 9,-32, 4, 27, 0,0,90],
['b1x1x1', m5, 9,-36,-12, 27, 0,0,90],
['b1x1x1', m5, 9,-36, 4, 27, 0,0,90],
['b1x1x1', m5, 10,-36, 4, 30, 0,0,90],
['b1x1x1', m5, 10,-36,-12, 30, 0,0,90],
['a1x2x3', m2, 10,-28, -4, 30, 0,0,-90],
['b2x3x1', m1, 10,-44, -8, 30, 0,0,0],
['b1x1x1', m1, 10,-40, 4, 30, 0,0,0],
['b1x1x1', m1, 10,-40,-12, 30, 0,0,0],
['l2x2x1', m1, 10,-32, -8, 30, 0,0,-90],
['l2x2x1', m1, 10,-32, 0, 30, 0,0,0],
['a1x1x2', m1, 10,-44, 4, 30, 0,0,90],
['a1x1x2', m1, 10,-44,-12, 30, 0,0,90],
['a1x1x2', m1, 10,-28,-12, 30, 0,0,-90],
['a1x1x2', m1, 10,-28, 4, 30, 0,0,-90],
['t2x3x1', m1, 11,-40, -4, 33, 0,0,-180],
['t2x3x1', m2, 11,-32, -4, 33, 0,0,0],
['a1x1x2', m1, 11,-40, 4, 33, 0,0,0],
['a1x1x2', m1, 11,-36, 4, 33, 0,0,0],
['a1x1x2', m1, 11,-32, 4, 33, 0,0,0],
['a1x1x2', m1, 11,-28, 0, 33, 0,0,-90],
['a1x1x2', m1, 11,-28, -8, 33, 0,0,-90],
['a1x1x2', m1, 11,-32,-12, 33, 0,0,-180],
['a1x1x2', m1, 11,-36,-12, 33, 0,0,-180],
['a1x1x2', m1, 11,-40,-12, 33, 0,0,-180],
['a1x1x2', m1, 11,-44, -8, 33, 0,0,90],
['a1x1x2', m1, 11,-44, 0, 33, 0,0,90],
['a1x1x2', m2, 12,-44, -4, 36, 0,0,90],
['a1x1x2', m2, 12,-28, -4, 36, 0,0,-90],
['b1x3x1', m1, 12,-32, -4, 36, 0,0,90],
['r1x3x1', m1, 12,-32, 0, 36, 0,0,90],
['r1x3x1', m1, 12,-32, -8, 36, 0,0,90],
['r1x3x1', m2, 13,-32, -4, 39, 0,0,90],
];

View File

@@ -0,0 +1,200 @@
// block name, color, step, coord: x,y,z, rotation: x,y,z
const m1=0x008000;
const m2=0xffffff;
const m3=0xfff5be;
const m4=0x005100;
const m5=0xff0000;
const m6=0x510000;
const m7=0xffaaaa;
model_list=[
['b2x3x1', m1, 0, 32, -4, 9, 0,0,0],
['b1x1x1', m2, 0,-16, 4, 9, 0,0,0],
['b1x1x1', m2, 0,-16, -4, 9, 0,0,0],
['b1x1x1', m2, 0,-16, 12, 9, 0,0,0],
['b1x1x1', m2, 0,-16,-12, 9, 0,0,0],
['b1x3x1', m3, 0, 0, -4, 9, 0,0,0],
['b1x4x1', m3, 0, 16, 0, 9, 0,0,90],
['b1x3x1', m3, 0, 28, 0, 9, 0,0,90],
['b1x3x1', m1, 0, 40, -4, 9, 0,0,0],
['b1x1x1', m3, 0, 44, 0, 9, 0,0,0],
['b2x6x1', m3, 0, 24, 4, 9, 0,0,90],
['b2x6x1', m3, 0, 24, -8, 9, 0,0,90],
['l2x2x1', m1, 0, 16, 12, 9, 0,0,0],
['l2x2x1', m1, 0, 12, 12, 9, 0,0,90],
['l2x2x1', m1, 0, 12,-12, 9, 0,0,180],
['l2x2x1', m1, 0, 16,-12, 9, 0,0,-90],
['b2x3x1', m1, 1,-16, 4, 12, 0,0,0],
['b2x3x1', m1, 1,-16,-12, 12, 0,0,0],
['b1x4x1', m3, 1, 4, 4, 12, 0,0,90],
['b1x2x1', m3, 1, 12, 4, 12, 0,0,90],
['b2x6x1', m3, 1, 12, -4, 12, 0,0,90],
['b2x3x1', m1, 1, 16, -4, 12, 0,0,0],
['b2x2x1', m1, 1, 12, 8, 12, 0,0,0],
['b2x2x1', m1, 1, 12,-12, 12, 0,0,0],
['b1x2x1', m1, 1, 8, -8, 12, 0,0,90],
['b1x2x1', m1, 1, 24, -8, 12, 0,0,90],
['b1x2x1', m1, 1, 24, 8, 12, 0,0,90],
['b1x2x1', m1, 1, 8, 8, 12, 0,0,90],
['b1x3x1', m1, 1, 32, 4, 12, 0,0,90],
['b1x3x1', m1, 1, 32, -4, 12, 0,0,90],
['b1x6x1', m1, 1, 44, 0, 12, 0,0,90],
['b1x2x1', m1, 1, 44, 4, 12, 0,0,90],
['b1x2x1', m1, 1, 44, -4, 12, 0,0,90],
['b2x3x1', m1, 2, -4, 8, 15, 0,0,90],
['b2x3x1', m1, 2, -4,-12, 15, 0,0,90],
['b2x3x1', m1, 2, 8, -8, 15, 0,0,90],
['b2x3x1', m1, 2, 8, 4, 15, 0,0,90],
['b2x3x1', m1, 2, 12, -8, 15, 0,0,0],
['b2x3x1', m1, 2, 20, -8, 15, 0,0,0],
['b2x2x1', m1, 2, 12, 4, 15, 0,0,0],
['b2x2x1', m1, 2, 20, 4, 15, 0,0,0],
['t2x3x1', m1, 2, 28, 0, 15, 0,0,0],
['b2x3x1', m3, 2,-12, -4, 15, 0,0,0],
['b1x1x1', m4, 2, 36, 0, 15, 0,0,0],
['b1x3x1', m5, 2, 44, 0, 15, 0,0,-90],
['b1x2x1', m5, 2, 44, 4, 15, 0,0,-90],
['b1x2x1', m5, 2, 44, -4, 15, 0,0,-90],
['b1x1x1', m5, 2, 48, 0, 12, 0,0,0],
['b2x3x1', m3, 3,-16, -4, 18, 0,0,0],
['b1x1x1', m5, 3, 48, 0, 18, 0,0,0],
['b1x1x1', m4, 3, 28, 0, 18, 0,0,0],
['b1x3x1', m1, 3, -8, 4, 18, 0,0,0],
['b1x3x1', m1, 3, -8,-12, 18, 0,0,0],
['l2x2x1', m1, 3, -4, 8, 18, 0,0,0],
['l2x2x1', m1, 3, -4, -8, 18, 0,0,-90],
['b2x3x1', m1, 3, 12, 4, 18, 0,0,90],
['b2x3x1', m1, 3, 12, -8, 18, 0,0,90],
['b2x2x1', m1, 3, 16, 4, 18, 0,0,0],
['b2x2x1', m1, 3, 16, -8, 18, 0,0,0],
['b1x3x1', m1, 3, 24, -4, 18, 0,0,0],
['a1x1x2', m1, 3, 32, 0, 18, 0,0,90],
['b1x6x1', m1, 4, -8, 0, 21, 0,0,90],
['b1x6x1', m1, 4, -8, 4, 21, 0,0,90],
['b1x6x1', m1, 4, -8, -4, 21, 0,0,90],
['b1x6x1', m1, 4, -4, 8, 21, 0,0,90],
['b1x6x1', m1, 4, -4, -8, 21, 0,0,90],
['b1x2x1', m1, 4, 4, -8, 21, 0,0,90],
['b1x2x1', m1, 4, 4, 8, 21, 0,0,90],
['b2x3x1', m1, 4, 16, 4, 21, 0,0,90],
['b2x3x1', m1, 4, 16, -8, 21, 0,0,90],
['t2x3x1', m1, 4, 20, 0, 21, 0,0,0],
['b1x1x1', m4, 4, 28, 0, 21, 0,0,0],
['b2x3x1', m5, 5,-20, -4, 24, 0,0,0],
['b1x3x1', m5, 5,-12, -4, 24, 0,0,0],
['b1x1x1', m2, 5,-24, 0, 24, 0,0,0],
['c1x1x1', m2, 5,-16, 8, 24, 0,0,0],
['c1x1x1', m2, 5,-24, 8, 24, 0,0,0],
['c1x1x1', m2, 5,-24, -8, 24, 0,0,0],
['c1x1x1', m2, 5,-16, -8, 24, 0,0,0],
['b2x3x1', m1, 5, -8, 0, 24, 0,0,0],
['b2x3x1', m1, 5, 8, 4, 24, 0,0,90],
['b2x3x1', m1, 5, 4, -8, 24, 0,0,0],
['b2x3x1', m1, 5, 0, -8, 24, 0,0,90],
['b2x3x1', m1, 5, 12, -4, 24, 0,0,0],
['b1x1x1', m4, 5, 20, 0, 24, 0,0,0],
['b1x1x1', m1, 5, 24, 0, 24, 0,0,0],
['a1x1x2', m4, 5, 28, 0, 24, 0,0,90],
['b2x3x1', m5, 6,-28, -4, 27, 0,0,0],
['b2x3x1', m5, 6,-20, -4, 27, 0,0,0],
['b2x3x1', m5, 6,-12, -4, 27, 0,0,0],
['b2x3x1', m1, 6, -4, -8, 27, 0,0,0],
['b2x2x1', m1, 6, -4, 4, 27, 0,0,0],
['b1x6x1', m1, 6, -8, 8, 27, 0,0,90],
['b1x6x1', m1, 6, -8, -8, 27, 0,0,90],
['t2x3x1', m1, 6, 4, 0, 27, 0,0,0],
['b1x1x1', m4, 6, 12, 0, 27, 0,0,90],
['b1x1x1', m1, 6, 16, 0, 27, 0,0,0],
['b1x1x1', m4, 6, 20, 0, 27, 0,0,90],
['a1x1x2', m1, 6, 24, 0, 27, 0,0,90],
['b1x3x1', m1, 6,-32, -4, 27, 0,0,0],
['a1x2x2', m1, 7,-28, 4, 30, 0,0,90],
['a1x2x2', m1, 7,-28, 0, 30, 0,0,90],
['a1x2x2', m1, 7,-28, -4, 30, 0,0,90],
['b2x3x1', m1, 7,-24, -4, 30, 0,0,0],
['a1x3x2', m1, 7,-20, 8, 30, 0,0,90],
['a1x3x2', m1, 7,-20, -8, 30, 0,0,90],
['l2x2x1', m1, 7,-16, 4, 30, 0,0,0],
['l2x2x1', m1, 7,-16, -4, 30, 0,0,-90],
['b1x1x1', m6, 7,-12, -8, 30, 0,0,0],
['b1x1x1', m6, 7,-12, 8, 30, 0,0,0],
['b1x2x1', m7, 7, -8, -8, 30, 0,0,0],
['b1x2x1', m7, 7, -8, 4, 30, 0,0,0],
['b1x1x1', m1, 7, -4, 8, 30, 0,0,0],
['b1x1x1', m1, 7, -4, -8, 30, 0,0,0],
['a1x2x3', m1, 7, -4, 4, 30, 0,0,-90],
['a1x2x3', m1, 7, -4, -4, 30, 0,0,-90],
['b1x3x1', m1, 7, 0, 0, 30, 0,0,90],
['a1x1x2', m4, 7, 4, 0, 30, 0,0,90],
['b1x1x1', m1, 7, 8, 0, 30, 0,0,0],
['b1x1x1', m4, 7, 12, 0, 30, 0,0,0],
['b1x1x1', m1, 7, 16, 0, 30, 0,0,0],
['a1x1x2', m4, 7, 20, 0, 30, 0,0,90],
['r1x1x1', m1, 8,-28, 0, 33, 0,0,0],
['a1x3x2', m1, 8,-20, 4, 33, 0,0,90],
['a1x3x2', m1, 8,-20, -4, 33, 0,0,90],
['a1x2x2', m1, 8,-16, -8, 33, 0,0,90],
['a1x2x2', m1, 8,-16, 8, 33, 0,0,90],
['a1x2x2', m1, 8, -4, 4, 33, 0,0,0],
['a1x2x2', m1, 8, -4, -4, 33, 0,0,180],
['l2x2x1', m1, 8, -8, -4, 33, 0,0,180],
['l2x2x1', m1, 8, -8, 4, 33, 0,0,90],
['b1x2x1', m1, 8,-20, 0, 33, 0,0,90],
['b1x3x1', m1, 8,-16, -4, 33, 0,0,0],
['a1x2x3', m1, 8, -4, 0, 33, 0,0,-90],
['b1x1x1', m6, 8,-12, 8, 33, 0,0,0],
['b1x1x1', m6, 8,-12, -8, 33, 0,0,0],
['a1x1x2', m1, 8, 8, 0, 33, 0,0,90],
['a1x1x2', m4, 8, 12, 0, 33, 0,0,-90],
['a1x1x2', m1, 8, 16, 0, 33, 0,0,90],
['a1x1x2', m1, 9,-16, -8, 36, 0,0,180],
['a1x1x2', m1, 9,-12, -8, 36, 0,0,180],
['a1x1x2', m1, 9, -8, -8, 36, 0,0,180],
['a1x1x2', m1, 9,-16, 8, 36, 0,0,0],
['a1x1x2', m1, 9,-12, 8, 36, 0,0,0],
['a1x1x2', m1, 9, -8, 8, 36, 0,0,0],
['a1x1x2', m1, 9, -4, 4, 36, 0,0,-90],
['a1x1x2', m1, 9, -4, -4, 36, 0,0,-90],
['a1x1x2', m1, 9,-20, 4, 36, 0,0,90],
['a1x1x2', m1, 9,-20, -4, 36, 0,0,90],
['a1x2x2', m1, 9,-20, 0, 36, 0,0,90],
['b2x3x1', m1, 9,-16, -4, 36, 0,0,0],
['t2x3x1', m1, 9, -8, 0, 36, 0,0,0],
['a1x1x2', m5, 10,-20, 0, 39, 0,0,90],
['a1x1x2', m5, 10, -4, 0, 39, 0,0,-90],
['b1x3x1', m5, 10, -8, 0, 39, 0,0,90],
['r1x1x1', m1, 10,-16, -4, 39, 0,0,90],
['r1x1x1', m1, 10,-12, -4, 39, 0,0,90],
['r1x1x1', m1, 10, -8, -4, 39, 0,0,90],
['r1x1x1', m1, 10, -8, 4, 39, 0,0,90],
['r1x1x1', m1, 10,-12, 4, 39, 0,0,90],
['r1x1x1', m1, 10,-16, 4, 39, 0,0,90],
['r1x3x1', m5, 11, -8, 0, 42, 0,0,90],
['b1x2x1', m1, 12, -8,-12, 12, 0,0,0],
['b1x2x1', m1, 12, -8, 8, 12, 0,0,0],
['b1x2x1', m3, 12, 0, 8, 12, 0,0,90],
['b1x2x1', m3, 12, 0, -8, 12, 0,0,90],
['b2x2x1', m1, 12, 16, 8, 6, 0,0,0],
['b2x2x1', m1, 12, 16,-12, 6, 0,0,0],
['l2x2x1', m1, 12, 12,-16, 6, 0,0,0],
['l2x2x1', m1, 12, 12, 16, 6, 0,0,-90],
['b1x1x1', m1, 12, 12, 8, 6, 0,0,0],
['b1x1x1', m1, 12, 8, 12, 6, 0,0,0],
['b1x1x1', m1, 12, 12, -8, 6, 0,0,0],
['b1x1x1', m1, 12, 8,-12, 6, 0,0,0],
['b1x3x1', m3, 12, 40, 0, 6, 0,0,90],
['b2x3x1', m1, 13, 4,-16, 3, 0,0,0],
['b2x3x1', m1, 13, 4, 8, 3, 0,0,0],
['l2x2x1', m1, 13, 12, 12, 3, 0,0,-90],
['l2x2x1', m1, 13, 12,-12, 3, 0,0,0],
['b1x2x1', m1, 14, 12,-16, 0, 0,0,90],
['b1x2x1', m1, 14, 12, 16, 0, 0,0,90],
['t2x3x1', m1, 14, 8, 12, 0, 0,0,-90],
['t2x3x1', m1, 14, 8,-12, 0, 0,0,90],
['a1x2x2', m2, 14, 4,-16, 0, 0,0,90],
['a1x2x2', m2, 14, 4, -8, 0, 0,0,90],
['a1x2x2', m2, 14, 4, 8, 0, 0,0,90],
['a1x2x2', m2, 14, 4, 16, 0, 0,0,90],
];

View File

@@ -446,9 +446,9 @@ model_list=[
['f1x2x1', m5, 29,-28, 12, 72, 0,0,90],
['f1x2x1', m5, 29,-28, 16, 72, 0,0,90],
['f1x2x1', m5, 29,-30, 12, 75, 0,0,0],
['c1x1x1', m5, 29,-30, 12, 78, 0,0,0],
['c1x1x1', m5, 29,-30, 12, 81, 0,0,0],
['c1x1x1', m7, 29,-30, 12, 84, 0,0,0],
['c1x1x1', m5, 29,-30, 14, 78, 0,0,0],
['c1x1x1', m5, 29,-30, 14, 81, 0,0,0],
['c1x1x1', m7, 29,-30, 14, 84, 0,0,0],
['b2x3x1', m5, 30, -8, 0, 57, 0,0,0],
['b2x3x1', m5, 30,-16, 0, 57, 0,0,0],
['b2x3x1', m5, 30,-24, 0, 57, 0,0,0],

View File

@@ -0,0 +1,139 @@
// block name, color, step, coord: x,y,z, rotation: x,y,z
const m1=0xffecca;
const m2=0xff0000;
const m3=0;
const m4=0xffffff;
model_list=[
['t2x3x1', m1, 0, 0, -8, 0, 0,0,90],
['t2x3x1', m2, 0, -8, -4, 0, 0,0,-90],
['t2x3x1', m2, 0, 8, -4, 0, 0,0,-90],
['b1x2x1', m2, 0,-20, 0, 0, 0,0,90],
['b1x2x1', m2, 0,-12, 0, 0, 0,0,0],
['b1x2x1', m2, 0, 12, 0, 0, 0,0,0],
['b1x2x1', m2, 0, 24, 0, 0, 0,0,90],
['b2x3x1', m2, 0, -8, 0, 0, 0,0,0],
['b2x3x1', m2, 0, 4, 0, 0, 0,0,0],
['b1x3x1', m2, 0, 0, 0, 0, 0,0,0],
['b2x3x1', m1, 1, 0,-12, 3, 0,0,90],
['b2x2x1', m1, 1, 4,-12, 3, 0,0,0],
['t2x3x1', m2, 1,-12, -4, 3, 0,0,-90],
['t2x3x1', m2, 1, 12, -4, 3, 0,0,-90],
['b2x3x1', m2, 1, 4, -4, 3, 0,0,90],
['b1x4x1', m2, 1, -8, 0, 3, 0,0,90],
['b1x4x1', m2, 1, 20, 0, 3, 0,0,90],
['b1x3x1', m2, 1, -8, 4, 3, 0,0,90],
['b1x3x1', m2, 1, 4, 4, 3, 0,0,90],
['b1x3x1', m2, 1, 16, 4, 3, 0,0,90],
['l2x2x1', m2, 1, -8, 8, 3, 0,0,90],
['l2x2x1', m2, 1, 8, 8, 3, 0,0,0],
['b2x3x1', m2, 1, 4, 8, 3, 0,0,90],
['b2x3x1', m1, 2, 4,-12, 6, 0,0,90],
['b2x3x1', m2, 2, -8, -4, 6, 0,0,0],
['b2x3x1', m2, 2, 4, -4, 6, 0,0,0],
['b2x3x1', m2, 2, -4, 8, 6, 0,0,90],
['b2x4x1', m2, 2, 12, 8, 6, 0,0,90],
['b1x4x1', m2, 2,-16, -4, 6, 0,0,0],
['b1x4x1', m2, 2, 16, -4, 6, 0,0,0],
['b1x3x1', m2, 2, -8, -8, 6, 0,0,90],
['b1x3x1', m2, 2, 16, -8, 6, 0,0,90],
['b1x2x1', m2, 2, -8,-12, 6, 0,0,90],
['b1x2x1', m2, 2, 12,-12, 6, 0,0,90],
['b1x1x1', m2, 3,-28, 4, 3, 0,0,0],
['b1x1x1', m2, 3, 28, 4, 3, 0,0,0],
['t2x3x1', m2, 3,-24, 4, 6, 0,0,-90],
['t2x3x1', m2, 3, 24, 4, 6, 0,0,-90],
['b1x3x1', m2, 3,-16, 0, 9, 0,0,90],
['b1x3x1', m2, 3, 24, 0, 9, 0,0,90],
['l2x2x1', m2, 3,-16, -4, 9, 0,0,-90],
['l2x2x1', m2, 3, 16, -4, 9, 0,0,-180],
['b2x3x1', m2, 3, -4,-12, 9, 0,0,90],
['b2x4x1', m2, 3, 12,-12, 9, 0,0,90],
['b2x2x1', m2, 3,-16, 4, 9, 0,0,0],
['b2x2x1', m2, 3, 12, 4, 9, 0,0,0],
['b1x4x1', m2, 3, 0, 12, 9, 0,0,90],
['b1x3x1', m2, 3, 12, 12, 9, 0,0,90],
['b1x4x1', m2, 4, 28, 4, 12, 0,0,90],
['b1x4x1', m2, 4,-16, 4, 12, 0,0,90],
['l2x2x1', m2, 4,-12, 8, 12, 0,0,90],
['l2x2x1', m2, 4, 12, 8, 12, 0,0,0],
['b2x2x1', m2, 4, -8, 8, 12, 0,0,0],
['b2x3x1', m2, 4, 8, 8, 12, 0,0,90],
['b2x2x1', m2, 4,-16, -4, 12, 0,0,0],
['b2x2x1', m2, 4, 12, -4, 12, 0,0,0],
['b2x3x1', m2, 4, 4,-12, 12, 0,0,90],
['a1x2x2', m2, 4,-12, -8, 12, 0,0,90],
['a1x2x2', m2, 4, -8,-12, 12, 0,0,90],
['a1x2x2', m2, 4, 8,-12, 12, 0,0,-90],
['a1x2x2', m2, 4, 12, -8, 12, 0,0,-90],
['b1x1x1', m2, 5,-28, 4, 15, 0,0,0],
['b1x1x1', m2, 5, 28, 4, 15, 0,0,0],
['b1x2x1', m2, 5,-16, 0, 15, 0,0,0],
['b1x2x1', m2, 5, 16, 0, 15, 0,0,0],
['b1x3x1', m2, 5,-12, 0, 15, 0,0,0],
['b1x3x1', m2, 5, 12, 0, 15, 0,0,0],
['b2x3x1', m2, 5, 0, 8, 15, 0,0,90],
['b2x2x1', m2, 5, 4, 8, 15, 0,0,0],
['b2x2x1', m2, 5, 4, -8, 15, 0,0,0],
['b2x3x1', m2, 5, 0, -8, 15, 0,0,90],
['a1x2x2', m2, 5,-12, -4, 15, 0,0,90],
['a1x2x2', m2, 5, 12, -4, 15, 0,0,-90],
['r1x3x1', m3, 5, 4,-12, 15, 0,0,90],
['r1x1x1', m2, 5, -8,-12, 15, 0,0,0],
['r1x1x1', m2, 5, 8,-12, 15, 0,0,0],
['r1x1x1', m2, 5, 12, -8, 15, 0,0,0],
['r1x1x1', m2, 5,-12, -8, 15, 0,0,0],
['u1x2x1', m2, 6,-20, 0, 15, 0,0,90],
['t2x3x1', m2, 6,-20, 0, 18, 0,0,0],
['u1x2x2', m2, 6,-24, 0, 18, 0,0,90],
['u1x2x1', m2, 6, 20, 0, 15, 0,0,-90],
['t2x3x1', m2, 6, 20, 0, 18, 0,0,180],
['u1x2x2', m2, 6, 24, 0, 18, 0,0,-90],
['b1x2x1', m2, 6,-12, 0, 18, 0,0,0],
['b1x2x1', m2, 6, 12, 0, 18, 0,0,0],
['b2x4x1', m2, 6, -8, -4, 18, 0,0,0],
['b2x4x1', m2, 6, 0, -4, 18, 0,0,0],
['b1x4x1', m2, 6, 8, -4, 18, 0,0,0],
['r1x1x1', m2, 6,-12, -4, 18, 0,0,0],
['r1x1x1', m2, 6, 12, -4, 18, 0,0,0],
['r1x1x1', m3, 6, -8, -8, 18, 0,0,0],
['r1x1x1', m3, 6, 8, -8, 18, 0,0,0],
['b1x3x1', m2, 6, 4, -8, 18, 0,0,90],
['b1x3x1', m2, 7,-16, 4, 21, 0,0,90],
['b1x3x1', m2, 7, 24, 4, 21, 0,0,90],
['b2x3x1', m2, 7, 24, -4, 21, 0,0,90],
['b2x3x1', m2, 7,-16, -4, 21, 0,0,90],
['b1x2x1', m2, 7, -8, -4, 21, 0,0,0],
['b1x2x1', m2, 7, 8, -4, 21, 0,0,0],
['a1x1x2', m2, 8,-24, -4, 24, 0,0,90],
['a1x1x2', m2, 8, 24, -4, 24, 0,0,-90],
['l2x2x1', m2, 8, 24, 0, 24, 0,0,0],
['l2x2x1', m2, 8,-24, 0, 24, 0,0,90],
['b1x3x1', m2, 8,-16, -4, 24, 0,0,0],
['b1x3x1', m2, 8, 16, -4, 24, 0,0,0],
['b1x3x1', m2, 8, -4, 0, 24, 0,0,90],
['b1x3x1', m2, 8, 12, 0, 24, 0,0,90],
['b1x3x1', m4, 8, 12, -4, 24, 0,0,90],
['b1x3x1', m4, 8, -4, -4, 24, 0,0,90],
['a1x1x2', m2, 9,-28, 0, 27, 0,0,90],
['a1x1x2', m2, 9, 28, 0, 27, 0,0,-90],
['l2x2x1', m2, 9, 24, 4, 27, 0,0,180],
['l2x2x1', m2, 9, 20, 0, 27, 0,0,180],
['l2x2x1', m2, 9,-24, 4, 27, 0,0,-90],
['l2x2x1', m2, 9,-20, 0, 27, 0,0,-90],
['b1x3x1', m2, 9, -4, 0, 27, 0,0,90],
['b1x3x1', m2, 9, 12, 0, 27, 0,0,90],
['b1x1x1', m4, 9,-12, -4, 27, 0,0,90],
['b1x1x1', m4, 9, -4, -4, 27, 0,0,90],
['b1x1x1', m4, 9, 4, -4, 27, 0,0,90],
['b1x1x1', m4, 9, 12, -4, 27, 0,0,90],
['c1x1x1', m3, 9, -8, -4, 27, 0,0,90],
['c1x1x1', m3, 9, 8, -4, 27, 0,0,90],
['b1x2x1', m2, 10,-20, 0, 30, 0,0,90],
['b1x2x1', m2, 10, 24, 0, 30, 0,0,90],
['r1x3x1', m2, 10, -4, 0, 30, 0,0,90],
['r1x3x1', m2, 10, 12, 0, 30, 0,0,90],
['r1x3x1', m4, 10, 12, -4, 30, 0,0,90],
['r1x3x1', m4, 10, -4, -4, 30, 0,0,90],
];

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 B

After

Width:  |  Height:  |  Size: 501 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 B

After

Width:  |  Height:  |  Size: 116 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 B

After

Width:  |  Height:  |  Size: 92 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 732 B

After

Width:  |  Height:  |  Size: 720 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 666 B

After

Width:  |  Height:  |  Size: 633 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 680 B

After

Width:  |  Height:  |  Size: 663 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 604 B

After

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1010 B

After

Width:  |  Height:  |  Size: 987 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 863 B

After

Width:  |  Height:  |  Size: 849 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 673 B

After

Width:  |  Height:  |  Size: 644 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 759 B

After

Width:  |  Height:  |  Size: 734 B