Update locale codes

- Fixes for new locale codes.
- Correct en_US translations.
- Some whitespace clean-up.
This commit is contained in:
Andrew 2024-06-07 10:39:27 +01:00
parent d1ecd626b0
commit ed2e074b9f
20 changed files with 22678 additions and 22603 deletions

View File

@ -8,5 +8,5 @@
; Éste archivo debe ser editado con codificación CP866 ; Éste archivo debe ser editado con codificación CP866
version cp850 'KolibriOS versión 0.7.7.0+ ',13,10,13,10,0 version cp850 'KolibriOS versión 0.7.7.0 ',13,10,13,10,0 ; FIXME: Get distribution version from git tag
diff16 "fin del código del kernel",0,$ diff16 "fin del código del kernel",0,$

View File

@ -1,459 +1,460 @@
; ;
; ”㭪樨 ¤«ï ¯à¥®¡à §®¢ ­¨ï ä ©«  *.stl ¢ *.3ds ; ”㭪樨 ¤«ï ¯à¥®¡à §®¢ ­¨ï ä ©«  *.stl ¢ *.3ds
; ;
; ‘âàãªâãà  á®§¤ ¢ ¥¬®£® ä ©«  *.3ds: ; ‘âàãªâãà  á®§¤ ¢ ¥¬®£® ä ©«  *.3ds:
; CHUNK_MAIN (40+n+v+f) ; CHUNK_MAIN (40+n+v+f)
; + CHUNK_OBJMESH (34+n+v+f) ; + CHUNK_OBJMESH (34+n+v+f)
; + CHUNK_OBJBLOCK (28+n+v+f) ; + CHUNK_OBJBLOCK (28+n+v+f)
; + CHUNK_TRIMESH (22+v+f) ; + CHUNK_TRIMESH (22+v+f)
; + CHUNK_VERTLIST (8+v) ; + CHUNK_VERTLIST (8+v)
; + CHUNK_FACELIST (8+f) ; + CHUNK_FACELIST (8+f)
; ;
; ¢ ᪮¡ª å 㪠§ ­ë à §¬¥àë ¡«®ª®¢: ; ¢ ᪮¡ª å 㪠§ ­ë à §¬¥àë ¡«®ª®¢:
; n - ¯ ¬ïâì ¤«ï ¨¬¥­¨ ®¡ê¥ªâ  ; n - ¯ ¬ïâì ¤«ï ¨¬¥­¨ ®¡ê¥ªâ 
; v - ¯ ¬ïâì ¤«ï ¢¥à設 ; v - ¯ ¬ïâì ¤«ï ¢¥à設
; f - ¯ ¬ïâì ¤«ï £à ­¥© ; f - ¯ ¬ïâì ¤«ï £à ­¥©
; ”®à¬ â ¡¨­ à­®£® *.stl: ; ”®à¬ â ¡¨­ à­®£® *.stl:
; char[80] - § £®«®¢®ª ; char[80] - § £®«®¢®ª
; uint32 - ç¨á«® £à ­¥© ; uint32 - ç¨á«® £à ­¥©
; ¤«ï ª ¦¤®© £à ­¨: ; ¤«ï ª ¦¤®© £à ­¨:
; float[3] - ¢¥ªâ®à ­®à¬ «¨ ; float[3] - ¢¥ªâ®à ­®à¬ «¨
; float[9] - ¢¥à設ë 1,2,3 ; float[9] - ¢¥à設ë 1,2,3
; uint16 -  âਡãâë ; uint16 -  âਡãâë
; Language support for locales: ru_RU (CP866), en_US.
if lang eq ru_RU
txt_err_stl_open: if lang eq ru_RU
db '"STL',13,10 txt_err_stl_open:
db '” ©« *.stl ®ç¥­ì ¡®«ì让." -tW',0 db '"STL',13,10
txt_err_stl_null_v: db '” ©« *.stl ®ç¥­ì ¡®«ì让." -tW',0
db '"STL',13,10 txt_err_stl_null_v:
db '‚¥àè¨­ë ­¥ ­ ©¤¥­ë." -tE',0 db '"STL',13,10
else db '‚¥àè¨­ë ­¥ ­ ©¤¥­ë." -tE',0
txt_err_stl_open: else ; Default to en_US
db '"STL',13,10 txt_err_stl_open:
db 'File *.stl is very large." -tW',0 db '"STL',13,10
txt_err_stl_null_v: db 'File *.stl is very large." -tW',0
db '"STL',13,10 txt_err_stl_null_v:
db 'Vertexes not found." -tE',0 db '"STL',13,10
end if db 'Vertexes not found." -tE',0
end if
;output:
; eax - 㪠§ â¥«ì ­  áä®à¬¨à®¢ ­ë© ä ©« 3ds (¢ á«ãç ¥ ­¥ã¤ ç¨ 0) ;output:
; ecx - à §¬¥à áä®à¬¨à®¢ ­®£® ä ©«  3ds ; eax - 㪠§ â¥«ì ­  áä®à¬¨à®¢ ­ë© ä ©« 3ds (¢ á«ãç ¥ ­¥ã¤ ç¨ 0)
align 4 ; ecx - à §¬¥à áä®à¬¨à®¢ ­®£® ä ©«  3ds
proc convert_stl_3ds uses ebx edx edi esi, f_data:dword, f_size:dword align 4
locals proc convert_stl_3ds uses ebx edx edi esi, f_data:dword, f_size:dword
c_mem dd ? ;¯ ¬ïâì ¤«ï ¯à¥®¡à §®¢ ­¨ï (convert memory) locals
c_size dd ? ;à §¬¥à ¯ ¬ï⨠¤«ï ¯à¥®¡à §®¢ ­¨© (convert memory size) c_mem dd ? ;¯ ¬ïâì ¤«ï ¯à¥®¡à §®¢ ­¨ï (convert memory)
vert_c dd ? ;ç¨á«® ¢¥à設 (vertex count) c_size dd ? ;à §¬¥à ¯ ¬ï⨠¤«ï ¯à¥®¡à §®¢ ­¨© (convert memory size)
face_c dd ? ;ç¨á«® £à ­¥© (faces count) vert_c dd ? ;ç¨á«® ¢¥à設 (vertex count)
endl face_c dd ? ;ç¨á«® £à ­¥© (faces count)
xor eax,eax endl
mov esi,[f_data] xor eax,eax
cmp dword[esi],'soli' mov esi,[f_data]
jne .bin_stl cmp dword[esi],'soli'
cmp word[esi+4],'d ' jne .bin_stl
jne .bin_stl cmp word[esi+4],'d '
jne .bin_stl
jmp @f
.bin_stl: jmp @f
;¯à®¢¥à塞 ä ©« ­  ¡¨­ à­ë© ä®à¬ â .bin_stl:
mov ecx,[esi+80] ;¯à®¢¥à塞 ä ©« ­  ¡¨­ à­ë© ä®à¬ â
imul ecx,50 mov ecx,[esi+80]
add ecx,84 ;§ £®«®¢®ª imul ecx,50
cmp ecx,[f_size] add ecx,84 ;§ £®«®¢®ª
jne .no_stl cmp ecx,[f_size]
call convert_binary_stl jne .no_stl
jmp .no_stl call convert_binary_stl
@@: jmp .no_stl
@@:
;¢ ­ ç «¥ ­ ©¤¥­® 'solid '
stdcall txt_next_line, 80 ;¢ ­ ç «¥ ­ ©¤¥­® 'solid '
stdcall txt_next_line, 80
mov eax,[f_data]
sub eax,esi mov eax,[f_data]
add eax,[f_size] sub eax,esi
stdcall get_stl_vertex_count, esi,eax add eax,[f_size]
or eax,eax stdcall get_stl_vertex_count, esi,eax
jnz @f or eax,eax
notify_window_run txt_err_stl_null_v jnz @f
jmp .no_stl notify_window_run txt_err_stl_null_v
@@: jmp .no_stl
cmp eax,0xffff @@:
jle @f cmp eax,0xffff
notify_window_run txt_err_stl_open jle @f
mov eax,0xffff notify_window_run txt_err_stl_open
@@: mov eax,0xffff
@@:
mov [vert_c],eax
mov ecx,3 mov [vert_c],eax
xor edx,edx mov ecx,3
div ecx xor edx,edx
mov [face_c],eax div ecx
shl eax,3 mov [face_c],eax
mov ecx,[vert_c] shl eax,3
imul ecx,12 mov ecx,[vert_c]
lea ecx,[ecx+eax+40] imul ecx,12
lea edx,[esi-6] lea ecx,[ecx+eax+40]
sub edx,[f_data] lea edx,[esi-6]
cmp edx,2 sub edx,[f_data]
jge @f cmp edx,2
mov edx,2 ;¬¨­¨¬ «ì­ë© à §¬¥à ¤«ï ¨¬¥­¨ ®¡ê¥ªâ  jge @f
@@: mov edx,2 ;¬¨­¨¬ «ì­ë© à §¬¥à ¤«ï ¨¬¥­¨ ®¡ê¥ªâ 
add ecx,edx ;for object name @@:
mov [c_size],ecx add ecx,edx ;for object name
stdcall mem.Alloc,ecx mov [c_size],ecx
mov [c_mem],eax stdcall mem.Alloc,ecx
mov ebx,eax mov [c_mem],eax
mov ebx,eax
mov word[ebx],CHUNK_MAIN
mov dword[ebx+2],ecx mov word[ebx],CHUNK_MAIN
add ebx,6 mov dword[ebx+2],ecx
add ebx,6
;3d3d
mov word[ebx],CHUNK_OBJMESH ;3d3d
sub ecx,6 mov word[ebx],CHUNK_OBJMESH
mov dword[ebx+2],ecx sub ecx,6
add ebx,6 mov dword[ebx+2],ecx
add ebx,6
;4000
mov word[ebx],CHUNK_OBJBLOCK ;4000
sub ecx,6 mov word[ebx],CHUNK_OBJBLOCK
mov dword[ebx+2],ecx sub ecx,6
add ebx,6 mov dword[ebx+2],ecx
add ebx,6
push ecx esi
mov ecx,edx push ecx esi
mov edi,ebx mov ecx,edx
mov esi,[f_data] mov edi,ebx
add esi,6 ;¯à®¯ã᪠¥¬ 'solid ' mov esi,[f_data]
rep movsb ;ª®¯¨à㥬 ¨¬ï ®¡ê¥ªâ  add esi,6 ;¯à®¯ã᪠¥¬ 'solid '
mov byte[edi-1],0 rep movsb ;ª®¯¨à㥬 ¨¬ï ®¡ê¥ªâ 
add ebx,edx mov byte[edi-1],0
pop esi ecx add ebx,edx
pop esi ecx
;4100
mov word[ebx],CHUNK_TRIMESH ;4100
sub ecx,6 mov word[ebx],CHUNK_TRIMESH
mov dword[ebx+2],ecx sub ecx,6
add ebx,6 mov dword[ebx+2],ecx
add ebx,6
;4110
mov word[ebx],CHUNK_VERTLIST ;4110
mov dword[ebx+2],8 ;+ ç¨á«® ¢¥à設 * 12 mov word[ebx],CHUNK_VERTLIST
add ebx,6 mov dword[ebx+2],8 ;+ ç¨á«® ¢¥à設 * 12
add ebx,6
mov edx,ebx
mov word[edx],0 ;ª®«. ¢¥à設 mov edx,ebx
add ebx,2 mov word[edx],0 ;ª®«. ¢¥à設
finit add ebx,2
.cycle0: finit
call txt_ignore_space .cycle0:
cmp dword[esi],'face' call txt_ignore_space
jne .end_v cmp dword[esi],'face'
stdcall txt_next_line, 80 jne .end_v
stdcall txt_next_line, 80
call txt_ignore_space
cmp dword[esi],'oute' call txt_ignore_space
jne .end_v cmp dword[esi],'oute'
stdcall txt_next_line, 80 jne .end_v
stdcall txt_next_line, 80
mov ecx,3 ;3 â®çª¨ ­  1 £à ­ì
@@: mov ecx,3 ;3 â®çª¨ ­  1 £à ­ì
stdcall stl_vertex_init, ebx @@:
or eax,eax stdcall stl_vertex_init, ebx
jz .end_v or eax,eax
add ebx,12 jz .end_v
inc word[edx] add ebx,12
loop @b inc word[edx]
loop @b
mov eax,[vert_c]
cmp word[edx],ax mov eax,[vert_c]
jge .end_v cmp word[edx],ax
call txt_ignore_space jge .end_v
cmp dword[esi],'endl' call txt_ignore_space
jne .end_v cmp dword[esi],'endl'
stdcall txt_next_line, 80 jne .end_v
stdcall txt_next_line, 80
call txt_ignore_space
cmp dword[esi],'endf' call txt_ignore_space
jne .end_v cmp dword[esi],'endf'
stdcall txt_next_line, 80 jne .end_v
jmp .cycle0 stdcall txt_next_line, 80
.end_v: jmp .cycle0
.end_v:
movzx eax,word[edx]
imul eax,12 movzx eax,word[edx]
add [edx-4],eax ;¨á¯à ¢«ï¥¬ à §¬¥à ¡«®ª  4110 imul eax,12
add [edx-4],eax ;¨á¯à ¢«ï¥¬ à §¬¥à ¡«®ª  4110
;4120
mov word[ebx],CHUNK_FACELIST ;4120
mov ecx,[face_c] mov word[ebx],CHUNK_FACELIST
mov edx,ecx mov ecx,[face_c]
shl edx,3 ;ª®«. £à ­¥© * 8 mov edx,ecx
add edx,8 shl edx,3 ;ª®«. £à ­¥© * 8
mov [ebx+2],edx add edx,8
add ebx,6 mov [ebx+2],edx
mov [ebx],cx ;ª®«. £à ­¥© add ebx,6
add ebx,2 mov [ebx],cx ;ª®«. £à ­¥©
xor eax,eax add ebx,2
@@: xor eax,eax
mov [ebx],ax @@:
inc eax mov [ebx],ax
mov [ebx+2],ax inc eax
inc eax mov [ebx+2],ax
mov [ebx+4],ax inc eax
inc eax mov [ebx+4],ax
mov word[ebx+6],0 ; âਡãâë inc eax
add ebx,8 mov word[ebx+6],0 ; âਡãâë
loop @b add ebx,8
loop @b
mov eax,[c_mem]
mov ecx,[c_size] mov eax,[c_mem]
.no_stl: mov ecx,[c_size]
ret .no_stl:
endp ret
endp
;input:
; esi - 㪠§ â¥«ì ­  ­ ç «® ä ©«  ;input:
; ecx - à §¬¥à ä ©«  ; esi - 㪠§ â¥«ì ­  ­ ç «® ä ©« 
align 4 ; ecx - à §¬¥à ä ©« 
proc convert_binary_stl align 4
locals proc convert_binary_stl
c_mem dd ? ;¯ ¬ïâì ¤«ï ¯à¥®¡à §®¢ ­¨ï (convert memory) locals
c_size dd ? ;à §¬¥à ¯ ¬ï⨠¤«ï ¯à¥®¡à §®¢ ­¨© (convert memory size) c_mem dd ? ;¯ ¬ïâì ¤«ï ¯à¥®¡à §®¢ ­¨ï (convert memory)
vert_c dd ? ;ç¨á«® ¢¥à設 (vertex count) c_size dd ? ;à §¬¥à ¯ ¬ï⨠¤«ï ¯à¥®¡à §®¢ ­¨© (convert memory size)
face_c dd ? ;ç¨á«® £à ­¥© (faces count) vert_c dd ? ;ç¨á«® ¢¥à設 (vertex count)
endl face_c dd ? ;ç¨á«® £à ­¥© (faces count)
mov eax,[esi+80] endl
or eax,eax mov eax,[esi+80]
jnz @f or eax,eax
notify_window_run txt_err_stl_null_v jnz @f
jmp .no_stl notify_window_run txt_err_stl_null_v
@@: jmp .no_stl
cmp eax,0xffff/3 @@:
jle @f cmp eax,0xffff/3
notify_window_run txt_err_stl_open jle @f
mov eax,0xffff/3 notify_window_run txt_err_stl_open
@@: mov eax,0xffff/3
@@:
mov [face_c],eax
mov ecx,eax mov [face_c],eax
imul eax,3 mov ecx,eax
mov [vert_c],eax imul eax,3
shl ecx,3 mov [vert_c],eax
imul eax,12 shl ecx,3
lea ecx,[ecx+eax+40+4] ;+4 à §¬¥à ¤«ï ¨¬¥­¨ ®¡ê¥ªâ  imul eax,12
mov [c_size],ecx lea ecx,[ecx+eax+40+4] ;+4 à §¬¥à ¤«ï ¨¬¥­¨ ®¡ê¥ªâ 
stdcall mem.Alloc,ecx mov [c_size],ecx
mov [c_mem],eax stdcall mem.Alloc,ecx
mov ebx,eax mov [c_mem],eax
mov ebx,eax
mov word[ebx],CHUNK_MAIN
mov dword[ebx+2],ecx mov word[ebx],CHUNK_MAIN
add ebx,6 mov dword[ebx+2],ecx
add ebx,6
;3d3d
mov word[ebx],CHUNK_OBJMESH ;3d3d
sub ecx,6 mov word[ebx],CHUNK_OBJMESH
mov dword[ebx+2],ecx sub ecx,6
add ebx,6 mov dword[ebx+2],ecx
add ebx,6
;4000
mov word[ebx],CHUNK_OBJBLOCK ;4000
sub ecx,6 mov word[ebx],CHUNK_OBJBLOCK
mov dword[ebx+2],ecx sub ecx,6
add ebx,6 mov dword[ebx+2],ecx
mov dword[ebx],'Stl' ;¨¬ï ®¡ê¥ªâ  add ebx,6
add ebx,4 mov dword[ebx],'Stl' ;¨¬ï ®¡ê¥ªâ 
add ebx,4
;4100
mov word[ebx],CHUNK_TRIMESH ;4100
sub ecx,6 mov word[ebx],CHUNK_TRIMESH
mov dword[ebx+2],ecx sub ecx,6
add ebx,6 mov dword[ebx+2],ecx
add ebx,6
;4110
mov word[ebx],CHUNK_VERTLIST ;4110
mov dword[ebx+2],8 ;+ ç¨á«® ¢¥à設 * 12 mov word[ebx],CHUNK_VERTLIST
add ebx,6 mov dword[ebx+2],8 ;+ ç¨á«® ¢¥à設 * 12
add ebx,6
mov edx,ebx
mov ecx,[vert_c] mov edx,ebx
mov word[edx],cx ;ª®«. ¢¥à設 mov ecx,[vert_c]
add ebx,2 mov word[edx],cx ;ª®«. ¢¥à設
add ebx,2
add esi,80+4+12 ;¯à®¯ã᪠§ £®«®¢ª , ç¨á«  £à ­¥©, 1-£® ¢¥ªâ®à  ­®à¬ «¥©
mov edi,ebx add esi,80+4+12 ;¯à®¯ã᪠§ £®«®¢ª , ç¨á«  £à ­¥©, 1-£® ¢¥ªâ®à  ­®à¬ «¥©
mov eax,[face_c] mov edi,ebx
@@: ;横« ¯® £à ­ï¬ mov eax,[face_c]
mov ecx,9 @@: ;横« ¯® £à ­ï¬
rep movsd ;ª®¯¨à㥬 ª®®à¤¨­ âë 3-å ¢¥à設 mov ecx,9
add esi,14 ;¯à®¯ã᪠¢¥ªâ®à  ­®à¬ «¥© ¨  âਡã⮢ rep movsd ;ª®¯¨à㥬 ª®®à¤¨­ âë 3-å ¢¥à設
dec eax add esi,14 ;¯à®¯ã᪠¢¥ªâ®à  ­®à¬ «¥© ¨  âਡã⮢
jnz @b dec eax
mov ebx,edi jnz @b
mov ebx,edi
movzx eax,word[edx]
imul eax,12 movzx eax,word[edx]
add [edx-4],eax ;¨á¯à ¢«ï¥¬ à §¬¥à ¡«®ª  4110 imul eax,12
add [edx-4],eax ;¨á¯à ¢«ï¥¬ à §¬¥à ¡«®ª  4110
;4120
mov word[ebx],CHUNK_FACELIST ;4120
mov ecx,[face_c] mov word[ebx],CHUNK_FACELIST
mov edx,ecx mov ecx,[face_c]
shl edx,3 ;ª®«. £à ­¥© * 8 mov edx,ecx
add edx,8 shl edx,3 ;ª®«. £à ­¥© * 8
mov [ebx+2],edx add edx,8
add ebx,6 mov [ebx+2],edx
mov [ebx],cx ;ª®«. £à ­¥© add ebx,6
add ebx,2 mov [ebx],cx ;ª®«. £à ­¥©
xor eax,eax add ebx,2
@@: xor eax,eax
mov [ebx],ax @@:
inc eax mov [ebx],ax
mov [ebx+2],ax inc eax
inc eax mov [ebx+2],ax
mov [ebx+4],ax inc eax
inc eax mov [ebx+4],ax
mov word[ebx+6],0 ; âਡãâë inc eax
add ebx,8 mov word[ebx+6],0 ; âਡãâë
loop @b add ebx,8
loop @b
mov eax,[c_mem]
mov ecx,[c_size] mov eax,[c_mem]
.no_stl: mov ecx,[c_size]
ret .no_stl:
endp ret
endp
;output:
; eax - vertex count ;output:
align 4 ; eax - vertex count
proc get_stl_vertex_count uses ebx ecx edi, f_data:dword, f_size:dword align 4
mov al,'v' proc get_stl_vertex_count uses ebx ecx edi, f_data:dword, f_size:dword
xor ebx,ebx mov al,'v'
mov ecx,[f_size] xor ebx,ebx
mov edi,[f_data] mov ecx,[f_size]
.cycle0: mov edi,[f_data]
repne scasb .cycle0:
cmp dword[edi],'erte' repne scasb
jne @f cmp dword[edi],'erte'
inc ebx jne @f
add edi,4 inc ebx
sub ecx,4 add edi,4
cmp ecx,4 sub ecx,4
jg .cycle0 cmp ecx,4
@@: jg .cycle0
mov eax,ebx @@:
ret mov eax,ebx
endp ret
endp
;input:
; esi - input description text ;input:
; ppoi - pointer to vertex struct ; esi - input description text
;output: ; ppoi - pointer to vertex struct
; eax - 0 (if error init) or 1 ;output:
; esi - output description text ; eax - 0 (if error init) or 1
align 4 ; esi - output description text
proc stl_vertex_init uses ebx ecx edi, ppoi:dword align 4
call txt_ignore_space proc stl_vertex_init uses ebx ecx edi, ppoi:dword
cmp dword[esi],'vert' call txt_ignore_space
jne .err_init cmp dword[esi],'vert'
cmp word[esi+4],'ex' jne .err_init
jne .err_init cmp word[esi+4],'ex'
add esi,6 jne .err_init
mov ebx,[ppoi] add esi,6
mov ebx,[ppoi]
call txt_copy_data
call String_to_DoubleFloat call txt_copy_data
fld qword[Data_Double] call String_to_DoubleFloat
fstp dword[ebx] ;coord X fld qword[Data_Double]
fstp dword[ebx] ;coord X
call txt_copy_data
call String_to_DoubleFloat call txt_copy_data
fld qword[Data_Double] call String_to_DoubleFloat
fstp dword[ebx+4] ;coord X fld qword[Data_Double]
fstp dword[ebx+4] ;coord X
call txt_copy_data
call String_to_DoubleFloat call txt_copy_data
fld qword[Data_Double] call String_to_DoubleFloat
fstp dword[ebx+8] ;coord Z fld qword[Data_Double]
fstp dword[ebx+8] ;coord Z
stdcall txt_next_line, 80
jmp @f stdcall txt_next_line, 80
.err_init: jmp @f
xor eax,eax .err_init:
jmp .end_f xor eax,eax
@@: jmp .end_f
xor eax,eax @@:
inc eax xor eax,eax
.end_f: inc eax
ret .end_f:
endp ret
endp
;input:
; esi - 㪠§ â¥«ì ­  ­ ç «® áâப¨ á ¯à®¡¥« ¬¨ ;input:
;output: ; esi - 㪠§ â¥«ì ­  ­ ç «® áâப¨ á ¯à®¡¥« ¬¨
; al - destroy ;output:
; ecx - destroy ; al - destroy
; esi - 㪠§ â¥«ì ­  ¯¥à¢ë© ­¥¯à®¡¥«ì­ë© ᨬ¢®« ; ecx - destroy
align 4 ; esi - 㪠§ â¥«ì ­  ¯¥à¢ë© ­¥¯à®¡¥«ì­ë© ᨬ¢®«
txt_ignore_space: align 4
mov ecx,64 ;§ é¨â  ®â § æ¨ª«¨¢ ­¨ï txt_ignore_space:
@@: mov ecx,64 ;§ é¨â  ®â § æ¨ª«¨¢ ­¨ï
lodsb @@:
cmp al,' ' lodsb
jne @f cmp al,' '
loop @b jne @f
@@: loop @b
dec esi @@:
ret dec esi
ret
;input:
; esi - 㪠§ â¥«ì ­  áâபã á ç¨á«®¬ (¯à®¡¥«ë ¢ ­ ç «¥ áâப¨ ¨£­®à¨àãîâìáï) ;input:
;output: ; esi - 㪠§ â¥«ì ­  áâபã á ç¨á«®¬ (¯à®¡¥«ë ¢ ­ ç «¥ áâப¨ ¨£­®à¨àãîâìáï)
; al - destroy ;output:
; ecx - destroy ; al - destroy
; edi - destroy ; ecx - destroy
; esi - 㪠§ â¥«ì ­  ª®­¥æ ª®¯¨à®¢ ­­®£® ç¨á«  ; edi - destroy
; Data_String - áâப  á ç¨á«®¬ ¨§ esi ; esi - 㪠§ â¥«ì ­  ª®­¥æ ª®¯¨à®¢ ­­®£® ç¨á« 
align 4 ; Data_String - áâப  á ç¨á«®¬ ¨§ esi
txt_copy_data: align 4
call txt_ignore_space txt_copy_data:
mov ecx,32 call txt_ignore_space
mov edi,esi mov ecx,32
@@: mov edi,esi
lodsb @@:
or al,al lodsb
jz @f or al,al
cmp al,' ' jz @f
je @f cmp al,' '
cmp al,13 je @f
je @f cmp al,13
loop @b je @f
@@: loop @b
mov esi,edi @@:
sub ecx,32 mov esi,edi
neg ecx sub ecx,32
mov edi,Data_String neg ecx
rep movsb mov edi,Data_String
mov byte[edi],0 rep movsb
ret mov byte[edi],0
ret
;input:
; esi - text pointer ;input:
align 4 ; esi - text pointer
proc txt_next_line uses eax ecx edi, mlen:dword align 4
mov al,13 proc txt_next_line uses eax ecx edi, mlen:dword
mov ecx,[mlen] mov al,13
mov edi,esi mov ecx,[mlen]
repne scasb mov edi,esi
cmp byte[edi],10 repne scasb
jne @f cmp byte[edi],10
inc edi jne @f
@@: inc edi
mov esi,edi @@:
ret mov esi,edi
endp ret
endp

View File

@ -1,320 +1,324 @@
; ;
; §¤¥áì á®¡à ­ë ¤ ­­ë¥ ¯® ¡«®ª ¬ *.3ds ; §¤¥áì á®¡à ­ë ¤ ­­ë¥ ¯® ¡«®ª ¬ *.3ds
; ;
MAX_FILE_LEVEL equ 20 ;¬ ªá¨¬ «ì­ë© ã஢¥­ì ¢«®¦¥­­®á⨠¡«®ª®¢ ¤«ï  ­ «¨§  ; Language support for locales: ru_RU (CP866), en_US.
sizeof.block_3ds equ 9 MAX_FILE_LEVEL equ 20 ;¬ ªá¨¬ «ì­ë© ã஢¥­ì ¢«®¦¥­­®á⨠¡«®ª®¢ ¤«ï  ­ «¨§ 
can_save db 0 ;¨§¬¥­ï«áï «¨ ä ©«
sizeof.block_3ds equ 9
macro block_3ds id,icon,par,caption can_save db 0 ;¨§¬¥­ï«áï «¨ ä ©«
{
dw id ;+0 ¨¤¥­â¨ä¨ª â®à ¡«®ª  ¢ ä ©«¥ 3ds macro block_3ds id,icon,par,caption
dw icon ;+2 ­®¬¥à ¨ª®­ª¨ ¤«ï ¡«®ª  {
db par ;+4 ᮤ¥à¦¨â «¨ ¡«®ª ¯®¤¡«®ª¨ (0-¤  1-­¥â) dw id ;+0 ¨¤¥­â¨ä¨ª â®à ¡«®ª  ¢ ä ©«¥ 3ds
dd caption+0 ;+5 ®¯¨á ­¨¥ ¡«®ª  dw icon ;+2 ­®¬¥à ¨ª®­ª¨ ¤«ï ¡«®ª 
} db par ;+4 ᮤ¥à¦¨â «¨ ¡«®ª ¯®¤¡«®ª¨ (0-¤  1-­¥â)
dd caption+0 ;+5 ®¯¨á ­¨¥ ¡«®ª 
CHUNK_MAIN equ 0x4D4D ; [-] á業  }
CHUNK_ambient_color equ 0x2100 ; [-] ambient color
CHUNK_OBJMESH equ 0x3D3D ; [-] ­ ¡®à ®¡ê¥ªâ®¢ CHUNK_MAIN equ 0x4D4D ; [-] á業 
CHUNK_OBJBLOCK equ 0x4000 ; [+] ®¡ê¥ªâ CHUNK_ambient_color equ 0x2100 ; [-] ambient color
CHUNK_TRIMESH equ 0x4100 ; [-] trimesh-®¡ê¥ªâ CHUNK_OBJMESH equ 0x3D3D ; [-] ­ ¡®à ®¡ê¥ªâ®¢
CHUNK_VERTLIST equ 0x4110 ; [+] ᯨ᮪ ¢¥à設 CHUNK_OBJBLOCK equ 0x4000 ; [+] ®¡ê¥ªâ
CHUNK_FACELIST equ 0x4120 ; [+] ᯨ᮪ £à ­¥© CHUNK_TRIMESH equ 0x4100 ; [-] trimesh-®¡ê¥ªâ
CHUNK_FACEMAT equ 0x4130 ; [+] ¬ â¥à¨ «ë £à ­¥© CHUNK_VERTLIST equ 0x4110 ; [+] ᯨ᮪ ¢¥à設
CHUNK_MAPLIST equ 0x4140 ; [+] ⥪áâãà­ë¥ ª®®à¤¨­ âë CHUNK_FACELIST equ 0x4120 ; [+] ᯨ᮪ £à ­¥©
CHUNK_TRMATRIX equ 0x4160 ; [+] ¬ âà¨æ  ¯¥à¥¢®¤  CHUNK_FACEMAT equ 0x4130 ; [+] ¬ â¥à¨ «ë £à ­¥©
CHUNK_CAMERA equ 0x4700 ; [+] ®¡ê¥ªâ-ª ¬¥à  CHUNK_MAPLIST equ 0x4140 ; [+] ⥪áâãà­ë¥ ª®®à¤¨­ âë
CHUNK_MATERIAL equ 0xAFFF ; [-] ¬ â¥à¨ « CHUNK_TRMATRIX equ 0x4160 ; [+] ¬ âà¨æ  ¯¥à¥¢®¤ 
CHUNK_MATNAME equ 0xA000 ; [+] ­ §¢ ­¨¥ ¬ â¥à¨ «  CHUNK_CAMERA equ 0x4700 ; [+] ®¡ê¥ªâ-ª ¬¥à 
CHUNK_TEXTURE equ 0xA200 ; [-] ⥪áâãà  ¬ â¥à¨ «  CHUNK_MATERIAL equ 0xAFFF ; [-] ¬ â¥à¨ «
CHUNK_MAPFILE equ 0xA300 ; [+] ¨¬ï ä ©«  ⥪áâãàë CHUNK_MATNAME equ 0xA000 ; [+] ­ §¢ ­¨¥ ¬ â¥à¨ « 
CHUNK_KEYFRAMER equ 0xB000 ; [-] ¨­ä®à¬ æ¨ï ®¡  ­¨¬ æ¨¨ CHUNK_TEXTURE equ 0xA200 ; [-] ⥪áâãà  ¬ â¥à¨ « 
CHUNK_TRACKINFO equ 0xB002 ; [-] ¯®¢¥¤¥­¨¥ ®¡ê¥ªâ  CHUNK_MAPFILE equ 0xA300 ; [+] ¨¬ï ä ©«  ⥪áâãàë
CHUNK_TRACKOBJNAME equ 0xB010 ; [+] ­ §¢ ­¨¥ í⮣® ®¡ê¥ªâ  CHUNK_KEYFRAMER equ 0xB000 ; [-] ¨­ä®à¬ æ¨ï ®¡  ­¨¬ æ¨¨
CHUNK_TRACKPIVOT equ 0xB013 ; [+] 業âà ¢à é¥­¨ï ®¡ê¥ªâ  CHUNK_TRACKINFO equ 0xB002 ; [-] ¯®¢¥¤¥­¨¥ ®¡ê¥ªâ 
CHUNK_TRACKPOS equ 0xB020 ; [+] âà ¥ªâ®à¨ï ®¡ê¥ªâ  CHUNK_TRACKOBJNAME equ 0xB010 ; [+] ­ §¢ ­¨¥ í⮣® ®¡ê¥ªâ 
CHUNK_TRACKROTATE equ 0xB021 ; [+] âà ¥ªâ®à¨ï ¢à é¥­¨ï ®¡ê¥ªâ  CHUNK_TRACKPIVOT equ 0xB013 ; [+] 業âà ¢à é¥­¨ï ®¡ê¥ªâ 
CHUNK_TRACKCAMERA equ 0xB003 ; [-] ¯®¢¥¤¥­¨¥ ª ¬¥àë CHUNK_TRACKPOS equ 0xB020 ; [+] âà ¥ªâ®à¨ï ®¡ê¥ªâ 
CHUNK_TRACKFOV equ 0xB023 ; [+] ¯®¢¥¤¥­¨¥ fov ª ¬¥àë CHUNK_TRACKROTATE equ 0xB021 ; [+] âà ¥ªâ®à¨ï ¢à é¥­¨ï ®¡ê¥ªâ 
CHUNK_TRACKROLL equ 0xB024 ; [+] ¯®¢¥¤¥­¨¥ roll ª ¬¥àë CHUNK_TRACKCAMERA equ 0xB003 ; [-] ¯®¢¥¤¥­¨¥ ª ¬¥àë
CHUNK_TRACKCAMTGT equ 0xB004 ; [-] ¯®¢¥¤¥­¨¥ "楫¨" ª ¬¥àë CHUNK_TRACKFOV equ 0xB023 ; [+] ¯®¢¥¤¥­¨¥ fov ª ¬¥àë
CHUNK_TRACKROLL equ 0xB024 ; [+] ¯®¢¥¤¥­¨¥ roll ª ¬¥àë
;¤ ­­ë¥ ᮤ¥à¦ â «¨èì ¡«®ª¨, ®â¬¥ç¥­­ë¥ ¯«îᮬ, ®áâ «ì­ë¥ ¡«®ª¨ CHUNK_TRACKCAMTGT equ 0xB004 ; [-] ¯®¢¥¤¥­¨¥ "楫¨" ª ¬¥àë
; á®áâ®ïâ «¨èì ¨§ ¯®¤¡«®ª®¢
;¤ ­­ë¥ ᮤ¥à¦ â «¨èì ¡«®ª¨, ®â¬¥ç¥­­ë¥ ¯«îᮬ, ®áâ «ì­ë¥ ¡«®ª¨
align 4 ; á®áâ®ïâ «¨èì ¨§ ¯®¤¡«®ª®¢
type_bloks:
block_3ds 0x0002,5,1,txt_0002 align 4
block_3ds 0x3d3e,5,1 ; [+] mesh version type_bloks:
block_3ds 0x0011,4,1,txt_0011 block_3ds 0x0002,5,1,txt_0002
block_3ds 0x0100,3,1,txt_0100 block_3ds 0x3d3e,5,1 ; [+] mesh version
block_3ds CHUNK_ambient_color,3,0,txt_2100 ; [-] ambient color block_3ds 0x0011,4,1,txt_0011
block_3ds CHUNK_OBJMESH, 3,0,txt_3d3d block_3ds 0x0100,3,1,txt_0100
block_3ds CHUNK_OBJBLOCK,11,1,txt_4000 block_3ds CHUNK_ambient_color,3,0,txt_2100 ; [-] ambient color
block_3ds CHUNK_TRIMESH, 3,0,txt_4100 block_3ds CHUNK_OBJMESH, 3,0,txt_3d3d
block_3ds CHUNK_VERTLIST,8,1,txt_4110 block_3ds CHUNK_OBJBLOCK,11,1,txt_4000
block_3ds CHUNK_FACELIST,3,1,txt_4120 block_3ds CHUNK_TRIMESH, 3,0,txt_4100
block_3ds CHUNK_FACEMAT,10,1,txt_4130 block_3ds CHUNK_VERTLIST,8,1,txt_4110
block_3ds CHUNK_MAPLIST, 3,1,txt_4140 block_3ds CHUNK_FACELIST,3,1,txt_4120
block_3ds CHUNK_TRMATRIX,3,1,txt_4160 block_3ds CHUNK_FACEMAT,10,1,txt_4130
block_3ds 0x4600,3,1,txt_4600 block_3ds CHUNK_MAPLIST, 3,1,txt_4140
block_3ds CHUNK_CAMERA, 3,1,txt_4700 block_3ds CHUNK_TRMATRIX,3,1,txt_4160
block_3ds CHUNK_MATERIAL,10,0,txt_afff block_3ds 0x4600,3,1,txt_4600
block_3ds CHUNK_MATNAME, 3,1,txt_a000 block_3ds CHUNK_CAMERA, 3,1,txt_4700
block_3ds 0xa010,4,0,txt_a010 block_3ds CHUNK_MATERIAL,10,0,txt_afff
block_3ds 0xa020,4,0,txt_a020 block_3ds CHUNK_MATNAME, 3,1,txt_a000
block_3ds 0xa030,4,0,txt_a030 block_3ds 0xa010,4,0,txt_a010
block_3ds 0xa100,5,1,txt_a100 block_3ds 0xa020,4,0,txt_a020
block_3ds CHUNK_TEXTURE, 3,0,txt_a200 block_3ds 0xa030,4,0,txt_a030
block_3ds CHUNK_MAPFILE, 6,1,txt_a300 block_3ds 0xa100,5,1,txt_a100
block_3ds CHUNK_KEYFRAMER, 7,0,txt_b000 block_3ds CHUNK_TEXTURE, 3,0,txt_a200
block_3ds CHUNK_TRACKINFO, 3,0,txt_b002 block_3ds CHUNK_MAPFILE, 6,1,txt_a300
block_3ds CHUNK_TRACKOBJNAME,3,1,txt_b010 block_3ds CHUNK_KEYFRAMER, 7,0,txt_b000
block_3ds 0xb011,3,1,txt_b011 block_3ds CHUNK_TRACKINFO, 3,0,txt_b002
block_3ds CHUNK_TRACKPIVOT, 3,1,txt_b013 block_3ds CHUNK_TRACKOBJNAME,3,1,txt_b010
block_3ds 0xb014,3,1,txt_b014 block_3ds 0xb011,3,1,txt_b011
block_3ds CHUNK_TRACKPOS, 3,1,txt_b020 block_3ds CHUNK_TRACKPIVOT, 3,1,txt_b013
block_3ds CHUNK_TRACKROTATE, 3,1,txt_b021 block_3ds 0xb014,3,1,txt_b014
block_3ds CHUNK_TRACKCAMERA, 7,0,txt_b003 block_3ds CHUNK_TRACKPOS, 3,1,txt_b020
block_3ds CHUNK_TRACKFOV, 7,1,txt_b023 block_3ds CHUNK_TRACKROTATE, 3,1,txt_b021
block_3ds CHUNK_TRACKROLL, 7,1,txt_b024 block_3ds CHUNK_TRACKCAMERA, 7,0,txt_b003
block_3ds CHUNK_TRACKCAMTGT, 7,0,txt_b004 block_3ds CHUNK_TRACKFOV, 7,1,txt_b023
block_3ds CHUNK_TRACKROLL, 7,1,txt_b024
;--- ¤ «¥¥ ­¥ ¢® ¢á¥å ¡«®ª å ᬮ£ ­ ©â¨ ®¯¨á ­¨¥ ­  àãá᪮¬ ï§ëª¥ block_3ds CHUNK_TRACKCAMTGT, 7,0,txt_b004
block_3ds 0x4111, 3,1,txt_4111
block_3ds 0x4150, 3,1,txt_4150 ;--- ¤ «¥¥ ­¥ ¢® ¢á¥å ¡«®ª å ᬮ£ ­ ©â¨ ®¯¨á ­¨¥ ­  àãá᪮¬ ï§ëª¥
block_3ds 0x4165, 3,1,txt_4165 block_3ds 0x4111, 3,1,txt_4111
block_3ds 0x4610, 3,1,txt_4610 block_3ds 0x4150, 3,1,txt_4150
block_3ds 0x4627, 3,1,txt_4627 block_3ds 0x4165, 3,1,txt_4165
block_3ds 0x4630, 3,1,txt_4630 block_3ds 0x4610, 3,1,txt_4610
block_3ds 0x4641, 3,1,txt_4641 block_3ds 0x4627, 3,1,txt_4627
block_3ds 0x4650, 3,1,txt_4650 block_3ds 0x4630, 3,1,txt_4630
block_3ds 0x4651, 3,1,txt_4651 block_3ds 0x4641, 3,1,txt_4641
block_3ds 0x4652, 3,1,txt_4652 block_3ds 0x4650, 3,1,txt_4650
block_3ds 0x4653, 3,1,txt_4653 block_3ds 0x4651, 3,1,txt_4651
block_3ds 0x4656, 3,1,txt_4656 block_3ds 0x4652, 3,1,txt_4652
block_3ds 0x4658, 3,1,txt_4658 block_3ds 0x4653, 3,1,txt_4653
block_3ds 0x4620, 3,1,txt_4620 block_3ds 0x4656, 3,1,txt_4656
block_3ds 0x4625, 3,1,txt_4625 block_3ds 0x4658, 3,1,txt_4658
block_3ds 0x4659, 3,1,txt_4659 block_3ds 0x4620, 3,1,txt_4620
block_3ds 0x465a, 3,1,txt_465a block_3ds 0x4625, 3,1,txt_4625
block_3ds 0x465b, 3,1,txt_465b block_3ds 0x4659, 3,1,txt_4659
block_3ds 0xa230, 3,1,txt_a230 block_3ds 0x465a, 3,1,txt_465a
block_3ds 0xa220, 3,1,txt_a220 block_3ds 0x465b, 3,1,txt_465b
block_3ds 0xa351, 3,1,txt_a351 block_3ds 0xa230, 3,1,txt_a230
block_3ds 0xb007, 3,1,txt_b007 block_3ds 0xa220, 3,1,txt_a220
block_3ds 0xb008, 3,1,txt_b008 block_3ds 0xa351, 3,1,txt_a351
block_3ds 0xb022, 3,1,txt_b022 block_3ds 0xb007, 3,1,txt_b007
block_3ds 0xb030, 3,1,txt_b030 block_3ds 0xb008, 3,1,txt_b008
block_3ds 0xa040, 3,1,txt_a040 block_3ds 0xb022, 3,1,txt_b022
block_3ds 0xa041, 3,1,txt_a041 block_3ds 0xb030, 3,1,txt_b030
block_3ds 0xa050, 3,1,txt_a050 block_3ds 0xa040, 3,1,txt_a040
block_3ds 0xa052, 3,1,txt_a052 block_3ds 0xa041, 3,1,txt_a041
block_3ds 0xa053, 3,1,txt_a053 block_3ds 0xa050, 3,1,txt_a050
block_3ds 0xa081, 3,1,txt_a081 block_3ds 0xa052, 3,1,txt_a052
block_3ds 0xa083, 3,1,txt_a083 block_3ds 0xa053, 3,1,txt_a053
block_3ds 0xa084, 3,1,txt_a084 block_3ds 0xa081, 3,1,txt_a081
block_3ds 0xa085, 3,1,txt_a085 block_3ds 0xa083, 3,1,txt_a083
block_3ds 0xa087, 3,1,txt_a087 block_3ds 0xa084, 3,1,txt_a084
block_3ds 0xa088, 3,1,txt_a088 block_3ds 0xa085, 3,1,txt_a085
block_3ds 0xa08a, 3,1,txt_a08a block_3ds 0xa087, 3,1,txt_a087
block_3ds 0xa08c, 3,1,txt_a08c block_3ds 0xa088, 3,1,txt_a088
block_3ds 0xa08e, 3,1,txt_a08e block_3ds 0xa08a, 3,1,txt_a08a
.end: block_3ds 0xa08c, 3,1,txt_a08c
block_3ds 0xa08e, 3,1,txt_a08e
if lang eq ru_RU .end:
txt_0002 db '3ds ¢¥àá¨ï',0
txt_0011 db '–¢¥â rgb (¡ ©â®¢ë© ä®à¬ â)',0 if lang eq ru_RU
;txt_0012 db 'LIN_COLOR_24',0 txt_0002 db '3ds ¢¥àá¨ï',0
;txt_0030 db 'Percentage value (int)',0 txt_0011 db '–¢¥â rgb (¡ ©â®¢ë© ä®à¬ â)',0
;txt_0031 db 'Percentage value (float)',0 ;txt_0012 db 'LIN_COLOR_24',0
txt_0100 db 'Master scale',0 ;txt_0030 db 'Percentage value (int)',0
txt_2100 db '–¢¥â ®ªà㦠î饩 á।ë',0 ;txt_0031 db 'Percentage value (float)',0
txt_3d3d db '<27> ¡®à ®¡ê¥ªâ®¢',0 txt_0100 db 'Master scale',0
txt_4000 db 'Ž¡ê¥ªâ (á ¨¬¥­¥¬)',0 txt_2100 db '–¢¥â ®ªà㦠î饩 á।ë',0
txt_4100 db '’à¥ã£®«ì­ë¥ á¥âª¨',0 txt_3d3d db '<27> ¡®à ®¡ê¥ªâ®¢',0
txt_4110 db '‘¯¨á®ª ¢¥à設',0 txt_4000 db 'Ž¡ê¥ªâ (á ¨¬¥­¥¬)',0
txt_4120 db '‘¯¨á®ª £à ­¥©',0 txt_4100 db '’à¥ã£®«ì­ë¥ á¥âª¨',0
txt_4130 db 'Œ â¥à¨ «ë £à ­¥©',0 txt_4110 db '‘¯¨á®ª ¢¥à設',0
txt_4140 db '’¥ªáâãà­ë¥ ª®®à¤¨­ âë',0 txt_4120 db '‘¯¨á®ª £à ­¥©',0
txt_4160 db 'Œ âà¨æ  ¯¥à¥¢®¤ ',0 txt_4130 db 'Œ â¥à¨ «ë £à ­¥©',0
txt_4600 db '‘¢¥â',0 txt_4140 db '’¥ªáâãà­ë¥ ª®®à¤¨­ âë',0
txt_4700 db 'Š ¬¥à ',0 txt_4160 db 'Œ âà¨æ  ¯¥à¥¢®¤ ',0
txt_a000 db '<27> §¢ ­¨¥ ¬ â¥à¨ « ',0 txt_4600 db '‘¢¥â',0
txt_a010 db 'Žªà㦠î騩 梥â',0 txt_4700 db 'Š ¬¥à ',0
txt_a020 db '„¨ääã§­ë© æ¢¥â',0 txt_a000 db '<27> §¢ ­¨¥ ¬ â¥à¨ « ',0
txt_a030 db '‡¥àª «ì­ë© 梥â',0 txt_a010 db 'Žªà㦠î騩 梥â',0
txt_a100 db '’¨¯ ¬ â¥à¨ «  [1=flat 2=gouraud 3=phong 4=metal]',0 txt_a020 db '„¨ääã§­ë© æ¢¥â',0
txt_a200 db '’¥ªáâãà  ¬ â¥à¨ «  1',0 txt_a030 db '‡¥àª «ì­ë© 梥â',0
txt_a300 db 'ˆ¬ï ä ©«  ⥪áâãàë',0 txt_a100 db '’¨¯ ¬ â¥à¨ «  [1=flat 2=gouraud 3=phong 4=metal]',0
;txt_a353 db 'MAT_MAP_TEXBLUR',0 txt_a200 db '’¥ªáâãà  ¬ â¥à¨ «  1',0
txt_afff db 'Œ â¥à¨ «',0 txt_a300 db 'ˆ¬ï ä ©«  ⥪áâãàë',0
txt_b000 db 'ˆ­ä®à¬ æ¨ï ®¡  ­¨¬ æ¨¨',0 ;txt_a353 db 'MAT_MAP_TEXBLUR',0
txt_b002 db '<27>®¢¥¤¥­¨¥ ®¡ê¥ªâ ',0 txt_afff db 'Œ â¥à¨ «',0
;txt_b009 db 'KFCURTIME',0 txt_b000 db 'ˆ­ä®à¬ æ¨ï ®¡  ­¨¬ æ¨¨',0
;txt_b00a db 'KFHDR',0 txt_b002 db '<27>®¢¥¤¥­¨¥ ®¡ê¥ªâ ',0
txt_b010 db '<27> §¢ ­¨¥ ®¡ê¥ªâ ',0 ;txt_b009 db 'KFCURTIME',0
txt_b011 db 'ˆ¬ï íª§¥¬¯«ïà ',0 ;txt_b00a db 'KFHDR',0
txt_b013 db '–¥­âà ¢à é¥­¨ï ®¡ê¥ªâ ',0 txt_b010 db '<27> §¢ ­¨¥ ®¡ê¥ªâ ',0
txt_b014 db 'Bound box',0 txt_b011 db 'ˆ¬ï íª§¥¬¯«ïà ',0
txt_b020 db '’à ¥ªâ®à¨ï ¤¢¨¦¥­¨ï',0 txt_b013 db '–¥­âà ¢à é¥­¨ï ®¡ê¥ªâ ',0
txt_b021 db '’à ¥ªâ®à¨ï ¢à é¥­¨ï',0 txt_b014 db 'Bound box',0
txt_b003 db '<27>®¢¥¤¥­¨¥ ª ¬¥àë',0 txt_b020 db '’à ¥ªâ®à¨ï ¤¢¨¦¥­¨ï',0
txt_b023 db '<27>®¢¥¤¥­¨¥ fov ª ¬¥àë',0 txt_b021 db '’à ¥ªâ®à¨ï ¢à é¥­¨ï',0
txt_b024 db '<27>®¢¥¤¥­¨¥ roll ª ¬¥àë',0 txt_b003 db '<27>®¢¥¤¥­¨¥ ª ¬¥àë',0
txt_b004 db '<27>®¢¥¤¥­¨¥ "楫¨" ª ¬¥àë',0 txt_b023 db '<27>®¢¥¤¥­¨¥ fov ª ¬¥àë',0
txt_b024 db '<27>®¢¥¤¥­¨¥ roll ª ¬¥àë',0
;--- ¤ «¥¥ ­¥ ¢® ¢á¥å ¡«®ª å ᬮ£ ­ ©â¨ ®¯¨á ­¨¥ ­  àãá᪮¬ ï§ëª¥ txt_b004 db '<27>®¢¥¤¥­¨¥ "楫¨" ª ¬¥àë',0
txt_4111 db '”« £¨ ¢¥à設',0
txt_4150 db 'Smoothing group list',0 ;--- ¤ «¥¥ ­¥ ¢® ¢á¥å ¡«®ª å ᬮ£ ­ ©â¨ ®¯¨á ­¨¥ ­  àãá᪮¬ ï§ëª¥
txt_4165 db 'Object color in editor',0 txt_4111 db '”« £¨ ¢¥à設',0
txt_4610 db '<27> ¯à ¢«¥­­ë© ᢥâ',0 txt_4150 db 'Smoothing group list',0
txt_4627 db 'Spot raytrace',0 txt_4165 db 'Object color in editor',0
txt_4630 db 'Light shadowed',0 txt_4610 db '<27> ¯à ¢«¥­­ë© ᢥâ',0
txt_4641 db 'Spot shadow map',0 txt_4627 db 'Spot raytrace',0
txt_4650 db 'Spot show cone',0 txt_4630 db 'Light shadowed',0
txt_4651 db 'Spot is rectangular',0 txt_4641 db 'Spot shadow map',0
txt_4652 db 'Spot overshoot',0 txt_4650 db 'Spot show cone',0
txt_4653 db 'Spot map',0 txt_4651 db 'Spot is rectangular',0
txt_4656 db 'Spot roll',0 txt_4652 db 'Spot overshoot',0
txt_4658 db 'Spot ray trace bias',0 txt_4653 db 'Spot map',0
txt_4620 db 'Light off',0 txt_4656 db 'Spot roll',0
txt_4625 db 'Attenuation on',0 txt_4658 db 'Spot ray trace bias',0
txt_4659 db 'Range start',0 txt_4620 db 'Light off',0
txt_465a db 'Range end',0 txt_4625 db 'Attenuation on',0
txt_465b db 'Multiplier',0 txt_4659 db 'Range start',0
txt_a230 db '<27> §¬¥âª  ५ì¥ä ',0 txt_465a db 'Range end',0
txt_a220 db '<27> §¬¥âª  ®âà ¦¥­¨ï',0 txt_465b db 'Multiplier',0
txt_a351 db '<27> à ¬¥âàë à §¬¥âª¨',0 txt_a230 db '<27> §¬¥âª  ५ì¥ä ',0
txt_b007 db 'ˆ­ä®à¬ æ¨ï ® ­ ¯à ¢«¥­®¬ ®á¢¥é¥­¨¨',0 txt_a220 db '<27> §¬¥âª  ®âà ¦¥­¨ï',0
txt_b008 db 'Š ¤àë (­ ç «ì­ë© ¨ ª®­¥ç­ë©)',0 txt_a351 db '<27> à ¬¥âàë à §¬¥âª¨',0
txt_b022 db 'Œ áèâ ¡¨à®¢ ­¨¥',0 txt_b007 db 'ˆ­ä®à¬ æ¨ï ® ­ ¯à ¢«¥­®¬ ®á¢¥é¥­¨¨',0
txt_b030 db '<27>®§¨æ¨ï ¢ ¨¥à à娨',0 txt_b008 db 'Š ¤àë (­ ç «ì­ë© ¨ ª®­¥ç­ë©)',0
txt_a040 db 'Shininess percent',0 txt_b022 db 'Œ áèâ ¡¨à®¢ ­¨¥',0
txt_a041 db 'Shininess strength percent',0 txt_b030 db '<27>®§¨æ¨ï ¢ ¨¥à à娨',0
txt_a050 db 'Transparency percent',0 txt_a040 db 'Shininess percent',0
txt_a052 db 'Transparency falloff percent',0 txt_a041 db 'Shininess strength percent',0
txt_a053 db 'Reflection blur percent',0 txt_a050 db 'Transparency percent',0
txt_a081 db '2 sided',0 txt_a052 db 'Transparency falloff percent',0
txt_a083 db 'Add trans',0 txt_a053 db 'Reflection blur percent',0
txt_a084 db 'Self illum',0 txt_a081 db '2 sided',0
txt_a085 db 'Wire frame on',0 txt_a083 db 'Add trans',0
txt_a087 db 'Wire thickness',0 txt_a084 db 'Self illum',0
txt_a088 db 'Face map',0 txt_a085 db 'Wire frame on',0
txt_a08a db 'In tranc',0 txt_a087 db 'Wire thickness',0
txt_a08c db 'Soften',0 txt_a088 db 'Face map',0
txt_a08e db 'Wire in units',0 txt_a08a db 'In tranc',0
txt_a08c db 'Soften',0
txt_not_delete db '<27>¥ ¬®£ã 㤠«¨âì ¢ë¡à ­­ë© ¡«®ª. Ž­ § é¨é¥­.',0 txt_a08e db 'Wire in units',0
else
txt_not_delete db '<27>¥ ¬®£ã 㤠«¨âì ¢ë¡à ­­ë© ¡«®ª. Ž­ § é¨é¥­.',0
txt_0002 db '3ds version',0
txt_0011 db 'Color rgb (byte format)',0 else ; Default to en_US
txt_0100 db 'Master scale',0
txt_2100 db 'Ambient color',0 txt_0002 db '3ds version',0
txt_3d3d db 'Editor chunk',0 txt_0011 db 'Color rgb (byte format)',0
txt_4000 db 'Object (with name)',0 txt_0100 db 'Master scale',0
txt_4100 db 'Triangular mesh',0 txt_2100 db 'Ambient color',0
txt_4110 db 'Vertices list',0 txt_3d3d db 'Editor chunk',0
txt_4120 db 'Faces description',0 txt_4000 db 'Object (with name)',0
txt_4130 db 'Faces material',0 txt_4100 db 'Triangular mesh',0
txt_4140 db 'Mapping coordinates list',0 txt_4110 db 'Vertices list',0
txt_4160 db 'Local coordinate system',0 txt_4120 db 'Faces description',0
txt_4600 db 'Light',0 txt_4130 db 'Faces material',0
txt_4700 db 'Camera',0 txt_4140 db 'Mapping coordinates list',0
txt_a000 db 'Material name',0 txt_4160 db 'Local coordinate system',0
txt_a010 db 'Ambient color',0 txt_4600 db 'Light',0
txt_a020 db 'Diffuse color',0 txt_4700 db 'Camera',0
txt_a030 db 'Specular color',0 txt_a000 db 'Material name',0
txt_a100 db 'Material type [1=flat 2=gouraud 3=phong 4=metal]',0 txt_a010 db 'Ambient color',0
txt_a200 db 'Texture map 1',0 txt_a020 db 'Diffuse color',0
txt_a300 db 'Mapping filename',0 txt_a030 db 'Specular color',0
txt_afff db 'Meterial',0 txt_a100 db 'Material type [1=flat 2=gouraud 3=phong 4=metal]',0
txt_b000 db 'Keyframer',0 txt_a200 db 'Texture map 1',0
txt_b002 db 'Mesh information',0 txt_a300 db 'Mapping filename',0
txt_b010 db 'Object name',0 txt_afff db 'Meterial',0
txt_b011 db 'Instance name',0 txt_b000 db 'Keyframer',0
txt_b013 db 'Object pivot point',0 txt_b002 db 'Mesh information',0
txt_b014 db 'Bound box',0 txt_b010 db 'Object name',0
txt_b020 db 'Position track',0 txt_b011 db 'Instance name',0
txt_b021 db 'Rotation track',0 txt_b013 db 'Object pivot point',0
txt_b003 db 'Camera information',0 txt_b014 db 'Bound box',0
txt_b023 db 'Fov track',0 txt_b020 db 'Position track',0
txt_b024 db 'Roll track',0 txt_b021 db 'Rotation track',0
txt_b004 db 'Camera target information',0 txt_b003 db 'Camera information',0
txt_b023 db 'Fov track',0
;--- txt_b024 db 'Roll track',0
txt_4111 db 'Vertex flags',0 txt_b004 db 'Camera target information',0
txt_4150 db 'Smoothing group list',0
txt_4165 db 'Object color in editor',0 ;---
txt_4610 db 'Spotlight',0 txt_4111 db 'Vertex flags',0
txt_4627 db 'Spot raytrace',0 txt_4150 db 'Smoothing group list',0
txt_4630 db 'Light shadowed',0 txt_4165 db 'Object color in editor',0
txt_4641 db 'Spot shadow map',0 txt_4610 db 'Spotlight',0
txt_4650 db 'Spot show cone',0 txt_4627 db 'Spot raytrace',0
txt_4651 db 'Spot is rectangular',0 txt_4630 db 'Light shadowed',0
txt_4652 db 'Spot overshoot',0 txt_4641 db 'Spot shadow map',0
txt_4653 db 'Spot map',0 txt_4650 db 'Spot show cone',0
txt_4656 db 'Spot roll',0 txt_4651 db 'Spot is rectangular',0
txt_4658 db 'Spot ray trace bias',0 txt_4652 db 'Spot overshoot',0
txt_4620 db 'Light off',0 txt_4653 db 'Spot map',0
txt_4625 db 'Attenuation on',0 txt_4656 db 'Spot roll',0
txt_4659 db 'Range start',0 txt_4658 db 'Spot ray trace bias',0
txt_465a db 'Range end',0 txt_4620 db 'Light off',0
txt_465b db 'Multiplier',0 txt_4625 db 'Attenuation on',0
txt_a230 db 'Bump map',0 txt_4659 db 'Range start',0
txt_a220 db 'Reflection map',0 txt_465a db 'Range end',0
txt_a351 db 'Mapping parameters',0 txt_465b db 'Multiplier',0
txt_b007 db 'Spot light information',0 txt_a230 db 'Bump map',0
txt_b008 db 'Frames (Start and End)',0 txt_a220 db 'Reflection map',0
txt_b022 db 'Scale track',0 txt_a351 db 'Mapping parameters',0
txt_b030 db 'Hierarchy position',0 txt_b007 db 'Spot light information',0
txt_a040 db 'Shininess percent',0 txt_b008 db 'Frames (Start and End)',0
txt_a041 db 'Shininess strength percent',0 txt_b022 db 'Scale track',0
txt_a050 db 'Transparency percent',0 txt_b030 db 'Hierarchy position',0
txt_a052 db 'Transparency falloff percent',0 txt_a040 db 'Shininess percent',0
txt_a053 db 'Reflection blur percent',0 txt_a041 db 'Shininess strength percent',0
txt_a081 db '2 sided',0 txt_a050 db 'Transparency percent',0
txt_a083 db 'Add trans',0 txt_a052 db 'Transparency falloff percent',0
txt_a084 db 'Self illum',0 txt_a053 db 'Reflection blur percent',0
txt_a085 db 'Wire frame on',0 txt_a081 db '2 sided',0
txt_a087 db 'Wire thickness',0 txt_a083 db 'Add trans',0
txt_a088 db 'Face map',0 txt_a084 db 'Self illum',0
txt_a08a db 'In tranc',0 txt_a085 db 'Wire frame on',0
txt_a08c db 'Soften',0 txt_a087 db 'Wire thickness',0
txt_a08e db 'Wire in units',0 txt_a088 db 'Face map',0
txt_a08a db 'In tranc',0
txt_not_delete db 'I can not delete the selected chunk. It is protected.',0 txt_a08c db 'Soften',0
end if txt_a08e db 'Wire in units',0
if lang eq ru_RU txt_not_delete db 'Cannot delete the selected chunk: it is protected.',0
txt_open_3ds db 'Žâªàëâ ä ©«:',0 end if
txt_no_3ds: db 'Žâªàëâë© ä ©« ­¥ ¢ ä®à¬ â¥ *.3ds ',39
.zag: rb 8 if lang eq ru_RU
db 39,0 txt_open_3ds db 'Žâªàëâ ä ©«:',0
txt_3ds_err_sizes db '‚®§¬®¦­® ä ©« ¯®¢à¥¦¤¥­',0 txt_no_3ds: db 'Žâªàëâë© ä ©« ­¥ ¢ ä®à¬ â¥ *.3ds ',39
txt_count db 'Š®«¨ç¥á⢮',0 .zag: rb 8
txt_3ds_offs: db 39,0
db '‘¬¥é¥­¨¥: ' txt_3ds_err_sizes db '‚®§¬®¦­® ä ©« ¯®¢à¥¦¤¥­',0
.dig: rb 8 txt_count db 'Š®«¨ç¥á⢮',0
db ' <20> §¬¥à: ' txt_3ds_offs:
.siz: rb 8 db '‘¬¥é¥­¨¥: '
db 0 .dig: rb 8
txt_mat_null db 'Œ â¥à¨ «ë ­¥ ­ ©¤¥­ë',0 db ' <20> §¬¥à: '
else .siz: rb 8
txt_open_3ds db 'Open file:',0 db 0
txt_no_3ds: db 'Open file not in format *.3ds ',39 txt_mat_null db 'Œ â¥à¨ «ë ­¥ ­ ©¤¥­ë',0
.zag: rb 8
db 39,0 else ; Default to en_US
txt_3ds_err_sizes db 'File may be corrupted',0 txt_open_3ds db 'Open file:',0
txt_count db 'Count',0 txt_no_3ds: db 'Open file not in format *.3ds ',39
txt_3ds_offs: .zag: rb 8
db 'Offset: ' db 39,0
.dig: rb 8 txt_3ds_err_sizes db 'File may be corrupted',0
db ' Size: ' txt_count db 'Count',0
.siz: rb 8 txt_3ds_offs:
db 0 db 'Offset: '
txt_mat_null db 'No materials found',0 .dig: rb 8
end if db ' Size: '
.siz: rb 8
db 0
txt_mat_null db 'No materials found',0
end if

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1 +1,55 @@
if lang eq ru_RU sz_main_menu_View db '‚¨¤', 0 sz_main_menu_Veiw_Vertexes db '‚¥àè¨­ë ¢ª«.', 0 sz_main_menu_Veiw_Faces db 'Š àª á­ë¥ £à ­¨ ¢ª«.', 0 sz_main_menu_Veiw_Faces_Fill db '‘¯«®è­ë¥ £à ­¨ ¢ª«.', 0 sz_main_menu_Veiw_Light db '‘¢¥â ¢ª«./¢ëª«.', 0 sz_main_menu_Veiw_Smooth db '‘£« ¦¨¢ ­¨¥ ¢ª«./¢ëª«.', 0 sz_main_menu_Veiw_Reset db '‘¡à®á ­ áâ஥ª', 0 if version_edit eq 0 sz_main_menu_Veiw_Faces_Mat db '<27> §­®æ¢¥â­ë¥ £à ­¨ ¢ª«.', 0 else sz_main_menu_Vertexes db '‚¥à設ë', 0 sz_main_menu_Vertexes_Select db '‚뤥«¨âì ¢¥à設ã', 0 sz_main_menu_Vertexes_Deselect db 'Žâ¬¥­¨âì ¢áñ ¢ë¤¥«¥­¨¥', 0 sz_main_menu_Average_x db '‘।­¥¥ x',0 sz_main_menu_Average_y db '‘।­¥¥ y',0 sz_main_menu_Average_z db '‘।­¥¥ z',0 end if else sz_main_menu_View db 'View', 0 sz_main_menu_Veiw_Vertexes db 'Vertexes on', 0 sz_main_menu_Veiw_Faces db 'Edges on', 0 sz_main_menu_Veiw_Faces_Fill db 'Faces on', 0 sz_main_menu_Veiw_Light db 'Light on/off', 0 sz_main_menu_Veiw_Smooth db 'Smooth on/off', 0 sz_main_menu_Veiw_Reset db 'Reset settings', 0 if version_edit eq 0 sz_main_menu_Veiw_Faces_Mat db 'Diferent color faces on', 0 else sz_main_menu_Vertexes db 'Vertexes', 0 sz_main_menu_Vertexes_Select db 'Select vertex', 0 sz_main_menu_Vertexes_Deselect db 'Deselect all', 0 sz_main_menu_Average_x db 'Average x',0 sz_main_menu_Average_y db 'Average y',0 sz_main_menu_Average_z db 'Average z',0 end if end if main_menu dd 0 main_menu_file dd 0 main_menu_view dd 0 main_menu_vertexes dd 0 KMENUITEM_NORMAL equ 0 KMENUITEM_SUBMENU equ 1 KMENUITEM_SEPARATOR equ 2
; Language support for locales: ru_RU (CP866), en_US.
if lang eq ru_RU
sz_main_menu_View db '‚¨¤', 0
sz_main_menu_Veiw_Vertexes db '‚¥àè¨­ë ¢ª«.', 0
sz_main_menu_Veiw_Faces db 'Š àª á­ë¥ £à ­¨ ¢ª«.', 0
sz_main_menu_Veiw_Faces_Fill db '‘¯«®è­ë¥ £à ­¨ ¢ª«.', 0
sz_main_menu_Veiw_Light db '‘¢¥â ¢ª«./¢ëª«.', 0
sz_main_menu_Veiw_Smooth db '‘£« ¦¨¢ ­¨¥ ¢ª«./¢ëª«.', 0
sz_main_menu_Veiw_Reset db '‘¡à®á ­ áâ஥ª', 0
if version_edit eq 0
sz_main_menu_Veiw_Faces_Mat db '<27> §­®æ¢¥â­ë¥ £à ­¨ ¢ª«.', 0
else
sz_main_menu_Vertexes db '‚¥à設ë', 0
sz_main_menu_Vertexes_Select db '‚뤥«¨âì ¢¥à設ã', 0
sz_main_menu_Vertexes_Deselect db 'Žâ¬¥­¨âì ¢áñ ¢ë¤¥«¥­¨¥', 0
sz_main_menu_Average_x db '‘।­¥¥ x',0
sz_main_menu_Average_y db '‘।­¥¥ y',0
sz_main_menu_Average_z db '‘।­¥¥ z',0
end if
else ; Default to en_US
sz_main_menu_View db 'View', 0
sz_main_menu_Veiw_Vertexes db 'Vertexes on', 0
sz_main_menu_Veiw_Faces db 'Edges on', 0
sz_main_menu_Veiw_Faces_Fill db 'Faces on', 0
sz_main_menu_Veiw_Light db 'Light on/off', 0
sz_main_menu_Veiw_Smooth db 'Smooth on/off', 0
sz_main_menu_Veiw_Reset db 'Reset settings', 0
if version_edit eq 0
sz_main_menu_Veiw_Faces_Mat db 'Diferent color faces on', 0
else
sz_main_menu_Vertexes db 'Vertexes', 0
sz_main_menu_Vertexes_Select db 'Select vertex', 0
sz_main_menu_Vertexes_Deselect db 'Deselect all', 0
sz_main_menu_Average_x db 'Average x',0
sz_main_menu_Average_y db 'Average y',0
sz_main_menu_Average_z db 'Average z',0
end if
end if
main_menu dd 0
main_menu_file dd 0
main_menu_view dd 0
main_menu_vertexes dd 0
KMENUITEM_NORMAL equ 0
KMENUITEM_SUBMENU equ 1
KMENUITEM_SEPARATOR equ 2

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,318 +1,318 @@
; <20>ணࠬ¬  ¤«ï ¯à¥®¡à §®¢ ­¨ï ç¨á¥« ¨§ áâப¨ ; <20>ணࠬ¬  ¤«ï ¯à¥®¡à §®¢ ­¨ï ç¨á¥« ¨§ áâப¨
; ¢ ä®à¬ â float, double,   â ª¦¥ ¨§ 10 ¨«¨ 16 à¨ç­®£® ; ¢ ä®à¬ â float, double,   â ª¦¥ ¨§ 10 ¨«¨ 16 à¨ç­®£®
; ¢® float. ; ¢® float.
; ‘¤¥« ­  ­  ®á­®¢¥ hex2dec2bin ¨ ¯à¨¬¥à®¢ ¨§ ä ©«  list2_05.inc ; ‘¤¥« ­  ­  ®á­®¢¥ hex2dec2bin ¨ ¯à¨¬¥à®¢ ¨§ ä ©«  list2_05.inc
; ( ¢â®à Šã« ª®¢ ‚« ¤¨¬¨à ƒ¥­­ ¤ì¥¢¨ç 24.05.2002), ; ( ¢â®à Šã« ª®¢ ‚« ¤¨¬¨à ƒ¥­­ ¤ì¥¢¨ç 24.05.2002),
; ª®â®àë¥ ChE ¯¥à¥¤¥« « á 16 ­  32 ¡¨â  ­   áᥬ¡«¥à fasm. ; ª®â®àë¥ ChE ¯¥à¥¤¥« « á 16 ­  32 ¡¨â  ­   áᥬ¡«¥à fasm.
; <20>ணࠬ¬  ¯®§¢®«ï¥â à¥è âì â ª¨¥ § ¤ ç¨: ; <20>ணࠬ¬  ¯®§¢®«ï¥â à¥è âì â ª¨¥ § ¤ ç¨:
; 1) ç¨á«® ¢ áâப®¢®¬ ¢¨¤¥ ¯¥à¥¢¥á⨠¢ 4 ¡ ©â  (float) ¢ ¬ è¨­­ë© ¢¨¤ ; 1) ç¨á«® ¢ áâப®¢®¬ ¢¨¤¥ ¯¥à¥¢¥á⨠¢ 4 ¡ ©â  (float) ¢ ¬ è¨­­ë© ¢¨¤
; 2) ç¨á«® ¢ áâப®¢®¬ ¢¨¤¥ ¯¥à¥¢¥á⨠¢ 8 ¡ ©â (double) ¢ ¬ è¨­­ë© ¢¨¤ ; 2) ç¨á«® ¢ áâப®¢®¬ ¢¨¤¥ ¯¥à¥¢¥á⨠¢ 8 ¡ ©â (double) ¢ ¬ è¨­­ë© ¢¨¤
; 3) ç¨á«® ¢ ¬ è¨­­®¬ ¢¨¤¥ (float) ¯¥à¥¢¥á⨠¢ áâப®¢ë© ¢¨¤ (5 §­ ª®¢ ¯®á«¥ § ¯ï⮩) ; 3) ç¨á«® ¢ ¬ è¨­­®¬ ¢¨¤¥ (float) ¯¥à¥¢¥á⨠¢ áâப®¢ë© ¢¨¤ (5 §­ ª®¢ ¯®á«¥ § ¯ï⮩)
use32 use32
org 0 org 0
db 'MENUET01' db 'MENUET01'
dd 1,start,i_end,e_end,e_end,0,sys_path dd 1,start,i_end,e_end,e_end,0,sys_path
include '../../../proc32.inc' include '../../../proc32.inc'
include '../../../macros.inc' include '../../../macros.inc'
include '../../../KOSfuncs.inc' include '../../../KOSfuncs.inc'
include '../../../load_lib.mac' include '../../../load_lib.mac'
include '../../../develop/libraries/box_lib/trunk/box_lib.mac' include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
include '../../../develop/info3ds/info_fun_float.inc' include '../../../develop/info3ds/info_fun_float.inc'
include 'lang.inc' include 'lang.inc' ; Language support for locales: ru_RU (CP866), en_US.
@use_library @use_library
align 4 align 4
start: start:
load_libraries l_libs_start,l_libs_end load_libraries l_libs_start,l_libs_end
;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  ¡¨¡«¨®â¥ª  ;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  ¡¨¡«¨®â¥ª 
mov ebp,lib_0 mov ebp,lib_0
cmp dword[ebp+ll_struc_size-4],0 cmp dword[ebp+ll_struc_size-4],0
jz @f jz @f
mcall SF_TERMINATE_PROCESS mcall SF_TERMINATE_PROCESS
@@: @@:
mcall SF_SET_EVENTS_MASK,0xC0000027 mcall SF_SET_EVENTS_MASK,0xC0000027
mcall SF_STYLE_SETTINGS,SSF_GET_COLORS, sys_colors, sizeof.system_colors mcall SF_STYLE_SETTINGS,SSF_GET_COLORS, sys_colors, sizeof.system_colors
edit_boxes_set_sys_color edit1,editboxes_end,sys_colors edit_boxes_set_sys_color edit1,editboxes_end,sys_colors
option_boxes_set_sys_color sys_colors,Option_boxes1 option_boxes_set_sys_color sys_colors,Option_boxes1
align 4 align 4
red: red:
call draw_window call draw_window
align 4 align 4
still: still:
mcall SF_WAIT_EVENT mcall SF_WAIT_EVENT
cmp eax,1 ; ¯¥à¥à¨á®¢ âì ®ª­® ? cmp eax,1 ; ¯¥à¥à¨á®¢ âì ®ª­® ?
je red ; ¥á«¨ ¤  - ­  ¬¥âªã red je red ; ¥á«¨ ¤  - ­  ¬¥âªã red
cmp eax,2 ; ­ ¦ â  ª« ¢¨è  ? cmp eax,2 ; ­ ¦ â  ª« ¢¨è  ?
je key ; ¥á«¨ ¤  - ­  key je key ; ¥á«¨ ¤  - ­  key
cmp eax,3 ; ­ ¦ â  ª­®¯ª  ? cmp eax,3 ; ­ ¦ â  ª­®¯ª  ?
je button ; ¥á«¨ ¤  - ­  button je button ; ¥á«¨ ¤  - ­  button
cmp eax,6 cmp eax,6
je mouse je mouse
jmp still ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ­ ç «® 横«  jmp still ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ­ ç «® 横« 
align 4 align 4
key: ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãॠkey: ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
mcall SF_GET_KEY mcall SF_GET_KEY
;cmp ah,13 ;cmp ah,13
stdcall [edit_box_key], edit1 stdcall [edit_box_key], edit1
jmp still ; ¢¥à­ãâìáï ª ­ ç «ã 横«  jmp still ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
align 4 align 4
button: button:
mcall SF_GET_BUTTON mcall SF_GET_BUTTON
cmp ah, 1 ; ¥á«¨ <20>… ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1, cmp ah, 1 ; ¥á«¨ <20>… ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
jne @f jne @f
mcall SF_TERMINATE_PROCESS mcall SF_TERMINATE_PROCESS
@@: @@:
cmp ah, 5 cmp ah, 5
jne @f jne @f
cmp dword[option_group1],opt3 cmp dword[option_group1],opt3
jne .opt_3_end jne .opt_3_end
stdcall conv_str_to_int,[edit1.text] stdcall conv_str_to_int,[edit1.text]
mov dword[Data_Double],eax mov dword[Data_Double],eax
finit finit
fld dword[Data_Double] fld dword[Data_Double]
fstp qword[Data_Double] fstp qword[Data_Double]
; Data_Double - ¯à¥®¡à §ã¥¬®¥ ç¨á«® ; Data_Double - ¯à¥®¡à §ã¥¬®¥ ç¨á«®
mov word[NumberSymbolsAD],8 ; ª®«¨ç¥á⢮ §­ ª®¢ ç¨á«  ¯®á«¥ § ¯ï⮩ (1-17) mov word[NumberSymbolsAD],8 ; ª®«¨ç¥á⢮ §­ ª®¢ ç¨á«  ¯®á«¥ § ¯ï⮩ (1-17)
call DoubleFloat_to_String call DoubleFloat_to_String
call String_crop_0 call String_crop_0
mov dword[Data_Double],eax ;¢®ááâ ­ ¢«¨¢ ¥¬ §­ ç¥­¨¥ ¢ ä®à¬ â¥ float mov dword[Data_Double],eax ;¢®ááâ ­ ¢«¨¢ ¥¬ §­ ç¥­¨¥ ¢ ä®à¬ â¥ float
jmp .opt_all_end jmp .opt_all_end
.opt_3_end: .opt_3_end:
mov esi,string1 mov esi,string1
mov edi,Data_String mov edi,Data_String
cld cld
mov ecx,32 mov ecx,32
rep movsb rep movsb
call String_to_DoubleFloat call String_to_DoubleFloat
cmp dword[option_group1],opt1 cmp dword[option_group1],opt1
jne .opt_all_end ;¥á«¨ ¢ë¡à ­ float, â® ¯à¥®¡à §ã¥¬ ¨§ à ­¥¥ ¯®«ã祭­®£® double jne .opt_all_end ;¥á«¨ ¢ë¡à ­ float, â® ¯à¥®¡à §ã¥¬ ¨§ à ­¥¥ ¯®«ã祭­®£® double
finit finit
fld qword[Data_Double] ;ç¨â ¥¬ ¨§ double fld qword[Data_Double] ;ç¨â ¥¬ ¨§ double
fstp dword[Data_Double] ;  ¢®§¢à é ¥¬ ¢® float fstp dword[Data_Double] ;  ¢®§¢à é ¥¬ ¢® float
.opt_all_end: .opt_all_end:
jmp red jmp red
@@: @@:
jmp still jmp still
align 4 align 4
mouse: mouse:
stdcall [edit_box_mouse], edit1 stdcall [edit_box_mouse], edit1
stdcall [option_box_mouse], Option_boxes1 stdcall [option_box_mouse], Option_boxes1
jmp still jmp still
;------------------------------------------------ ;------------------------------------------------
align 4 align 4
draw_window: draw_window:
mcall SF_STYLE_SETTINGS,SSF_GET_COLORS, sys_colors, sizeof.system_colors mcall SF_STYLE_SETTINGS,SSF_GET_COLORS, sys_colors, sizeof.system_colors
mcall SF_REDRAW,SSF_BEGIN_DRAW mcall SF_REDRAW,SSF_BEGIN_DRAW
mov edx, 0x14000000 mov edx, 0x14000000
or edx, [sys_colors.work] or edx, [sys_colors.work]
mcall SF_CREATE_WINDOW, (200 shl 16)+300, (200 shl 16)+175, ,,title mcall SF_CREATE_WINDOW, (200 shl 16)+300, (200 shl 16)+175, ,,title
mcall SF_DEFINE_BUTTON, ((300-53) shl 16)+38, (145 shl 16)+15, 5, [sys_colors.work_button] ; ª­®¯ª  Ok mcall SF_DEFINE_BUTTON, ((300-53) shl 16)+38, (145 shl 16)+15, 5, [sys_colors.work_button] ; ª­®¯ª  Ok
mov ecx, 0x80000000 mov ecx, 0x80000000
or ecx, [sys_colors.work_text] or ecx, [sys_colors.work_text]
mcall SF_DRAW_TEXT, (15 shl 16) +30,, binstr, mcall SF_DRAW_TEXT, (15 shl 16) +30,, binstr,
mcall , (15 shl 16) +58,, decstr, mcall , (15 shl 16) +58,, decstr,
mcall , ((240-56*3) shl 16) +58,, Data_String, mcall , ((240-56*3) shl 16) +58,, Data_String,
mcall , (15 shl 16) +72,, hexstr, mcall , (15 shl 16) +72,, hexstr,
mcall , (15 shl 16)+150,, numstr, mcall , (15 shl 16)+150,, numstr,
mov ecx, 0x80000000 mov ecx, 0x80000000
or ecx, [sys_colors.work_button_text] or ecx, [sys_colors.work_button_text]
mcall , ((300-42) shl 16)+149, , Okstr,3 mcall , ((300-42) shl 16)+149, , Okstr,3
cmp dword[option_group1],opt1 cmp dword[option_group1],opt1
je @f ;¥á«¨ ¢ë¡à ­ float, â® áâ à訥 4 ¡ ©â  (¨§ double) ­¥ ¯¥ç â ¥¬ je @f ;¥á«¨ ¢ë¡à ­ float, â® áâ à訥 4 ¡ ©â  (¨§ double) ­¥ ¯¥ç â ¥¬
cmp dword[option_group1],opt3 cmp dword[option_group1],opt3
je @f ;¥á«¨ ¢ë¡à ­ float, â® áâ à訥 4 ¡ ©â  (¨§ double) ­¥ ¯¥ç â ¥¬ je @f ;¥á«¨ ¢ë¡à ­ float, â® áâ à訥 4 ¡ ©â  (¨§ double) ­¥ ¯¥ç â ¥¬
mov ecx, dword[Data_Double+4] mov ecx, dword[Data_Double+4]
mcall SF_DRAW_NUMBER, (8 shl 16)+256,,(185 shl 16)+72,[sys_colors.work_text] ; 16-­ ï mcall SF_DRAW_NUMBER, (8 shl 16)+256,,(185 shl 16)+72,[sys_colors.work_text] ; 16-­ ï
mov ecx, dword[Data_Double+4] mov ecx, dword[Data_Double+4]
mcall ,(8 shl 16)+512,,(240 shl 16)+30, ; 2-­ ï mcall ,(8 shl 16)+512,,(240 shl 16)+30, ; 2-­ ï
ror ecx, 8 ror ecx, 8
mcall ,,,((240-56) shl 16)+30, mcall ,,,((240-56) shl 16)+30,
ror ecx, 8 ror ecx, 8
mcall ,,,((240-56*2) shl 16)+30, mcall ,,,((240-56*2) shl 16)+30,
ror ecx, 8 ror ecx, 8
mcall ,,,((240-56*3) shl 16)+30, mcall ,,,((240-56*3) shl 16)+30,
ror ecx, 8 ror ecx, 8
@@: @@:
mov ecx,dword[Data_Double] mov ecx,dword[Data_Double]
mcall SF_DRAW_NUMBER, (8 shl 16)+256,,(240 shl 16)+72,[sys_colors.work_text] ; 16-­ ï mcall SF_DRAW_NUMBER, (8 shl 16)+256,,(240 shl 16)+72,[sys_colors.work_text] ; 16-­ ï
mov ecx,dword[Data_Double] mov ecx,dword[Data_Double]
mcall , (8 shl 16)+512,,(240 shl 16)+44, ; 2-­ ï mcall , (8 shl 16)+512,,(240 shl 16)+44, ; 2-­ ï
ror ecx, 8 ror ecx, 8
mcall ,,,((240-56) shl 16)+44, mcall ,,,((240-56) shl 16)+44,
ror ecx, 8 ror ecx, 8
mcall ,,,((240-56*2) shl 16)+44, mcall ,,,((240-56*2) shl 16)+44,
ror ecx, 8 ror ecx, 8
mcall ,,,((240-56*3) shl 16)+44, mcall ,,,((240-56*3) shl 16)+44,
ror ecx, 8 ror ecx, 8
mcall SF_DRAW_LINE, (15 shl 16)+300-15, (137 shl 16)+137, [sys_colors.work_graph] mcall SF_DRAW_LINE, (15 shl 16)+300-15, (137 shl 16)+137, [sys_colors.work_graph]
stdcall [edit_box_draw], edit1 stdcall [edit_box_draw], edit1
stdcall [option_box_draw], Option_boxes1 stdcall [option_box_draw], Option_boxes1
mcall SF_REDRAW,SSF_END_DRAW mcall SF_REDRAW,SSF_END_DRAW
ret ret
string1 db 32 dup (0) string1 db 32 dup (0)
string1_end: string1_end:
;input: ;input:
; buf - 㪠§ â¥«ì ­  áâபã, ç¨á«® ¤®«¦­® ¡ëâì ¢ 10 ¨«¨ 16 à¨ç­®¬ ¢¨¤¥ ; buf - 㪠§ â¥«ì ­  áâபã, ç¨á«® ¤®«¦­® ¡ëâì ¢ 10 ¨«¨ 16 à¨ç­®¬ ¢¨¤¥
;output: ;output:
; eax - ç¨á«® ; eax - ç¨á«®
align 4 align 4
proc conv_str_to_int uses ebx ecx esi, buf:dword proc conv_str_to_int uses ebx ecx esi, buf:dword
xor eax,eax xor eax,eax
xor ebx,ebx xor ebx,ebx
mov esi,[buf] mov esi,[buf]
;®¯à¥¤¥«¥­¨¥ ®âà¨æ â¥«ì­ëå ç¨á¥« ;®¯à¥¤¥«¥­¨¥ ®âà¨æ â¥«ì­ëå ç¨á¥«
xor ecx,ecx xor ecx,ecx
inc ecx inc ecx
cmp byte[esi],'-' cmp byte[esi],'-'
jne @f jne @f
dec ecx dec ecx
inc esi inc esi
@@: @@:
cmp word[esi],'0x' cmp word[esi],'0x'
je .load_digit_16 je .load_digit_16
.load_digit_10: ;áç¨â뢠­¨¥ 10-â¨ç­ëå æ¨äà .load_digit_10: ;áç¨â뢠­¨¥ 10-â¨ç­ëå æ¨äà
mov bl,byte[esi] mov bl,byte[esi]
cmp bl,'0' cmp bl,'0'
jl @f jl @f
cmp bl,'9' cmp bl,'9'
jg @f jg @f
sub bl,'0' sub bl,'0'
imul eax,10 imul eax,10
add eax,ebx add eax,ebx
inc esi inc esi
jmp .load_digit_10 jmp .load_digit_10
jmp @f jmp @f
.load_digit_16: ;áç¨â뢠­¨¥ 16-à¨ç­ëå æ¨äà .load_digit_16: ;áç¨â뢠­¨¥ 16-à¨ç­ëå æ¨äà
add esi,2 add esi,2
.cycle_16: .cycle_16:
mov bl,byte[esi] mov bl,byte[esi]
cmp bl,'0' cmp bl,'0'
jl @f jl @f
cmp bl,'f' cmp bl,'f'
jg @f jg @f
cmp bl,'9' cmp bl,'9'
jle .us1 jle .us1
cmp bl,'A' cmp bl,'A'
jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'9' ¨ <'A' jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'9' ¨ <'A'
.us1: ;á®áâ ¢­®¥ ãá«®¢¨¥ .us1: ;á®áâ ¢­®¥ ãá«®¢¨¥
cmp bl,'F' cmp bl,'F'
jle .us2 jle .us2
cmp bl,'a' cmp bl,'a'
jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'F' ¨ <'a' jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'F' ¨ <'a'
sub bl,32 ;¯¥à¥¢®¤¨¬ ᨬ¢®«ë ¢ ¢¥àå­¨© ॣ¨áâà, ¤«ï ã¯à®é¥­¨ï ¨å ¯®á«¥¤ã饩 ®¡à ¡®âª¨ sub bl,32 ;¯¥à¥¢®¤¨¬ ᨬ¢®«ë ¢ ¢¥àå­¨© ॣ¨áâà, ¤«ï ã¯à®é¥­¨ï ¨å ¯®á«¥¤ã饩 ®¡à ¡®âª¨
.us2: ;á®áâ ¢­®¥ ãá«®¢¨¥ .us2: ;á®áâ ¢­®¥ ãá«®¢¨¥
sub bl,'0' sub bl,'0'
cmp bl,9 cmp bl,9
jle .cor1 jle .cor1
sub bl,7 ;convert 'A' to '10' sub bl,7 ;convert 'A' to '10'
.cor1: .cor1:
shl eax,4 shl eax,4
add eax,ebx add eax,ebx
inc esi inc esi
jmp .cycle_16 jmp .cycle_16
@@: @@:
cmp ecx,0 ;¥á«¨ ç¨á«® ®âà¨æ â¥«ì­®¥ cmp ecx,0 ;¥á«¨ ç¨á«® ®âà¨æ â¥«ì­®¥
jne @f jne @f
sub ecx,eax sub ecx,eax
mov eax,ecx mov eax,ecx
@@: @@:
ret ret
endp endp
;------------------------------------------------- ;-------------------------------------------------
title db 'string to double 03.01.21',0 title db 'string to double 03.01.21',0
hexstr db 'hex:',0 hexstr db 'hex:',0
decstr db 'dec:',0 decstr db 'dec:',0
binstr db 'bin:',0 binstr db 'bin:',0
if lang eq ru_RU if lang eq ru_RU
numstr db '—¨á«®:',0 numstr db '—¨á«®:',0
Okstr db '‚¢®¤',0 Okstr db '‚¢®¤',0
else else ; Default to en_US
numstr db 'Number:',0 numstr db 'Number:',0
Okstr db 'Ok',0 Okstr db 'Ok',0
end if end if
mouse_dd dd 0 mouse_dd dd 0
edit1 edit_box 182, 59, 146, 0xffffff, 0xff, 0x80ff, 0, 0x8000, (string1_end-string1), string1, mouse_dd, 0 edit1 edit_box 182, 59, 146, 0xffffff, 0xff, 0x80ff, 0, 0x8000, (string1_end-string1), string1, mouse_dd, 0
editboxes_end: editboxes_end:
;option_boxes ;option_boxes
opt1 option_box option_group1, 15, 90, 8, 12, 0xffffff, 0x80ff, 0, op_text.1, 17 opt1 option_box option_group1, 15, 90, 8, 12, 0xffffff, 0x80ff, 0, op_text.1, 17
opt2 option_box option_group1, 15, 106, 8, 12, 0xffffff, 0x80ff, 0, op_text.2, 18 opt2 option_box option_group1, 15, 106, 8, 12, 0xffffff, 0x80ff, 0, op_text.2, 18
opt3 option_box option_group1, 15, 122, 8, 12, 0xffffff, 0x80ff, 0, op_text.3, 21 opt3 option_box option_group1, 15, 122, 8, 12, 0xffffff, 0x80ff, 0, op_text.3, 21
op_text: ;⥪áâ ¤«ï à ¤¨® ª­®¯®ª op_text: ;⥪áâ ¤«ï à ¤¨® ª­®¯®ª
.1 db 'str(dec) -> float' .1 db 'str(dec) -> float'
.2 db 'str(dec) -> double' .2 db 'str(dec) -> double'
.3 db 'float(dec,hex) -> str' .3 db 'float(dec,hex) -> str'
;㪠§ â¥«¨ ¤«ï option_box ;㪠§ â¥«¨ ¤«ï option_box
option_group1 dd opt1 option_group1 dd opt1
Option_boxes1 dd opt1, opt2, opt3, 0 Option_boxes1 dd opt1, opt2, opt3, 0
system_dir_0 db '/sys/lib/' system_dir_0 db '/sys/lib/'
lib_name_0 db 'box_lib.obj',0 lib_name_0 db 'box_lib.obj',0
l_libs_start: l_libs_start:
lib_0 l_libs lib_name_0, library_path, system_dir_0,import_box_lib lib_0 l_libs lib_name_0, library_path, system_dir_0,import_box_lib
l_libs_end: l_libs_end:
align 4 align 4
import_box_lib: import_box_lib:
;dd sz_init1 ;dd sz_init1
edit_box_draw dd sz_edit_box_draw edit_box_draw dd sz_edit_box_draw
edit_box_key dd sz_edit_box_key edit_box_key dd sz_edit_box_key
edit_box_mouse dd sz_edit_box_mouse edit_box_mouse dd sz_edit_box_mouse
;edit_box_set_text dd sz_edit_box_set_text ;edit_box_set_text dd sz_edit_box_set_text
option_box_draw dd aOption_box_draw option_box_draw dd aOption_box_draw
option_box_mouse dd aOption_box_mouse option_box_mouse dd aOption_box_mouse
;version_op dd aVersion_op ;version_op dd aVersion_op
dd 0,0 dd 0,0
;sz_init1 db 'lib_init',0 ;sz_init1 db 'lib_init',0
sz_edit_box_draw db 'edit_box_draw',0 sz_edit_box_draw db 'edit_box_draw',0
sz_edit_box_key db 'edit_box_key',0 sz_edit_box_key db 'edit_box_key',0
sz_edit_box_mouse db 'edit_box_mouse',0 sz_edit_box_mouse db 'edit_box_mouse',0
;sz_edit_box_set_text db 'edit_box_set_text',0 ;sz_edit_box_set_text db 'edit_box_set_text',0
aOption_box_draw db 'option_box_draw',0 aOption_box_draw db 'option_box_draw',0
aOption_box_mouse db 'option_box_mouse',0 aOption_box_mouse db 'option_box_mouse',0
;aVersion_op db 'version_op',0 ;aVersion_op db 'version_op',0
i_end: i_end:
sys_colors system_colors sys_colors system_colors
align 16 align 16
sys_path rb 4096 sys_path rb 4096
library_path rb 4096 library_path rb 4096
rb 0x400 ;stack rb 0x400 ;stack
e_end: ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë e_end: ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë

View File

@ -1,491 +1,501 @@
sz htext,'TINYPAD ',APP_VERSION sz htext,'TINYPAD ',APP_VERSION
menubar_res main_menu,\ ; Language support for locales: ru_RU (CP866), en_US, it_IT, et_EE, es_ES.
ru,'” ©«' ,mm.File ,onshow.file ,\
ru,'<27>à ¢ª ' ,mm.Edit ,onshow.edit ,\ menubar_res main_menu,\
ru,'<27>®¨áª' ,mm.Search ,onshow.search ,\ ru_RU,'” ©«' ,mm.File ,onshow.file ,\
ru,'‡ ¯ãáª' ,mm.Run ,onshow.run ,\ ru_RU,'<27>à ¢ª ' ,mm.Edit ,onshow.edit ,\
ru,'Š®¤¨à®¢ª ',mm.Encoding,onshow.recode ,\ ru_RU,'<27>®¨áª' ,mm.Search ,onshow.search ,\
ru,'Ž¯æ¨¨' ,mm.Options ,onshow.options,\ ru_RU,'‡ ¯ãáª' ,mm.Run ,onshow.run ,\
\ ru_RU,'Š®¤¨à®¢ª ',mm.Encoding,onshow.recode ,\
en,'File' ,mm.File ,onshow.file ,\ ru_RU,'Ž¯æ¨¨' ,mm.Options ,onshow.options,\
en,'Edit' ,mm.Edit ,onshow.edit ,\ \
en,'Search' ,mm.Search ,onshow.search ,\ en_US,'File' ,mm.File ,onshow.file ,\
en,'Run' ,mm.Run ,onshow.run ,\ en_US,'Edit' ,mm.Edit ,onshow.edit ,\
en,'Encoding' ,mm.Encoding,onshow.recode ,\ en_US,'Search' ,mm.Search ,onshow.search ,\
en,'Options' ,mm.Options ,onshow.options,\ en_US,'Run' ,mm.Run ,onshow.run ,\
\ en_US,'Encoding' ,mm.Encoding,onshow.recode ,\
it,'File' ,mm.File ,onshow.file ,\ en_US,'Options' ,mm.Options ,onshow.options,\
it,'Modificare' ,mm.Edit ,onshow.edit ,\ \
it,'Ricerca' ,mm.Search ,onshow.search ,\ it_IT,'File' ,mm.File ,onshow.file ,\
it,'Correre' ,mm.Run ,onshow.run ,\ it_IT,'Modificare' ,mm.Edit ,onshow.edit ,\
it,'Codifica' ,mm.Encoding,onshow.recode ,\ it_IT,'Ricerca' ,mm.Search ,onshow.search ,\
it,'Opzioni' ,mm.Options ,onshow.options,\ it_IT,'Correre' ,mm.Run ,onshow.run ,\
\ it_IT,'Codifica' ,mm.Encoding,onshow.recode ,\
et,'Fail' ,mm.File ,onshow.file ,\ it_IT,'Opzioni' ,mm.Options ,onshow.options,\
et,'Muuda' ,mm.Edit ,onshow.edit ,\ \
et,'Otsi' ,mm.Search ,onshow.search ,\ et_EE,'Fail' ,mm.File ,onshow.file ,\
et,'Käivita' ,mm.Run ,onshow.run ,\ et_EE,'Muuda' ,mm.Edit ,onshow.edit ,\
et,'Kodeering',mm.Encoding,onshow.recode ,\ et_EE,'Otsi' ,mm.Search ,onshow.search ,\
et,'Seaded' ,mm.Options ,onshow.options,\ et_EE,'Käivita' ,mm.Run ,onshow.run ,\
\ et_EE,'Kodeering',mm.Encoding,onshow.recode ,\
sp,'Archivo' ,mm.File ,onshow.file ,\ et_EE,'Seaded' ,mm.Options ,onshow.options,\
sp,'Editar' ,mm.Edit ,onshow.edit ,\ \
sp,'Buscar' ,mm.Search ,onshow.search ,\ es_ES,'Archivo' ,mm.File ,onshow.file ,\
sp,'Ejecutar' ,mm.Run ,onshow.run ,\ es_ES,'Editar' ,mm.Edit ,onshow.edit ,\
sp,'Codificación',mm.Encoding,onshow.recode,\ es_ES,'Buscar' ,mm.Search ,onshow.search ,\
sp,'Opciones' ,mm.Options ,onshow.options es_ES,'Ejecutar' ,mm.Run ,onshow.run ,\
es_ES,'Codificación',mm.Encoding,onshow.recode,\
popup_res mm.File,\ es_ES,'Opciones' ,mm.Options ,onshow.options
ru,'<27>®¢ë©' ,'Ctrl+N' ,New ,\
ru,'Žâªàëâì...','Ctrl+O' ,Open ,\ popup_res mm.File,\
ru,'‘®åà ­¨âì' ,'Ctrl+S' ,Save ,\ ru_RU,'<27>®¢ë©' ,'Ctrl+N' ,New ,\
ru,'‘®åà ­¨âì ª ª...','Ctrl+Shift+S',SaveAs,\ ru_RU,'Žâªàëâì...','Ctrl+O' ,Open ,\
ru,'-','',,\ ru_RU,'‘®åà ­¨âì' ,'Ctrl+S' ,Save ,\
ru,'‡ ªàëâì' ,'Ctrl+F4' ,Close ,\ ru_RU,'‘®åà ­¨âì ª ª...','Ctrl+Shift+S',SaveAs,\
ru,'-','',,\ ru_RU,'-','',,\
ru,'‚ë室' ,'Alt+X' ,Exit ,\ ru_RU,'‡ ªàëâì' ,'Ctrl+F4' ,Close ,\
\ ru_RU,'-','',,\
en,'New' ,'Ctrl+N' ,New ,\ ru_RU,'‚ë室' ,'Alt+X' ,Exit ,\
en,'Open...' ,'Ctrl+O' ,Open ,\ \
en,'Save' ,'Ctrl+S' ,Save ,\ en_US,'New' ,'Ctrl+N' ,New ,\
en,'Save as...','Ctrl+Shift+S',SaveAs ,\ en_US,'Open...' ,'Ctrl+O' ,Open ,\
en,'-','',,\ en_US,'Save' ,'Ctrl+S' ,Save ,\
en,'Close' ,'Ctrl+F4' ,Close ,\ en_US,'Save as...','Ctrl+Shift+S',SaveAs ,\
en,'-','',,\ en_US,'-','',,\
en,'Exit' ,'Alt+X' ,Exit ,\ en_US,'Close' ,'Ctrl+F4' ,Close ,\
\ en_US,'-','',,\
it,'Nuovo' ,'Ctrl+N' ,New ,\ en_US,'Exit' ,'Alt+X' ,Exit ,\
it,'Aperto...' ,'Ctrl+O' ,Open ,\ \
it,'Salva' ,'Ctrl+S' ,Save ,\ it_IT,'Nuovo' ,'Ctrl+N' ,New ,\
it,'Salva come...','Ctrl+Shift+S',SaveAs ,\ it_IT,'Aperto...' ,'Ctrl+O' ,Open ,\
it,'-','',,\ it_IT,'Salva' ,'Ctrl+S' ,Save ,\
it,'Chiudi' ,'Ctrl+F4' ,Close ,\ it_IT,'Salva come...','Ctrl+Shift+S',SaveAs ,\
it,'-','',,\ it_IT,'-','',,\
it,'Uscita' ,'Alt+X' ,Exit ,\ it_IT,'Chiudi' ,'Ctrl+F4' ,Close ,\
\ it_IT,'-','',,\
et,'Uus' ,'Ctrl+N' ,New ,\ it_IT,'Uscita' ,'Alt+X' ,Exit ,\
et,'Ava...' ,'Ctrl+O' ,Open ,\ \
et,'Salvesta' ,'Ctrl+S' ,Save ,\ et_EE,'Uus' ,'Ctrl+N' ,New ,\
et,'Salvesta nimega...','Ctrl+Shift+S',SaveAs,\ et_EE,'Ava...' ,'Ctrl+O' ,Open ,\
et,'-','',,\ et_EE,'Salvesta' ,'Ctrl+S' ,Save ,\
et,'Sulge' ,'Ctrl+F4' ,Close ,\ et_EE,'Salvesta nimega...','Ctrl+Shift+S',SaveAs,\
et,'-','',,\ et_EE,'-','',,\
et,'Välju' ,'Alt+X' ,Exit ,\ et_EE,'Sulge' ,'Ctrl+F4' ,Close ,\
\ et_EE,'-','',,\
sp,'Nuevo' ,'Ctrl+N' ,New ,\ et_EE,'Välju' ,'Alt+X' ,Exit ,\
sp,'Abrir...' ,'Ctrl+O' ,Open ,\ \
sp,'Guardar' ,'Ctrl+S' ,Save ,\ es_ES,'Nuevo' ,'Ctrl+N' ,New ,\
sp,'Guardar como...','Ctrl+Shift+S',SaveAs,\ es_ES,'Abrir...' ,'Ctrl+O' ,Open ,\
sp,'-','',,\ es_ES,'Guardar' ,'Ctrl+S' ,Save ,\
sp,'Cerrar' ,'Ctrl+F4',Close,\ es_ES,'Guardar como...','Ctrl+Shift+S',SaveAs,\
sp,'-','',,\ es_ES,'-','',,\
sp,'Salir' ,'Alt+X' ,Exit es_ES,'Cerrar' ,'Ctrl+F4',Close,\
es_ES,'-','',,\
popup_res mm.Edit,\ es_ES,'Salir' ,'Alt+X' ,Exit
ru,'‚ë१ âì' ,'Ctrl+X',Cut ,\
ru,'Š®¯¨à®¢ âì' ,'Ctrl+C',Copy ,\ popup_res mm.Edit,\
ru,'‚áâ ¢¨âì' ,'Ctrl+V',Insert,\ ru_RU,'‚ë१ âì' ,'Ctrl+X',Cut ,\
ru,'“¤ «¨âì' ,'' ,Delete,\ ru_RU,'Š®¯¨à®¢ âì' ,'Ctrl+C',Copy ,\
ru,'-','',,\ ru_RU,'‚áâ ¢¨âì' ,'Ctrl+V',Insert,\
ru,'‚뤥«¨âì ¢áñ' ,'Ctrl+A',SelAll,\ ru_RU,'“¤ «¨âì' ,'' ,Delete,\
\ ru_RU,'-','',,\
en,'Cut' ,'Ctrl+X',Cut ,\ ru_RU,'‚뤥«¨âì ¢áñ' ,'Ctrl+A',SelAll,\
en,'Copy' ,'Ctrl+C',Copy ,\ \
en,'Paste' ,'Ctrl+V',Insert,\ en_US,'Cut' ,'Ctrl+X',Cut ,\
en,'Delete' ,'' ,Delete,\ en_US,'Copy' ,'Ctrl+C',Copy ,\
en,'-','',,\ en_US,'Paste' ,'Ctrl+V',Insert,\
en,'Select all','Ctrl+A',SelAll,\ en_US,'Delete' ,'' ,Delete,\
\ en_US,'-','',,\
it,'Taglio' ,'Ctrl+X',Cut ,\ en_US,'Select all','Ctrl+A',SelAll,\
it,'Copia' ,'Ctrl+C',Copy ,\ \
it,'Incolla' ,'Ctrl+V',Insert,\ it_IT,'Taglio' ,'Ctrl+X',Cut ,\
it,'Elimina' ,'' ,Delete,\ it_IT,'Copia' ,'Ctrl+C',Copy ,\
it,'-','',,\ it_IT,'Incolla' ,'Ctrl+V',Insert,\
it,'Seleziona tutto','Ctrl+A',SelAll,\ it_IT,'Elimina' ,'' ,Delete,\
\ it_IT,'-','',,\
et,'Lõika' ,'Ctrl+X',Cut ,\ it_IT,'Seleziona tutto','Ctrl+A',SelAll,\
et,'Kopeeri' ,'Ctrl+C',Copy ,\ \
et,'Kleebi' ,'Ctrl+V',Insert,\ et_EE,'Lõika' ,'Ctrl+X',Cut ,\
et,'Kustuta' ,'' ,Delete,\ et_EE,'Kopeeri' ,'Ctrl+C',Copy ,\
et,'-','',,\ et_EE,'Kleebi' ,'Ctrl+V',Insert,\
et,'Vali kõik','Ctrl+A',SelAll,\ et_EE,'Kustuta' ,'' ,Delete,\
\ et_EE,'-','',,\
sp,'Cortar' ,'Ctrl+X',Cut ,\ et_EE,'Vali kõik','Ctrl+A',SelAll,\
sp,'Copiar' ,'Ctrl+C',Copy ,\ \
sp,'Pegar' ,'Ctrl+V',Insert,\ es_ES,'Cortar' ,'Ctrl+X',Cut ,\
sp,'Eliminar' ,'' ,Delete,\ es_ES,'Copiar' ,'Ctrl+C',Copy ,\
sp,'-','',,\ es_ES,'Pegar' ,'Ctrl+V',Insert,\
sp,'Seleccionar todo','Ctrl+A',SelAll es_ES,'Eliminar' ,'' ,Delete,\
es_ES,'-','',,\
popup_res mm.Search,\ es_ES,'Seleccionar todo','Ctrl+A',SelAll
ru,'<27>¥à¥©â¨...' ,'Ctrl+G',Position,\
ru,'-','',,\ popup_res mm.Search,\
ru,'<27> ©â¨...' ,'Ctrl+F',Find ,\ ru_RU,'<27>¥à¥©â¨...' ,'Ctrl+G',Position,\
ru,'<27> ©â¨ ¤ «¥¥','F3' ,FindNext,\ ru_RU,'-','',,\
ru,'‡ ¬¥­¨âì...','Ctrl+H',Replace ,\ ru_RU,'<27> ©â¨...' ,'Ctrl+F',Find ,\
\ ru_RU,'<27> ©â¨ ¤ «¥¥','F3' ,FindNext,\
en,'Position...','Ctrl+G',Position,\ ru_RU,'‡ ¬¥­¨âì...','Ctrl+H',Replace ,\
en,'-','',,\ \
en,'Find...' ,'Ctrl+F',Find ,\ en_US,'Position...','Ctrl+G',Position,\
en,'Find next' ,'F3' ,FindNext,\ en_US,'-','',,\
en,'Replace...' ,'Ctrl+H',Replace ,\ en_US,'Find...' ,'Ctrl+F',Find ,\
\ en_US,'Find next' ,'F3' ,FindNext,\
it,'Posizione...','Ctrl+G',Position,\ en_US,'Replace...' ,'Ctrl+H',Replace ,\
it,'-','',,\ \
it,'Trova...' ,'Ctrl+F',Find ,\ it_IT,'Posizione...','Ctrl+G',Position,\
it,'Trova il prossimo' ,'F3' ,FindNext,\ it_IT,'-','',,\
it,'Sostituire...' ,'Ctrl+H',Replace ,\ it_IT,'Trova...' ,'Ctrl+F',Find ,\
\ it_IT,'Trova il prossimo' ,'F3' ,FindNext,\
et,'Positsioon...','Ctrl+G',Position,\ it_IT,'Sostituire...' ,'Ctrl+H',Replace ,\
et,'-','',,\ \
et,'Leia...' ,'Ctrl+F',Find ,\ et_EE,'Positsioon...','Ctrl+G',Position,\
et,'Leia järgmine','F3' ,FindNext,\ et_EE,'-','',,\
et,'Asenda...' ,'Ctrl+H',Replace ,\ et_EE,'Leia...' ,'Ctrl+F',Find ,\
\ et_EE,'Leia järgmine','F3' ,FindNext,\
sp,'Posición...' ,'Ctrl+G',Position,\ et_EE,'Asenda...' ,'Ctrl+H',Replace ,\
sp,'-','',,\ \
sp,'Buscar...' ,'Ctrl+F',Find ,\ es_ES,'Posición...' ,'Ctrl+G',Position,\
sp,'Buscar siguiente','F3' ,FindNext,\ es_ES,'-','',,\
sp,'Reemplazar...','Ctrl+H',Replace es_ES,'Buscar...' ,'Ctrl+F',Find ,\
es_ES,'Buscar siguiente','F3' ,FindNext,\
popup_res mm.Run,\ es_ES,'Reemplazar...','Ctrl+H',Replace
ru,'‡ ¯ãáâ¨âì' ,'F9' ,Run ,\
ru,'‡ ¯ãáâ¨âì ¢ ¤¥¡ ££¥à¥','F10',Debug ,\ popup_res mm.Run,\
ru,'Š®¬¯¨«¨à®¢ âì' ,'Ctrl+F9',Compile ,\ ru_RU,'‡ ¯ãáâ¨âì' ,'F9' ,Run ,\
ru,'-','',,\ ru_RU,'‡ ¯ãáâ¨âì ¢ ¤¥¡ ££¥à¥','F10',Debug ,\
ru,'„®áª  ®â« ¤ª¨' ,'' ,DbgBoard,\ ru_RU,'Š®¬¯¨«¨à®¢ âì' ,'Ctrl+F9',Compile ,\
ru,'‘¨á⥬­ë¥ ä㭪樨','' ,SysFuncs,\ ru_RU,'-','',,\
\ ru_RU,'„®áª  ®â« ¤ª¨' ,'' ,DbgBoard,\
en,'Run' ,'F9' ,Run ,\ ru_RU,'‘¨á⥬­ë¥ ä㭪樨','' ,SysFuncs,\
en,'Run in debugger' ,'F10' ,Debug ,\ \
en,'Compile' ,'Ctrl+F9',Compile ,\ en_US,'Run' ,'F9' ,Run ,\
en,'-','',,\ en_US,'Run in debugger' ,'F10' ,Debug ,\
en,'Debug board' ,'' ,DbgBoard,\ en_US,'Compile' ,'Ctrl+F9',Compile ,\
en,'System functions' ,'' ,SysFuncs,\ en_US,'-','',,\
\ en_US,'Debug board' ,'' ,DbgBoard,\
it,'Correre' ,'F9' ,Run ,\ en_US,'System functions' ,'' ,SysFuncs,\
it,'Esegui nel debugger','F10',Debug ,\ \
it,'Compilare','Ctrl+F9',Compile ,\ it_IT,'Correre' ,'F9' ,Run ,\
it,'-','',,\ it_IT,'Esegui nel debugger','F10',Debug ,\
it,'Scheda di debug' ,'' ,DbgBoard,\ it_IT,'Compilare','Ctrl+F9',Compile ,\
it,'Funzioni di sistema','' ,SysFuncs,\ it_IT,'-','',,\
\ it_IT,'Scheda di debug' ,'' ,DbgBoard,\
et,'Käivita' ,'F9' ,Run ,\ it_IT,'Funzioni di sistema','' ,SysFuncs,\
et,'Käivita aastal siluri','F10',Debug ,\ \
et,'Kompileeri' ,'Ctrl+F9',Compile ,\ et_EE,'Käivita' ,'F9' ,Run ,\
et,'-','',,\ et_EE,'Käivita aastal siluri','F10',Debug ,\
et,'Silumis paneel' ,'' ,DbgBoard,\ et_EE,'Kompileeri' ,'Ctrl+F9',Compile ,\
et,'Süsteemi funktsioonid','' ,SysFuncs,\ et_EE,'-','',,\
\ et_EE,'Silumis paneel' ,'' ,DbgBoard,\
sp,'Ejecutar' ,'F9' ,Run ,\ et_EE,'Süsteemi funktsioonid','' ,SysFuncs,\
sp,'Ejecutar en el depurador','F10',Debug,\ \
sp,'Compilar' ,'Ctrl+F9',Compile ,\ es_ES,'Ejecutar' ,'F9' ,Run ,\
sp,'-','',,\ es_ES,'Ejecutar en el depurador','F10',Debug,\
sp,'Depuración' ,'' ,DbgBoard,\ es_ES,'Compilar' ,'Ctrl+F9',Compile ,\
sp,'Funciones del sistema' ,'',SysFuncs es_ES,'-','',,\
es_ES,'Depuración' ,'' ,DbgBoard,\
popup_res mm.Encoding,\ es_ES,'Funciones del sistema' ,'',SysFuncs
@!,<'CP866 ',0x1A,' CP1251'>,'',CP866.CP1251,\
@!,<'CP1251 ',0x1A,' CP866' >,'',CP1251.CP866,\ popup_res mm.Encoding,\
@!,<'-'>,'',,\ @!,<'CP866 ',0x1A,' CP1251'>,'',CP866.CP1251,\
@!,<'CP866 ',0x1A,' KOI8-R'>,'',CP866.KOI8R ,\ @!,<'CP1251 ',0x1A,' CP866' >,'',CP1251.CP866,\
@!,<'KOI8-R ',0x1A,' CP866' >,'',KOI8R.CP866 ,\ @!,<'-'>,'',,\
@!,<'-'>,'',,\ @!,<'CP866 ',0x1A,' KOI8-R'>,'',CP866.KOI8R ,\
@!,<'CP1251 ',0x1A,' KOI8-R'>,'',CP1251.KOI8R,\ @!,<'KOI8-R ',0x1A,' CP866' >,'',KOI8R.CP866 ,\
@!,<'KOI8-R ',0x1A,' CP1251'>,'',KOI8R.CP1251 @!,<'-'>,'',,\
@!,<'CP1251 ',0x1A,' KOI8-R'>,'',CP1251.KOI8R,\
popup_res mm.Options,\ @!,<'KOI8-R ',0x1A,' CP1251'>,'',KOI8R.CP1251
ru,'“¢¥«¨ç¨âì' ,'Ctrl +',ZoomIn ,\
ru,'“¬¥­ìè¨âì' ,'Ctrl -',ZoomOut ,\ popup_res mm.Options,\
ru,'-','',,\ ru_RU,'“¢¥«¨ç¨âì' ,'Ctrl +',ZoomIn ,\
ru,'<27>®¬¥à  áâப' ,'',LineNumbers ,\ ru_RU,'“¬¥­ìè¨âì' ,'Ctrl -',ZoomOut ,\
ru,'<27>¥§®¯ á­®¥ ¢ë¤¥«¥­¨¥' ,'',SecureSel ,\ ru_RU,'-','',,\
ru,'€¢â®¬ â¨ç¥áª¨¥ ᪮¡ª¨' ,'',AutoBrackets,\ ru_RU,'<27>®¬¥à  áâப' ,'',LineNumbers ,\
ru,'€¢â®¬ â¨ç¥áª¨© ®âáâã¯' ,'',AutoIndents ,\ ru_RU,'<27>¥§®¯ á­®¥ ¢ë¤¥«¥­¨¥' ,'',SecureSel ,\
ru,'Ž¯â¨¬ «ì­®¥ á®åà ­¥­¨¥' ,'',OptimalFill ,\ ru_RU,'€¢â®¬ â¨ç¥áª¨¥ ᪮¡ª¨' ,'',AutoBrackets,\
ru,'-','',,\ ru_RU,'€¢â®¬ â¨ç¥áª¨© ®âáâã¯' ,'',AutoIndents ,\
ru,'‚­¥è­¨© ¢¨¤...' ,'',Appearance ,\ ru_RU,'Ž¯â¨¬ «ì­®¥ á®åà ­¥­¨¥' ,'',OptimalFill ,\
\ ru_RU,'-','',,\
en,'Zoom in' ,'Ctrl +',ZoomIn ,\ ru_RU,'‚­¥è­¨© ¢¨¤...' ,'',Appearance ,\
en,'Zoom out' ,'Ctrl -',ZoomOut ,\ \
en,'-','',,\ en_US,'Zoom in' ,'Ctrl +',ZoomIn ,\
en,'Line numbers' ,'',LineNumbers ,\ en_US,'Zoom out' ,'Ctrl -',ZoomOut ,\
en,'Secure selection' ,'',SecureSel ,\ en_US,'-','',,\
en,'Automatic brackets' ,'',AutoBrackets,\ en_US,'Line numbers' ,'',LineNumbers ,\
en,'Automatic indents' ,'',AutoIndents ,\ en_US,'Secure selection' ,'',SecureSel ,\
en,'Optimal fill on saving' ,'',OptimalFill ,\ en_US,'Automatic brackets' ,'',AutoBrackets,\
en,'-','',,\ en_US,'Automatic indents' ,'',AutoIndents ,\
en,'Appearance...' ,'',Appearance ,\ en_US,'Optimal fill on saving' ,'',OptimalFill ,\
\ en_US,'-','',,\
it,'Ingrandire' ,'Ctrl +',ZoomIn ,\ en_US,'Appearance...' ,'',Appearance ,\
it,'Rimpicciolisci' ,'Ctrl -',ZoomOut ,\ \
it,'-','',,\ it_IT,'Ingrandire' ,'Ctrl +',ZoomIn ,\
it,'Numeri di riga' ,'',LineNumbers ,\ it_IT,'Rimpicciolisci' ,'Ctrl -',ZoomOut ,\
it,'Selezione sicura' ,'',SecureSel ,\ it_IT,'-','',,\
it,'Staffe automatiche' ,'',AutoBrackets,\ it_IT,'Numeri di riga' ,'',LineNumbers ,\
it,'Rientri automatici' ,'',AutoIndents ,\ it_IT,'Selezione sicura' ,'',SecureSel ,\
it,'Combina spazi' ,'',OptimalFill ,\ it_IT,'Staffe automatiche' ,'',AutoBrackets,\
it,'-','',,\ it_IT,'Rientri automatici' ,'',AutoIndents ,\
it,'Aspetto...' ,'',Appearance ,\ it_IT,'Combina spazi' ,'',OptimalFill ,\
\ it_IT,'-','',,\
et,'Zoom in' ,'Ctrl +',ZoomIn ,\ it_IT,'Aspetto...' ,'',Appearance ,\
et,'Zoom out' ,'Ctrl -',ZoomOut ,\ \
et,'-','',,\ et_EE,'Zoom in' ,'Ctrl +',ZoomIn ,\
et,'Rea numbrid' ,'',LineNumbers ,\ et_EE,'Zoom out' ,'Ctrl -',ZoomOut ,\
et,'Turvaline valimine' ,'',SecureSel ,\ et_EE,'-','',,\
et,'Automaatsed sulud' ,'',AutoBrackets,\ et_EE,'Rea numbrid' ,'',LineNumbers ,\
et,'Automaatsed taandread' ,'',AutoIndents ,\ et_EE,'Turvaline valimine' ,'',SecureSel ,\
et,'Optimaalne täitmine salvestamisel','',OptimalFill,\ et_EE,'Automaatsed sulud' ,'',AutoBrackets,\
et,'-','',,\ et_EE,'Automaatsed taandread' ,'',AutoIndents ,\
et,'Välimus...' ,'',Appearance ,\ et_EE,'Optimaalne täitmine salvestamisel','',OptimalFill,\
\ et_EE,'-','',,\
sp,'Zoom in' ,'Ctrl +',ZoomIn ,\ et_EE,'Välimus...' ,'',Appearance ,\
sp,'Zoom out' ,'Ctrl -',ZoomOut ,\ \
sp,'-','',,\ es_ES,'Zoom in' ,'Ctrl +',ZoomIn ,\
sp,'Números en líneas' ,'',LineNumbers ,\ es_ES,'Zoom out' ,'Ctrl -',ZoomOut ,\
sp,'Selección segura' ,'',SecureSel ,\ es_ES,'-','',,\
sp,'Paréntesis automáticos' ,'',AutoBrackets,\ es_ES,'Números en líneas' ,'',LineNumbers ,\
sp,'Identación automática' ,'',AutoIndents ,\ es_ES,'Selección segura' ,'',SecureSel ,\
sp,'Llenado óptimo al guardar','',OptimalFill ,\ es_ES,'Paréntesis automáticos' ,'',AutoBrackets,\
sp,'-','',,\ es_ES,'Identación automática' ,'',AutoIndents ,\
sp,'Apariencia...' ,'',Appearance es_ES,'Llenado óptimo al guardar','',OptimalFill ,\
es_ES,'-','',,\
lsz s_defname,\ es_ES,'Apariencia...' ,'',Appearance
ru,<'<27>¥§ë¬ï­­ë©',0>,\
en,<'Untitled',0>,\ lsz s_defname,\
it,<'Senza titolo',0>,\ ru_RU,<'<27>¥§ë¬ï­­ë©',0>,\
et,<'Nimetu',0>,\ en_US,<'Untitled',0>,\
sp,<'Sin título',0> it_IT,<'Senza titolo',0>,\
et_EE,<'Nimetu',0>,\
lsz s_modified,\ es_ES,<'Sin título',0>
ru,'ˆ§¬¥­¥­®',\
en,'Modified',\ lsz s_modified,\
it,'Modificato',\ ru_RU,'ˆ§¬¥­¥­®',\
et,'Muudetud',\ en_US,'Modified',\
sp,'Modificado' it_IT,'Modificato',\
et_EE,'Muudetud',\
lsz s_2filename,\ es_ES,'Modificado'
ru,'ˆ¬ï ä ©« :',\
en,'Filename:',\ lsz s_2filename,\
en,'Nome del file:',\ ru_RU,'ˆ¬ï ä ©« :',\
et,'Faili nimi:',\ en_US,'Filename:',\
sp,'Nombre de archivo:' en_US,'Nome del file:',\
lsz s_2open,\ et_EE,'Faili nimi:',\
ru,'Žâªàëâì',\ es_ES,'Nombre de archivo:'
en,'Open',\
it,'Aperto',\ lsz s_2open,\
et,'Ava',\ ru_RU,'Žâªàëâì',\
sp,'Abrir' en_US,'Open',\
lsz s_2save,\ it_IT,'Aperto',\
ru,'‘®åà ­¨âì',\ et_EE,'Ava',\
en,'Save',\ es_ES,'Abrir'
it,'Salva',\
et,'Salvesta',\ lsz s_2save,\
sp,'Guardar' ru_RU,'‘®åà ­¨âì',\
lsz s_2save_no,\ en_US,'Save',\
ru,'<27>¥â',\ it_IT,'Salva',\
en,'No',\ et_EE,'Salvesta',\
it,'No',\ es_ES,'Guardar'
et,'Ei',\
sp,'No' lsz s_2save_no,\
lsz s_2find,\ ru_RU,'<27>¥â',\
ru,'<27> ©â¨',\ en_US,'No',\
en,'Find',\ it_IT,'No',\
it,'Trova',\ et_EE,'Ei',\
et,'Leia',\ es_ES,'No'
sp,'Buscar'
db ':' lsz s_2find,\
lsz s_2replace,\ ru_RU,'<27> ©â¨',\
ru,'‡ ¬¥­¨âì',\ en_US,'Find',\
en,'Replace',\ it_IT,'Trova',\
it,'Sostituire',\ et_EE,'Leia',\
et,'Asenda',\ es_ES,'Buscar'
sp,'Reemplazar' db ':'
db ':'
lsz s_2cancel,\ lsz s_2replace,\
ru,'Žâ¬¥­ ',\ ru_RU,'‡ ¬¥­¨âì',\
en,'Cancel',\ en_US,'Replace',\
it,'Annulla',\ it_IT,'Sostituire',\
et,'Tühista',\ et_EE,'Asenda',\
sp,'Cancelar' es_ES,'Reemplazar'
lsz s_color,\ db ':'
ru,'–¢¥â: 0x',\
en,'Color: 0x',\ lsz s_2cancel,\
it,'Colore: 0x',\ ru_RU,'Žâ¬¥­ ',\
et,'Värv: 0x',\ en_US,'Cancel',\
sp,'Color: 0x' it_IT,'Annulla',\
lsz s_tabpos,\ et_EE,'Tühista',\
ru,'<27> á¯®«®¦¥­¨¥ § ª« ¤®ª',\ es_ES,'Cancelar'
en,'Tabs placement',\
it,'Posizionamento delle schede',\ lsz s_color,\
et,'Saki asetus',\ ru_RU,'–¢¥â: 0x',\
sp,'Lugar de tabulador' en_US,'Color: 0x',\
it_IT,'Colore: 0x',\
lsz s_enter_filename,\ et_EE,'Värv: 0x',\
ru,<'‚¢¥¤¨â¥ ¨¬ï ä ©« ',0>,\ es_ES,'Color: 0x'
en,<'Enter filename',0>,\
it,<'Inserisci il nome del file',0>,\ lsz s_tabpos,\
et,<'Sisesta faili nimi',0>,\ ru_RU,'<27> á¯®«®¦¥­¨¥ § ª« ¤®ª',\
sp,<'Ingresa el nombre del archivo',0> en_US,'Tabs placement',\
it_IT,'Posizionamento delle schede',\
lsz s_ask_save,\ et_EE,'Saki asetus',\
ru,<'†¥« ¥â¥ á®åà ­¨âì?',0>,\ es_ES,'Lugar de tabulador'
en,<'Would you like to save?',0>,\
it,<'Vorresti salvare?',0>,\ lsz s_enter_filename,\
et,<'Kas soovite salvestada?',0>,\ ; Now correct ru_RU,<'‚¢¥¤¨â¥ ¨¬ï ä ©« ',0>,\
sp,<'¿Quieres guardar?',0> en_US,<'Enter filename',0>,\
it_IT,<'Inserisci il nome del file',0>,\
lsz s_enter_text_to_find,\ et_EE,<'Sisesta faili nimi',0>,\
ru,<'‚¢¥¤¨â¥ ⥪áâ ¤«ï ¯®¨áª ',0>,\ es_ES,<'Ingresa el nombre del archivo',0>
en,<'Enter text to find',0>,\
it,<'Inserisci il testo per trovare',0>,\ lsz s_ask_save,\
et,<'Sisesta otsitav tekst',0>,\ ru_RU,<'†¥« ¥â¥ á®åà ­¨âì?',0>,\
sp,<'Ingresa el texto a buscar',0> en_US,<'Would you like to save?',0>,\
it_IT,<'Vorresti salvare?',0>,\
lsz s_enter_text_to_replace,\ et_EE,<'Kas soovite salvestada?',0>,\
ru,<'‚¢¥¤¨â¥ ⥪áâ ¤«ï § ¬¥­ë',0>,\ es_ES,<'¿Quieres guardar?',0>
en,<'Enter text to replace',0>,\
it,<'Inserisci il testo da sostituire',0>,\ lsz s_enter_text_to_find,\
et,<'Sisesta asendatav tekst',0>,\ ru_RU,<'‚¢¥¤¨â¥ ⥪áâ ¤«ï ¯®¨áª ',0>,\
sp,<'Ingresa el texto a reemplazar',0> en_US,<'Enter text to find',0>,\
it_IT,<'Inserisci il testo per trovare',0>,\
lsz s_text_not_found,\ et_EE,<'Sisesta otsitav tekst',0>,\
ru,<'„®á⨣­ãâ ª®­¥æ ä ©« , ⥪áâ ­¥ ­ ©¤¥­',0>,\ es_ES,<'Ingresa el texto a buscar',0>
en,<'Reached end of file, text not found',0>,\
it,<'Raggiunta la fine del file, testo non trovato',0>,\ lsz s_enter_text_to_replace,\
et,<'Faili lõpp, teksti ei leitud',0>,\ ru_RU,<'‚¢¥¤¨â¥ ⥪áâ ¤«ï § ¬¥­ë',0>,\
sp,<'Se llegó al final del archivo, texto no encontrado',0> en_US,<'Enter text to replace',0>,\
it_IT,<'Inserisci il testo da sostituire',0>,\
lszc s_fs_error,b,\ et_EE,<'Sisesta asendatav tekst',0>,\
ru,<'Ž¯¥à æ¨ï § ¢¥à襭  ãᯥ譮 (0)',0>,\ es_ES,<'Ingresa el texto a reemplazar',0>
ru,<'',0>,\
ru,<'”ã­ªæ¨ï ­¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ­­®© ä ©«®¢®© á¨á⥬ë (2)',0>,\ lsz s_text_not_found,\
ru,<'<27>¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬  (3)',0>,\ ru_RU,<'„®á⨣­ãâ ª®­¥æ ä ©« , ⥪áâ ­¥ ­ ©¤¥­',0>,\
ru,<'',0>,\ en_US,<'Reached end of file, text not found',0>,\
ru,<'<27>¥¢®§¬®¦­® ®âªàëâì ä ©« (5)',0>,\ it_IT,<'Raggiunta la fine del file, testo non trovato',0>,\
ru,<'Ž¯¥à æ¨ï § ¢¥à襭  ãᯥ譮 (6)',0>,\ et_EE,<'Faili lõpp, teksti ei leitud',0>,\
ru,<'€¤à¥á ­ å®¤¨âáï §  £à ­¨æ ¬¨ ¯ ¬ï⨠¯à®£à ¬¬ë (7)',0>,\ es_ES,<'Se llegó al final del archivo, texto no encontrado',0>
ru,<'<27>  ¤¨áª¥ ­¥â ᢮¡®¤­®£® ¬¥áâ  (8)',0>,\
ru,<'’ ¡«¨æ  FAT ã­¨ç⮦¥­  (9)',0>,\ lszc s_fs_error,b,\
ru,<'„®áâ㯠§ ¯à¥éñ­ (10)',0>,\ ru_RU,<'Ž¯¥à æ¨ï § ¢¥à襭  ãᯥ譮 (0)',0>,\
ru,<'Žè¨¡ª  ãáâனá⢠ (11)',0>,\ ru_RU,<'',0>,\
\ ru_RU,<'”ã­ªæ¨ï ­¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ­­®© ä ©«®¢®© á¨á⥬ë (2)',0>,\
en,<'Operation executed successfully (0)',0>,\ ru_RU,<'<27>¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬  (3)',0>,\
en,<'',0>,\ ru_RU,<'',0>,\
en,<'Function is not supported for the given filesystem (2)',0>,\ ru_RU,<'<27>¥¢®§¬®¦­® ®âªàëâì ä ©« (5)',0>,\
en,<'Unknown filesystem (3)',0>,\ ru_RU,<'Ž¯¥à æ¨ï § ¢¥à襭  ãᯥ譮 (6)',0>,\
en,<'',0>,\ ru_RU,<'€¤à¥á ­ å®¤¨âáï §  £à ­¨æ ¬¨ ¯ ¬ï⨠¯à®£à ¬¬ë (7)',0>,\
en,<'Unable to open file (5)',0>,\ ru_RU,<'<27>  ¤¨áª¥ ­¥â ᢮¡®¤­®£® ¬¥áâ  (8)',0>,\
en,<'Operation executed successfully (6)',0>,\ ru_RU,<'’ ¡«¨æ  FAT ã­¨ç⮦¥­  (9)',0>,\
en,<'Pointer lies outside of application memory (7)',0>,\ ru_RU,<'„®áâ㯠§ ¯à¥éñ­ (10)',0>,\
en,<'Disk is full (8)',0>,\ ru_RU,<'Žè¨¡ª  ãáâனá⢠ (11)',0>,\
en,<'FAT table is destroyed (9)',0>,\ \
en,<'Access denied (10)',0>,\ en_US,<'Operation executed successfully (0)',0>,\
en,<'Device error (11)',0>,\ en_US,<'',0>,\
\ en_US,<'Function is not supported for the given filesystem (2)',0>,\
it,<'Operazione eseguita correttamente (0)',0>,\ en_US,<'Unknown filesystem (3)',0>,\
it,<'',0>,\ en_US,<'',0>,\
it,<'La funzione non e supportata per il file system specificato (2)', 0>, \ en_US,<'Unable to open file (5)',0>,\
it,<'Unknown filesystem (3)',0>,\ en_US,<'Operation executed successfully (6)',0>,\
it,<'',0>,\ en_US,<'Pointer lies outside of application memory (7)',0>,\
it,<'Impossibile aprire il file (5)',0>,\ en_US,<'Disk is full (8)',0>,\
it,<'Operazione eseguita correttamente (6)',0>,\ en_US,<'FAT table is destroyed (9)',0>,\
it,<'Il puntatore si trova al di fuori della memoria dell',96,'applicazione (7)', 0>, \ en_US,<'Access denied (10)',0>,\
it,<'Il disco e pieno (8)',0>,\ en_US,<'Device error (11)',0>,\
it,<'La tabella FAT e distrutta (9)',0>,\ \
it,<'Accesso negato (10)',0>,\ it_IT,<'Operazione eseguita correttamente (0)',0>,\
it,<'Errore dispositivo (11)',0>,\ it_IT,<'',0>,\
\ it_IT,<'La funzione non e supportata per il file system specificato (2)', 0>, \
et,<'Operatsioon käivitati edukalt (0)',0>,\ it_IT,<'Unknown filesystem (3)',0>,\
et,<'',0>,\ it_IT,<'',0>,\
et,<'Failisüsteem ei toeta funktsiooni (2)',0>,\ it_IT,<'Impossibile aprire il file (5)',0>,\
et,<'Tundmatu failisüsteem (3)',0>,\ it_IT,<'Operazione eseguita correttamente (6)',0>,\
et,<'',0>,\ it_IT,<'Il puntatore si trova al di fuori della memoria dell',96,'applicazione (7)', 0>, \
et,<'Faili ei suudetud avada (5)',0>,\ it_IT,<'Il disco e pieno (8)',0>,\
et,<'Operatsioon käivitatud edukalt (6)',0>,\ it_IT,<'La tabella FAT e distrutta (9)',0>,\
et,<'Viit on väljaspool programmi mälu (7)',0>,\ it_IT,<'Accesso negato (10)',0>,\
et,<'Ketas täis (8)',0>,\ it_IT,<'Errore dispositivo (11)',0>,\
et,<'FAT tabel hävitatud (9)',0>,\ \
et,<'Juurdepääs keelatud (10)',0>,\ et_EE,<'Operatsioon käivitati edukalt (0)',0>,\
et,<'Seadme viga (11)',0>,\ et_EE,<'',0>,\
\ et_EE,<'Failisüsteem ei toeta funktsiooni (2)',0>,\
sp,<'Operación ejecutada correctamente (0)',0>,\ et_EE,<'Tundmatu failisüsteem (3)',0>,\
sp,<'',0>,\ et_EE,<'',0>,\
sp,<'La función no está soportada por el sistema de archivos dado (2)',0>,\ et_EE,<'Faili ei suudetud avada (5)',0>,\
sp,<'Sistema de archivos desconocido (3)',0>,\ et_EE,<'Operatsioon käivitatud edukalt (6)',0>,\
sp,<'',0>,\ et_EE,<'Viit on väljaspool programmi mälu (7)',0>,\
sp,<'No es posible abrir el archivo (5)',0>,\ et_EE,<'Ketas täis (8)',0>,\
sp,<'Operación ejecutada correctamente (6)',0>,\ et_EE,<'FAT tabel hävitatud (9)',0>,\
sp,<'El puntero está fuera de la memoria de la aplicación (7)',0>,\ et_EE,<'Juurdepääs keelatud (10)',0>,\
sp,<'El disco está lleno (8)',0>,\ et_EE,<'Seadme viga (11)',0>,\
sp,<'La tabla FAT está destruida (9)',0>,\ \
sp,<'Acceso denegado (10)',0>,\ es_ES,<'Operación ejecutada correctamente (0)',0>,\
sp,<'Error de dispositivo (11)',0> es_ES,<'',0>,\
es_ES,<'La función no está soportada por el sistema de archivos dado (2)',0>,\
lszc s_appearance,b,\ es_ES,<'Sistema de archivos desconocido (3)',0>,\
ru,'’¥ªáâ',\ es_ES,<'',0>,\
ru,'”®­',\ es_ES,<'No es posible abrir el archivo (5)',0>,\
ru,'’¥ªá⠢뤥«¥­¨ï',\ es_ES,<'Operación ejecutada correctamente (6)',0>,\
ru,'”®­ ¢ë¤¥«¥­¨ï',\ es_ES,<'El puntero está fuera de la memoria de la aplicación (7)',0>,\
ru,'‘¨¬¢®«ë',\ es_ES,<'El disco está lleno (8)',0>,\
ru,'—¨á« ',\ es_ES,<'La tabla FAT está destruida (9)',0>,\
ru,'‘âப¨',\ es_ES,<'Acceso denegado (10)',0>,\
ru,'Š®¬¬¥­â à¨¨',\ es_ES,<'Error de dispositivo (11)',0>
ru,'ˆ§¬¥­ñ­ë¥ áâப¨',\
ru,'‘®åà ­ñ­­ë¥ áâப¨',\ lszc s_appearance,b,\
\ ru_RU,'’¥ªáâ',\
en,'Text',\ ru_RU,'”®­',\
en,'Background',\ ru_RU,'’¥ªá⠢뤥«¥­¨ï',\
en,'Selection text',\ ru_RU,'”®­ ¢ë¤¥«¥­¨ï',\
en,'Selection background',\ ru_RU,'‘¨¬¢®«ë',\
en,'Symbols',\ ru_RU,'—¨á« ',\
en,'Numbers',\ ru_RU,'‘âப¨',\
en,'Strings',\ ru_RU,'Š®¬¬¥­â à¨¨',\
en,'Comments',\ ru_RU,'ˆ§¬¥­ñ­ë¥ áâப¨',\
en,'Modified lines',\ ru_RU,'‘®åà ­ñ­­ë¥ áâப¨',\
en,'Saved lines',\ \
\ en_US,'Text',\
it,'Testo',\ en_US,'Background',\
it,'Sfondo',\ en_US,'Selection text',\
it,'Testo di selezione',\ en_US,'Selection background',\
it,'Sfondo di selezione',\ en_US,'Symbols',\
it,'Simboli',\ en_US,'Numbers',\
it,'Numeri',\ en_US,'Strings',\
it,'Stringhe',\ en_US,'Comments',\
it,'Commenti',\ en_US,'Modified lines',\
it,'Linee modificate',\ en_US,'Saved lines',\
it,'Linee salvate',\ \
\ it_IT,'Testo',\
et,'Tekst',\ it_IT,'Sfondo',\
et,'Taust',\ it_IT,'Testo di selezione',\
et,'Valitud tekst',\ it_IT,'Sfondo di selezione',\
et,'Valitud taust',\ it_IT,'Simboli',\
et,'Sümbolid',\ it_IT,'Numeri',\
et,'Numbrid',\ it_IT,'Stringhe',\
et,'Stringid',\ it_IT,'Commenti',\
et,'Kommentaarid',\ it_IT,'Linee modificate',\
et,'Muudetud read',\ it_IT,'Linee salvate',\
et,'Salvestatud read',\ \
\ et_EE,'Tekst',\
sp,'Texto',\ et_EE,'Taust',\
sp,'Fondo',\ et_EE,'Valitud tekst',\
sp,'Texto de selección',\ et_EE,'Valitud taust',\
sp,'Fondo de selección',\ et_EE,'Sümbolid',\
sp,'Símbolos',\ et_EE,'Numbrid',\
sp,'Números',\ et_EE,'Stringid',\
sp,'Cadenas',\ et_EE,'Kommentaarid',\
sp,'Comentarios',\ et_EE,'Muudetud read',\
sp,'Líneas modificadas',\ et_EE,'Salvestatud read',\
sp,'Líneas guardadas' \
es_ES,'Texto',\
lsz sysfuncs_filename,\ es_ES,'Fondo',\
ru,<'SYSFUNCR.TXT',0>,\ es_ES,'Texto de selección',\
en,<'SYSFUNCS.TXT',0>,\ es_ES,'Fondo de selección',\
it,<'SYSFUNCS.TXT',0>,\ es_ES,'Símbolos',\
et,<'SYSFUNCET.TXT',0>,\ es_ES,'Números',\
sp,<'SYSFUNCS.TXT',0> es_ES,'Cadenas',\
es_ES,'Comentarios',\
sz s_example,'/sys/example.asm' es_ES,'Líneas modificadas',\
sz s_still ,'still' es_ES,'Líneas guardadas'
lsz sysfuncs_filename,\
ru_RU,<'SYSFUNCR.TXT',0>,\
en_US,<'SYSFUNCS.TXT',0>,\
it_IT,<'SYSFUNCS.TXT',0>,\
et_EE,<'SYSFUNCET.TXT',0>,\
es_ES,<'SYSFUNCS.TXT',0>
sz s_example,'/sys/example.asm'
sz s_still ,'still'

View File

@ -8,7 +8,7 @@
; ; ; ;
; On base SYSTREE FILE COPIER 1.02 ; ; On base SYSTREE FILE COPIER 1.02 ;
; Ivan Poddubny ivan-yar@bk.ru ; ; Ivan Poddubny ivan-yar@bk.ru ;
; ; ; ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;„ ­­ ï ¯à®£  ¥é¥ áëà ï ¨ £«îç­ ï ­® 㦥 ª®¥ ª ª à ¡®â ¥â ;„ ­­ ï ¯à®£  ¥é¥ áëà ï ¨ £«îç­ ï ­® 㦥 ª®¥ ª ª à ¡®â ¥â
@ -23,11 +23,11 @@
dd 0x10000 ; esp dd 0x10000 ; esp
dd param_area , 0x0 ; I_Param , I_Icon dd param_area , 0x0 ; I_Param , I_Icon
include 'lang.inc' include 'lang.inc' ; Language support for locales: ru_RU (CP866), en_US.
include '..\..\..\macros.inc' ; very useful stuff for MeOS include '..\..\..\macros.inc' ; very useful stuff for MeOS
include 'ascl.inc' include 'ascl.inc'
START: ; start of execution START: ; start of execution
; <20> à ¬¥âàë: ; <20> à ¬¥âàë:
; db n1 = ¤«¨­  ¯ã⨠ª ¨áâ®ç­¨ªã ; db n1 = ¤«¨­  ¯ã⨠ª ¨áâ®ç­¨ªã
@ -187,7 +187,7 @@ draw_window:
mov edi,labelt ; WINDOW LABEL mov edi,labelt ; WINDOW LABEL
mcall mcall
mov eax,8 mov eax,8
mov ebx,105*65536+290 mov ebx,105*65536+290
mov ecx,33*65536+12 mov ecx,33*65536+12
@ -264,12 +264,13 @@ errors:
db "(§ ¯¨áì) ­¥¨§¢¥áâ­ ï ®è¨¡ª  " db "(§ ¯¨áì) ­¥¨§¢¥áâ­ ï ®è¨¡ª  "
db "<22>ãâì ª ¨áâ®ç­¨ªã ¨ ¯à¨¥¬­¨ªã ­¥ 㪠§ ­ë!!! " db "<22>ãâì ª ¨áâ®ç­¨ªã ¨ ¯à¨¥¬­¨ªã ­¥ 㪠§ ­ë!!! "
db "<22>ãâì ª ¯à¨¥¬­¨ªã ­¥ 㪠§ ­!!! " db "<22>ãâì ª ¯à¨¥¬­¨ªã ­¥ 㪠§ ­!!! "
else
else ; Default to en_US
text: text:
db 'SOURCE: | ' db 'SOURCE: | '
db 'DESTINATION: | ' db 'DESTINATION: | '
db ' ' db ' '
db 'x' ; <- END MARKER, DONT DELETE db 'x' ; <- END MARKER, DO NOT DELETE
labelt: labelt:
db 'SYSTREE FILE COPIER' db 'SYSTREE FILE COPIER'
labellen: labellen:
@ -292,6 +293,7 @@ errors:
db "(write) unknown error " db "(write) unknown error "
db "Path to source is not given!!! " db "Path to source is not given!!! "
db "Path to destination is not given!!! " db "Path to destination is not given!!! "
end if end if
;0123456789012345678901234567890123456789012 ;0123456789012345678901234567890123456789012

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,490 +1,490 @@
; ;
; The famous game 15 ; The famous game 15
; Author: Lloyd, coded by Ivushkin Andrey ; Author: Lloyd, coded by Ivushkin Andrey
; Compile with FASM ; Compile with FASM
; ;
include 'lang.inc' include 'lang.inc' ; Language support for locales: ru_RU (CP866), it_IT, de_DE, en_US.
include '..\..\..\macros.inc' ; decreases program size (not required) include '..\..\..\macros.inc' ; decreases program size (not required)
StatusColor equ 0x00ffffff StatusColor equ 0x00ffffff
StatusColor2 equ 0x00dc1e14 StatusColor2 equ 0x00dc1e14
BgdColor equ 0x14aabbcc BgdColor equ 0x14aabbcc
; Main window dimensions ; Main window dimensions
XXwindow equ 200 shl 16+276 XXwindow equ 200 shl 16+276
YYwindow equ 200 shl 16+300 YYwindow equ 200 shl 16+300
; Status bar ; Status bar
XYstatus equ 35 shl 16+283 XYstatus equ 35 shl 16+283
XXbar equ 35 shl 16+136 XXbar equ 35 shl 16+136
YYbar equ 280 shl 16+15 YYbar equ 280 shl 16+15
; Buttons ; Buttons
BtnTop equ 28 BtnTop equ 28
BtnLeft equ 13 BtnLeft equ 13
BtnSize equ 60 BtnSize equ 60
BtnColor equ 0xafbb55 BtnColor equ 0xafbb55
BtnColor2 equ 0x0228c314 BtnColor2 equ 0x0228c314
NumColor equ 0x10000000 NumColor equ 0x10000000
; Number shifting for nice look ; Number shifting for nice look
NumShift equ 23 shl 16+23 NumShift equ 23 shl 16+23
NumShift2 equ 4 shl 16 NumShift2 equ 4 shl 16
; Shuffle button ; Shuffle button
XXSh equ 202 shl 16+60 XXSh equ 202 shl 16+60
YYSh equ 280 shl 16+12 YYSh equ 280 shl 16+12
XYShText equ 212 shl 16+283 XYShText equ 212 shl 16+283
; Conf button ; Conf button
XXCnf equ 13 shl 16+13 XXCnf equ 13 shl 16+13
YYCnf equ 280 shl 16+12 YYCnf equ 280 shl 16+12
XYCnfText equ 18 shl 16+283 XYCnfText equ 18 shl 16+283
; Position of the 'hole' ; Position of the 'hole'
null equ (curconf+16) null equ (curconf+16)
; Amount of moves to perform shuffle ; Amount of moves to perform shuffle
SH_CYCLES equ 400 SH_CYCLES equ 400
; (Amount of tasks)-1 ; (Amount of tasks)-1
CONF_COUNT equ 2 CONF_COUNT equ 2
use32 use32
org 0x0 org 0x0
db 'MENUET01' db 'MENUET01'
dd 0x01 dd 0x01
dd START dd START
dd I_END dd I_END
dd 0x2000 ; 8 Kb dd 0x2000 ; 8 Kb
dd 0x2000 dd 0x2000
dd 0x0 dd 0x0
dd 0x0 dd 0x0
START: START:
mov [cptr],CONF_COUNT ; number of task mov [cptr],CONF_COUNT ; number of task
mov eax,3 mov eax,3
mcall mcall
mov cl,16 mov cl,16
ror eax,cl ror eax,cl
mov [generator],eax ; random generator from Tetris mov [generator],eax ; random generator from Tetris
init: init:
mov ecx,17 mov ecx,17
movzx eax,[cptr] movzx eax,[cptr]
inc eax inc eax
cmp eax,CONF_COUNT cmp eax,CONF_COUNT
jna init_ok jna init_ok
xor eax,eax ; cycling 0..CONF_COUNT xor eax,eax ; cycling 0..CONF_COUNT
init_ok: init_ok:
mov [cptr],al mov [cptr],al
mov esi,eax mov esi,eax
shl esi,4 shl esi,4
add esi,conf add esi,conf
add esi,eax add esi,eax
add al,0x31 add al,0x31
mov [txtTitle+17],al ;task number to program title mov [txtTitle+17],al ;task number to program title
mov [task],esi mov [task],esi
mov edi,curconf mov edi,curconf
rep movsb ; initial configuration rep movsb ; initial configuration
mov [sts],4 mov [sts],4
jmp red jmp red
SHUF: SHUF:
call shuffle ; immediate shuffle call shuffle ; immediate shuffle
red: ; window redraw red: ; window redraw
call draw_window call draw_window
still: ; MAIN PROGRAM CYCLE still: ; MAIN PROGRAM CYCLE
mov eax,10 ; wait for event mov eax,10 ; wait for event
mcall mcall
cmp eax,1 ; redraw? - cmp eax,1 ; redraw? -
je red ; goto red je red ; goto red
cmp eax,2 ; key pressed? - cmp eax,2 ; key pressed? -
je key ; goto key je key ; goto key
cmp eax,3 ; button pressed? - cmp eax,3 ; button pressed? -
je button ; goto button je button ; goto button
jmp still ; no more events to process jmp still ; no more events to process
key: ; Key pressed key: ; Key pressed
mov eax,2 mov eax,2
mcall mcall
shr eax,8 shr eax,8
cmp eax,32 ; <Space> = Shuffle cmp eax,32 ; <Space> = Shuffle
je SHUF je SHUF
cmp eax,13 ; <Enter> = Choose task cmp eax,13 ; <Enter> = Choose task
je init je init
cmp eax,176 cmp eax,176
jl still jl still
sub eax,176 sub eax,176
cmp eax,3 cmp eax,3
ja still ja still
movzx eax,byte [eax+correct] ; 'delta' value from correct[] movzx eax,byte [eax+correct] ; 'delta' value from correct[]
jmp m_check jmp m_check
button: ; Button pressed button: ; Button pressed
mov eax,17 mov eax,17
mcall mcall
shr eax,8 shr eax,8
sub eax,2 sub eax,2
cmp eax,-1 ; id == 1 (closeme)? cmp eax,-1 ; id == 1 (closeme)?
jne noclose jne noclose
mcall mcall
noclose: noclose:
jl SHUF ; Shuffle (id=0) pressed jl SHUF ; Shuffle (id=0) pressed
cmp eax,18 cmp eax,18
je init ; Conf button pressed je init ; Conf button pressed
sub al,byte [null] sub al,byte [null]
mov edi,correct mov edi,correct
mov ecx,4 mov ecx,4
repne scasb ; checking for valid move-part 1 repne scasb ; checking for valid move-part 1
jne fail jne fail
m_check: m_check:
cmp byte[sts],4 ; puzzle completed, blocking buttons cmp byte[sts],4 ; puzzle completed, blocking buttons
ja still ja still
call move_check ; checking for valid move-part 2 call move_check ; checking for valid move-part 2
jnc fail jnc fail
inc [move_count] inc [move_count]
call draw_moves call draw_moves
fail: fail:
jmp still ; ¢®§¢à é ¥¬áï jmp still ; ¢®§¢à é ¥¬áï
; ******************************* ; *******************************
; ******* WINDOW DRAWING ******* ; ******* WINDOW DRAWING *******
; ******************************* ; *******************************
draw_window: draw_window:
mcall 12, 1 ; begin draw mcall 12, 1 ; begin draw
mcall 0, XXwindow, YYwindow, BgdColor,, txtTitle ; CREATING WINDOW mcall 0, XXwindow, YYwindow, BgdColor,, txtTitle ; CREATING WINDOW
mov eax,8 ; SHUFFLE BUTTON mov eax,8 ; SHUFFLE BUTTON
mov ebx,XXSh mov ebx,XXSh
mov ecx,YYSh mov ecx,YYSh
xor edx,edx xor edx,edx
mov esi,BtnColor mov esi,BtnColor
mcall mcall
mov ebx,XXCnf ; CONF BUTTON mov ebx,XXCnf ; CONF BUTTON
mov ecx,YYCnf mov ecx,YYCnf
mov edx,20 mov edx,20
;mov esi,BtnColor ;mov esi,BtnColor
mcall mcall
mov ebx, XYShText ; SHUFFLE TEXT mov ebx, XYShText ; SHUFFLE TEXT
mov ecx, StatusColor mov ecx, StatusColor
mov edx,txtSh mov edx,txtSh
mov esi,lenSh-txtSh mov esi,lenSh-txtSh
mov eax,4 mov eax,4
mcall mcall
mov ebx, XYCnfText ; CONF TEXT mov ebx, XYCnfText ; CONF TEXT
mov edx,lenVictory-1 mov edx,lenVictory-1
mov esi,1 mov esi,1
mcall mcall
mov ecx, 16 ; FIELD BUTTONS mov ecx, 16 ; FIELD BUTTONS
dbut: dbut:
call draw_button call draw_button
loop dbut loop dbut
call draw_moves call draw_moves
mcall 12, 2 ; end of drawing mcall 12, 2 ; end of drawing
ret ret
; ********************************************* ; *********************************************
; ******* DRAWING A FIELD BUTTON ************** ; ******* DRAWING A FIELD BUTTON **************
; ********************************************* ; *********************************************
; ECX - button number ; ECX - button number
draw_button: draw_button:
pusha pusha
dec ecx dec ecx
; calculating button dimensions ; calculating button dimensions
mov edi, ecx mov edi, ecx
lea edx,[ecx+2] lea edx,[ecx+2]
mov ebx,ecx mov ebx,ecx
and ebx,11b and ebx,11b
shr ecx,2 shr ecx,2
imul ebx,BtnSize+3 imul ebx,BtnSize+3
add ebx,BtnLeft add ebx,BtnLeft
shl ebx,16 shl ebx,16
add ebx,BtnSize add ebx,BtnSize
imul ecx,BtnSize+3 imul ecx,BtnSize+3
add ecx,BtnTop add ecx,BtnTop
shl ecx,16 shl ecx,16
add ecx,BtnSize add ecx,BtnSize
movzx eax,byte [null] movzx eax,byte [null]
cmp eax,edi cmp eax,edi
jne no_hole jne no_hole
pusha pusha
inc ebx inc ebx
inc ecx inc ecx
mov edx,BgdColor mov edx,BgdColor
mov eax,13 ; clearing - 'hole' mov eax,13 ; clearing - 'hole'
mcall mcall
popa popa
or edx,0x80000000 ; and removing button under it or edx,0x80000000 ; and removing button under it
no_hole: no_hole:
mov al,byte[edi+curconf] mov al,byte[edi+curconf]
mov esi,[task] mov esi,[task]
cmp al,byte[edi+esi] cmp al,byte[edi+esi]
je highlight je highlight
mov esi,BtnColor mov esi,BtnColor
jmp s_rbutton jmp s_rbutton
highlight: highlight:
mov esi,BtnColor2 mov esi,BtnColor2
s_rbutton: s_rbutton:
mov eax,8 ; set/remove button mov eax,8 ; set/remove button
mcall mcall
movzx eax,byte [null] movzx eax,byte [null]
cmp eax,edi cmp eax,edi
je no_text ; no digits - that's hole je no_text ; no digits - that's hole
mov edx,ebx mov edx,ebx
shr ecx,16 shr ecx,16
mov dx,cx mov dx,cx
add edx,NumShift add edx,NumShift
mov ebx,0x20000 mov ebx,0x20000
movzx ecx,byte [edi+curconf] movzx ecx,byte [edi+curconf]
cmp ecx,9 cmp ecx,9
ja two_num ja two_num
add edx,NumShift2 ; shift to center digits add edx,NumShift2 ; shift to center digits
sub ebx,0x10000 sub ebx,0x10000
two_num: two_num:
mov esi,NumColor mov esi,NumColor
mov eax,47 mov eax,47
mcall mcall
no_text: no_text:
popa popa
ret ret
; ********************************************* ; *********************************************
; ******* DRAWING STATUS LINE ***************** ; ******* DRAWING STATUS LINE *****************
; ********************************************* ; *********************************************
draw_moves: draw_moves:
mov eax, 13 ; clear area mov eax, 13 ; clear area
mov ebx, XXbar mov ebx, XXbar
mov ecx, YYbar mov ecx, YYbar
mov edx, BgdColor mov edx, BgdColor
mcall mcall
mov eax, 4 mov eax, 4
mov ebx, XYstatus mov ebx, XYstatus
mov ecx, StatusColor mov ecx, StatusColor
cmp ax, [sts] cmp ax, [sts]
jl report_victory jl report_victory
jne report_moves jne report_moves
mov edx,txtCnf ; prompt to choose configuration mov edx,txtCnf ; prompt to choose configuration
mov esi,lenCnf-txtCnf mov esi,lenCnf-txtCnf
jmp e_dm jmp e_dm
report_moves: report_moves:
mov edx,txtMoves ; how many moves done mov edx,txtMoves ; how many moves done
mov esi,lenMoves-txtMoves mov esi,lenMoves-txtMoves
mov eax,4 mov eax,4
mcall mcall
mov esi,ecx mov esi,ecx
mov edx,ebx mov edx,ebx
add edx, 40 shl 16 add edx, 40 shl 16
mov ebx,0x030000 mov ebx,0x030000
movzx ecx, byte[move_count] movzx ecx, byte[move_count]
mov eax,47 mov eax,47
jmp e_dm jmp e_dm
report_victory: ; puzzle completed report_victory: ; puzzle completed
mov ecx,StatusColor2 mov ecx,StatusColor2
mov edx,txtVictory mov edx,txtVictory
mov esi,lenVictory-txtVictory mov esi,lenVictory-txtVictory
e_dm: e_dm:
mcall mcall
ret ret
; ********************************************* ; *********************************************
; ********* SHUFFLE *************************** ; ********* SHUFFLE ***************************
; ********************************************* ; *********************************************
shuffle: shuffle:
xor eax,eax xor eax,eax
mov [sts],ax mov [sts],ax
mov [move_count],ax ; reset moves to 0 mov [move_count],ax ; reset moves to 0
mov [sh_off],al mov [sh_off],al
mov eax, [generator] mov eax, [generator]
mov ecx,SH_CYCLES mov ecx,SH_CYCLES
sh_cycle: sh_cycle:
sub eax,0x43ab45b5 ; next random number sub eax,0x43ab45b5 ; next random number
ror eax,1 ror eax,1
xor eax,0x32c4324f xor eax,0x32c4324f
ror eax,1 ror eax,1
mov [generator],eax mov [generator],eax
push eax push eax
and eax,11b ; direction 0..3 and eax,11b ; direction 0..3
movzx eax,byte [eax+correct] movzx eax,byte [eax+correct]
call move_check call move_check
pop eax pop eax
jnc sh_cycle ; if fails then retry jnc sh_cycle ; if fails then retry
loop sh_cycle loop sh_cycle
inc byte[sh_off] ; shuffling complete inc byte[sh_off] ; shuffling complete
ret ret
; ********************************************* ; *********************************************
; ********* MOVE VALIDITY CHECK *************** ; ********* MOVE VALIDITY CHECK ***************
; ********************************************* ; *********************************************
; AL - 'DELTA' DIRECTION ; AL - 'DELTA' DIRECTION
move_check: move_check:
pusha pusha
mov ah,byte [null] mov ah,byte [null]
mov bx,ax mov bx,ax
cmp bh,3 cmp bh,3
ja no_top ja no_top
cmp al,-4 ; top of field cmp al,-4 ; top of field
je no_move je no_move
no_top: no_top:
cmp bh,12 cmp bh,12
jb no_bottom jb no_bottom
cmp al,4 ; bottom of field cmp al,4 ; bottom of field
je no_move je no_move
no_bottom: no_bottom:
and bh,11b and bh,11b
cmp bh,0 cmp bh,0
jnz no_left jnz no_left
cmp al,-1 ; left of field cmp al,-1 ; left of field
je no_move je no_move
no_left: no_left:
cmp bh,11b cmp bh,11b
jnz ok jnz ok
cmp al,1 ; right of field cmp al,1 ; right of field
je no_move je no_move
ok: ok:
mov bx,ax mov bx,ax
add bh,bl ; bh-new hole add bh,bl ; bh-new hole
mov byte [null],bh mov byte [null],bh
movzx ecx,ah movzx ecx,ah
mov al,byte[ecx+curconf] mov al,byte[ecx+curconf]
movzx edx,bh movzx edx,bh
mov bl,byte[edx+curconf] ; swapping button & hole mov bl,byte[edx+curconf] ; swapping button & hole
mov byte[ecx+curconf],bl mov byte[ecx+curconf],bl
mov byte[edx+curconf],al mov byte[edx+curconf],al
cmp byte[sh_off],0 ; if shuffle in progress, cmp byte[sh_off],0 ; if shuffle in progress,
jz no_win ; then no redraw jz no_win ; then no redraw
; drawing button & hole ; drawing button & hole
inc ecx inc ecx
call draw_button call draw_button
movzx ecx,bh movzx ecx,bh
inc ecx inc ecx
call draw_button call draw_button
; testing if task completed ; testing if task completed
mov esi,[task] mov esi,[task]
mov edi,curconf mov edi,curconf
mov ecx,16 mov ecx,16
repe cmpsb repe cmpsb
cmp ecx,0 cmp ecx,0
jne no_win jne no_win
mov word[sts],6 ; puzzle done. Victory! mov word[sts],6 ; puzzle done. Victory!
no_win: no_win:
popa popa
stc stc
ret ret
no_move: no_move:
popa popa
clc clc
ret ret
; this is deprecated debug routine ; this is deprecated debug routine
;ud: ;ud:
; ud2 ; ud2
; These are data used by program ; These are data used by program
correct db 1,-4,4,-1 correct db 1,-4,4,-1
conf db 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,15 conf db 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,15
db 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0 db 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0
db 1,2,3,4,12,13,14,5,11,0,15,6,10,9,8,7,9 db 1,2,3,4,12,13,14,5,11,0,15,6,10,9,8,7,9
txtMoves: txtMoves:
if lang eq ru_RU if lang eq ru_RU
db '•®¤®¢:' db '•®¤®¢:'
else if lang eq it_IT else if lang eq it_IT
db 'Movimenti:' db 'Movimenti:'
else if lang eq de_DE else if lang eq de_DE
db 'Bewegungen:' db 'Bewegungen:'
else else ; Default to en_US
db 'Moves:' db 'Moves:'
end if end if
lenMoves: lenMoves:
txtSh: txtSh:
if lang eq ru_RU if lang eq ru_RU
db '’ á®¢ª ' db '’ á®¢ª '
else if lang eq it_IT else if lang eq it_IT
db 'Mischia' db 'Mischia'
else if lang eq de_DE else if lang eq de_DE
db 'Mischen' db 'Mischen'
else else ; Default to en_US
db 'Shuffle' db 'Shuffle'
end if end if
lenSh: lenSh:
txtCnf: txtCnf:
if lang eq ru_RU if lang eq ru_RU
db '‚ë¡¥à¨â¥ § ¤ çã ¨ ­ ¦¬¨â¥->' db '‚ë¡¥à¨â¥ § ¤ çã ¨ ­ ¦¬¨â¥->'
else if lang eq it_IT else if lang eq it_IT
db 'Seleziona un compito, poi premi->' db 'Seleziona un compito, poi premi->'
else if lang eq de_DE else if lang eq de_DE
db 'Waehle eine Aufgabe, dann clicke au->' db 'Waehle eine Aufgabe, dann clicke au->'
else else ; Default to en_US
db 'Select task, then press ->' db 'Select task, then press ->'
end if end if
lenCnf: lenCnf:
txtTitle: ; áâப  § £®«®¢ª  txtTitle: ; áâப  § £®«®¢ª 
if lang eq ru_RU if lang eq ru_RU
db 'ˆ£à  15 - § ¤ ç  X', 0 db 'ˆ£à  15 - § ¤ ç  X', 0
else if lang eq it_IT else if lang eq it_IT
db 'Gioco del quindici - partita X', 0 db 'Gioco del quindici - partita X', 0
else if lang eq de_DE else if lang eq de_DE
db '15-Puzzle - Spiel X', 0 db '15-Puzzle - Spiel X', 0
else else ; Default to en_US
db 'Game 15 - puzzle X', 0 db 'Game 15 - puzzle X', 0
end if end if
txtVictory: txtVictory:
if lang eq ru_RU if lang eq ru_RU
db '‚ë à¥è¨«¨ § ¤ çã! <20> ¦¬¨â¥->' db '‚ë à¥è¨«¨ § ¤ çã! <20> ¦¬¨â¥->'
else if lang eq it_IT else if lang eq it_IT
db 'Gioco completato! Premi ->' db 'Gioco completato! Premi ->'
else if lang eq de_DE else if lang eq de_DE
db 'Spiel beendet! Druecken sie auf ->' db 'Spiel beendet! Druecken sie auf ->'
else else ; Default to en_US
db 'Puzzle completed! Press->' db 'Puzzle completed! Press->'
end if end if
lenVictory: lenVictory:
arrow equ lenVictory-2 arrow equ lenVictory-2
I_END: ; ª®­¥æ ¯à®£à ¬¬ë I_END: ; ª®­¥æ ¯à®£à ¬¬ë
;null db ? ;null db ?
move_count dw ? move_count dw ?
cptr db ? cptr db ?
sts dw ? sts dw ?
sh_off db ? sh_off db ?
task dd ? task dd ?
generator dd ? generator dd ?
curconf: curconf:

View File

@ -1,93 +1,97 @@
include 'lang.inc' include 'lang.inc' ; Language support for locales: ru_RU (CP866), en_US.
struc langstr [lng, data] ; FIXME:
{ ; This translation mechanism should fallback to en_US if the language
if lang eq lng ; is unlisted (e.g. es_ES). Either fix the macros or use a different method.
sz ., data ; The problem doesn't manifest, as we only bundle Dungeons in the RU distro.
end if struc langstr [lng, data]
} {
if lang eq lng
struc langstr0 [lng, data] sz ., data
{ end if
if lang eq lng }
sz0 ., data
end if struc langstr0 [lng, data]
} {
if lang eq lng
include 'AKODE/data.inc' sz0 ., data
include 'Resources/Textures/textures.inc' end if
include 'Resources/Levels/levels.inc' }
FULLSCREEN = 0 include 'AKODE/data.inc'
FSAA = 0 include 'Resources/Textures/textures.inc'
DISABLE_SHADING = 0 include 'Resources/Levels/levels.inc'
MOVEMENT_SPEED = BLOCK_BASE_SIZE + BLOCK_BASE_SIZE / 4 FULLSCREEN = 0
FSAA = 0
FIELD_OF_VIEW = 60 DISABLE_SHADING = 0
BLOCK_BASE_SIZE = 512
BLOCK_HEIGHT = 512 MOVEMENT_SPEED = BLOCK_BASE_SIZE + BLOCK_BASE_SIZE / 4
INVENTORY_SIZE = 10 FIELD_OF_VIEW = 60
BLOCK_BASE_SIZE = 512
HUD_PANEL_HEIGHT = 120 BLOCK_HEIGHT = 512
INVENTORY_X = 570 INVENTORY_SIZE = 10
INVENTORY_Y = 15
INVENTORY_PADDING_X = 10 HUD_PANEL_HEIGHT = 120
INVENTORY_PADDING_Y = 10
OBJECT_IMAGE_WIDTH = 40 INVENTORY_X = 570
OBJECT_IMAGE_HEIGHT = 40 INVENTORY_Y = 15
INVENTORY_PADDING_X = 10
GAME_MESSAGE_X = 150 + 15 INVENTORY_PADDING_Y = 10
GAME_MESSAGE_Y = 15 + 15 OBJECT_IMAGE_WIDTH = 40
GAME_MESSAGE_COLOR = 0E4E2ADh OBJECT_IMAGE_HEIGHT = 40
if FULLSCREEN GAME_MESSAGE_X = 150 + 15
;MAIN_WINDOW_X = 0 GAME_MESSAGE_Y = 15 + 15
;MAIN_WINDOW_Y = 0 GAME_MESSAGE_COLOR = 0E4E2ADh
;MAIN_WINDOW_WIDTH = 0FFFFh
;MAIN_WINDOW_HEIGHT = 0FFFFh if FULLSCREEN
MAIN_WINDOW_STYLE = (01000001b) shl 24 ;MAIN_WINDOW_X = 0
MAIN_WINDOW_STYLE2 = 1 shl 24 ;MAIN_WINDOW_Y = 0
else ;MAIN_WINDOW_WIDTH = 0FFFFh
MAIN_WINDOW_X = 20 ;MAIN_WINDOW_HEIGHT = 0FFFFh
MAIN_WINDOW_Y = 20 MAIN_WINDOW_STYLE = (01000001b) shl 24
MAIN_WINDOW_WIDTH = 960 ; client area width MAIN_WINDOW_STYLE2 = 1 shl 24
MAIN_WINDOW_HEIGHT = 712 ; client area height else
MAIN_WINDOW_STYLE = (01110100b) shl 24 MAIN_WINDOW_X = 20
MAIN_WINDOW_STYLE2 = 0 MAIN_WINDOW_Y = 20
end if MAIN_WINDOW_WIDTH = 960 ; client area width
MAIN_WINDOW_HEIGHT = 712 ; client area height
MAIN_EVENT_MASK = EVM_REDRAW or EVM_KEY or EVM_BUTTON or EVM_MOUSE or EVM_MOUSE_FILTER MAIN_WINDOW_STYLE = (01110100b) shl 24
MAIN_WINDOW_STYLE2 = 0
MAIN_WINDOW_TITLE langstr0 \ end if
en_US, 'Dungeons of Augastes 0.1', \
ru_RU, '<27>®¤§¥¬¥«ìï €ã£ áâ¥á  0.1' MAIN_EVENT_MASK = EVM_REDRAW or EVM_KEY or EVM_BUTTON or EVM_MOUSE or EVM_MOUSE_FILTER
LevelLoadingImageFile db 'Resources/Textures/HUD/LevelLoading.png', 0 MAIN_WINDOW_TITLE langstr0 \
HudPanelImageFile db 'Resources/Textures/HUD/Panel.png', 0 en_US, 'Dungeons of Augastes 0.1', \
DeathImageFile db 'Resources/Textures/HUD/Death.png', 0 ru_RU, '<27>®¤§¥¬¥«ìï €ã£ áâ¥á  0.1'
EndImageFile db 'Resources/Textures/HUD/End.png', 0
LevelLoadingImageFile db 'Resources/Textures/HUD/LevelLoading.png', 0
align 4 HudPanelImageFile db 'Resources/Textures/HUD/Panel.png', 0
LevelLoadingImagePtr dd 0 DeathImageFile db 'Resources/Textures/HUD/Death.png', 0
HudPanelImagePtr dd 0 EndImageFile db 'Resources/Textures/HUD/End.png', 0
DeathImagePtr dd 0
EndImagePtr dd 0 align 4
LevelLoadingImagePtr dd 0
ImageBufferPtr dd 0 HudPanelImagePtr dd 0
DeathImagePtr dd 0
HudPanelNeedsRedraw dd 0 EndImagePtr dd 0
GameMessage dd 0 ImageBufferPtr dd 0
GameStatus dd 0
HudPanelNeedsRedraw dd 0
GAME_STATUS.LEVEL_LOAD_FAILED = 1
GAME_STATUS.DEAD = 2 GameMessage dd 0
GAME_STATUS.END = 3 GameStatus dd 0
ACTION.DO_SOMETHING = AKODE_ACTION.CUSTOM + 1 GAME_STATUS.LEVEL_LOAD_FAILED = 1
ACTION.LOOK_AROUND = AKODE_ACTION.CUSTOM + 2 GAME_STATUS.DEAD = 2
ACTION.USE_OBJECT = AKODE_ACTION.CUSTOM + 3 GAME_STATUS.END = 3
ACTION.LOOK_AT_OBJECT = AKODE_ACTION.CUSTOM + 4
ACTION.DO_SOMETHING = AKODE_ACTION.CUSTOM + 1
ACTION.LOOK_AROUND = AKODE_ACTION.CUSTOM + 2
ACTION.USE_OBJECT = AKODE_ACTION.CUSTOM + 3
ACTION.LOOK_AT_OBJECT = AKODE_ACTION.CUSTOM + 4

View File

@ -4,7 +4,7 @@
; contact: 4nic8@casiocalc.org ; contact: 4nic8@casiocalc.org
;---------------------------------------- ;----------------------------------------
include 'lang.inc' include 'lang.inc' ; Language support for locales: it_IT, en_US.
include '../../../macros.inc' include '../../../macros.inc'
include 'ascl.inc' include 'ascl.inc'
include 'ascgl.inc' include 'ascgl.inc'
@ -142,7 +142,7 @@ still:
; ********************************************* ; *********************************************
show_screen: ; flips the virtual screen to the window show_screen: ; flips the virtual screen to the window
push_abc push_abc
mcall 7, screen, <X_SIZE, Y_SIZE>, 0 mcall 7, screen, <X_SIZE, Y_SIZE>, 0
pop_abc pop_abc
ret ret
@ -389,7 +389,7 @@ grad_fill_screen: ; eax - screen color ( 0x00RRGGBB ), ebx - mack
.no_ch: .no_ch:
pop ecx pop ecx
loop .lab1 loop .lab1
pop_abc pop_abc
ret ret
@ -409,7 +409,7 @@ intro: ; INTRO ;
jne @f jne @f
ret ret
@@: @@:
mcall 4,<115,150>,0x82050505,VERSION mcall 4,<115,150>,0x82050505,VERSION
mcall ,<125,180>,0x80050505,AUTHOR mcall ,<125,180>,0x80050505,AUTHOR
mcall ,<90,210>,0x81EE0800,PRESS_SPACE mcall ,<90,210>,0x81EE0800,PRESS_SPACE
@ -468,13 +468,13 @@ fast_gfx:
mov ebx,0xFFFF mov ebx,0xFFFF
.g_ok: .g_ok:
call grad_fill_screen call grad_fill_screen
;black_bg ;black_bg
;mov eax,0 ;mov eax,0
;mov ebx,0 ;mov ebx,0
;call fill_screen ;call fill_screen
mov eax,37 ; get mouse position mov eax,37 ; get mouse position
mov ebx,1 mov ebx,1
mcall mcall
@ -805,7 +805,7 @@ draw_window:
mcall 48,4 mcall 48,4
lea ecx, [100*65536+Y_SIZE+4+eax]; [y start] *65536 + [y size] + [skin_height] lea ecx, [100*65536+Y_SIZE+4+eax]; [y start] *65536 + [y size] + [skin_height]
mcall 0,<100,X_SIZE+9>,,0x74ffffff,,0 mcall 0,<100,X_SIZE+9>,,0x74ffffff,,0
mov eax, [lives] mov eax, [lives]
add eax, '0' add eax, '0'
mov esi, HEADER mov esi, HEADER
@ -836,7 +836,7 @@ if lang eq it_IT
THANKS_FOR_PLAYING db 'Grazie per aver giocato', 0 THANKS_FOR_PLAYING db 'Grazie per aver giocato', 0
PRESS_SPACE db 'Premi spazio per iniziare',0 PRESS_SPACE db 'Premi spazio per iniziare',0
LEVEL db 'LIVELLO',0 LEVEL db 'LIVELLO',0
else else ; Default to en_US
THANKS_FOR_PLAYING db 'Thanks for playing', 0 THANKS_FOR_PLAYING db 'Thanks for playing', 0
PRESS_SPACE db 'press SPACE to start',0 PRESS_SPACE db 'press SPACE to start',0
LEVEL db 'LEVEL',0 LEVEL db 'LEVEL',0

View File

@ -19,7 +19,7 @@
;****************************************************************************** ;******************************************************************************
include 'lang.inc' include 'lang.inc' ; Language support for locales: it_IT, en_US.
include '..\..\..\macros.inc' include '..\..\..\macros.inc'
include 'ascl.inc' include 'ascl.inc'
include 'ascgl.inc' include 'ascgl.inc'
@ -285,7 +285,7 @@ end_col:
cmp [delay_cnt],0 cmp [delay_cnt],0
jne no_delay jne no_delay
mov [delay_cnt],1 mov [delay_cnt],1
delay 1 ;don't generate delay for fast speed programm delay 1 ; don't generate delay for fast speed program
no_delay: no_delay:
dec [delay_cnt] dec [delay_cnt]
@ -297,9 +297,9 @@ win_test:
mov [againbut],1 mov [againbut],1
call draw_window call draw_window
; label 160,200,'You Win!',cl_Green+font_Big ; label 160,200,'You Win!',cl_Green+font_Big
; label 130,220,'Youre Score:',cl_Green+font_Big ; label 130,220,'Your Score:',cl_Green+font_Big
; outcount dword [scorea],230,220,cl_Green,5*65536 ; outcount dword [scorea],230,220,cl_Green,5*65536
; label 130,234,'Youre Lives:',cl_Green+font_Big ; label 130,234,'Your Lives:',cl_Green+font_Big
; outcount dword [scoreb],230,234,cl_Green,5*65536 ; outcount dword [scoreb],230,234,cl_Green,5*65536
; delay 600 ;wait 2sec ; delay 600 ;wait 2sec
; close ;exit from program ; close ;exit from program
@ -310,7 +310,7 @@ lose_test:
jne stl2 jne stl2
; call draw_window ; call draw_window
; label 160,200,'You Lose!',cl_Red+font_Big ; label 160,200,'You Lose!',cl_Red+font_Big
; label 130,220,'Youre Score:',cl_Red+font_Big ; label 130,220,'Your Score:',cl_Red+font_Big
; outcount dword [scorea],230,220,cl_Red,5*65536 ; outcount dword [scorea],230,220,cl_Red,5*65536
; delay 300 ;wait 2sec ; delay 300 ;wait 2sec
; close ;exit from program ; close ;exit from program
@ -420,7 +420,7 @@ draw_window:
window 0,0,400+8,480+24,window_Skinned window 0,0,400+8,480+24,window_Skinned
if lang eq it_IT if lang eq it_IT
label 12,8,'ARCANOID: Usa le freccie Vite Punti',cl_White+font_Big label 12,8,'ARCANOID: Usa le freccie Vite Punti',cl_White+font_Big
else else ; Default to en_US
label 12,8,'ARCANOID: USE ARROW KEYS LIVES SCORE',cl_White+font_Big label 12,8,'ARCANOID: USE ARROW KEYS LIVES SCORE',cl_White+font_Big
end if end if
@ -433,9 +433,9 @@ draw_window:
if lang eq it_IT if lang eq it_IT
label 160,200,'Hai perso!',cl_Red+font_Big label 160,200,'Hai perso!',cl_Red+font_Big
label 130,220,'Punteggio:',cl_Red+font_Big label 130,220,'Punteggio:',cl_Red+font_Big
else else ; Default to en_US
label 160,200,'You Lose!',cl_Red+font_Big label 160,200,'You Lose!',cl_Red+font_Big
label 130,220,'Youre Score:',cl_Red+font_Big label 130,220,'Your Score:',cl_Red+font_Big
end if end if
outcount dword [scorea],230,220,cl_Red,5*65536 outcount dword [scorea],230,220,cl_Red,5*65536
mov ebx,150*65536+80 mov ebx,150*65536+80
@ -449,7 +449,7 @@ draw_window:
mcall mcall
if lang eq it_IT if lang eq it_IT
label 152,244,'Rigioca',cl_Red+font_Big label 152,244,'Rigioca',cl_Red+font_Big
else else ; Default to en_US
label 152,244,'Play again?',cl_Red+font_Big label 152,244,'Play again?',cl_Red+font_Big
end if end if
jmp elev jmp elev
@ -457,9 +457,9 @@ nlev:
if lang eq it_IT if lang eq it_IT
label 160,200,'Hai vinto!',cl_Green+font_Big label 160,200,'Hai vinto!',cl_Green+font_Big
label 130,220,'Punteggio:',cl_Green+font_Big label 130,220,'Punteggio:',cl_Green+font_Big
else else ; Default to en_US
label 160,200,'You Win!',cl_Green+font_Big label 160,200,'You Win!',cl_Green+font_Big
label 130,220,'Youre Score:',cl_Green+font_Big label 130,220,'Your Score:',cl_Green+font_Big
end if end if
outcount dword [scorea],230,220,cl_Green,5*65536 outcount dword [scorea],230,220,cl_Green,5*65536
mov ebx,150*65536+120 ;mov ebx,150*65536+80 mov ebx,150*65536+120 ;mov ebx,150*65536+80
@ -473,13 +473,13 @@ nlev:
mcall mcall
if lang eq it_IT if lang eq it_IT
label 152,244,'Prossimo Livello',cl_Red+font_Big label 152,244,'Prossimo Livello',cl_Red+font_Big
else else ; Default to en_US
label 152,244,'Next level?',cl_Red+font_Big label 152,244,'Next level?',cl_Red+font_Big
end if end if
elev: elev:
if lang eq it_IT if lang eq it_IT
label 178,264,'Esci',cl_Red+font_Big label 178,264,'Esci',cl_Red+font_Big
else else ; Default to en_US
label 178,264,'Exit?',cl_Red+font_Big label 178,264,'Exit?',cl_Red+font_Big
end if end if

File diff suppressed because it is too large Load Diff

View File

@ -1,17 +1,17 @@
_window_caption db 'Soft landing',0 ;çàãîëîâîê ïðèëîæåíèÿ _window_caption db 'Soft landing',0 ; Application title
_text_game_over db 'G A M E O V E R', 0 _text_game_over db 'G A M E O V E R', 0
_text_level_complete db 'L E V E L C O M P L E T E', 0 _text_level_complete db 'L E V E L C O M P L E T E', 0
_text_intro_title db ' S O F T L A N D I N G', 0 _text_intro_title db ' S O F T L A N D I N G', 0
_text_intro_description1 db 'Provide a soft landing, clearing the runway from the city buildings', 0 _text_intro_description1 db 'Provide a soft landing, clearing the runway from the city buildings', 0
_text_intro_key_controls db ' Control keys:', 0 _text_intro_key_controls db ' Control keys:', 0
_text_intro_key_ctrl db ' CTRL - drop a bomb', 0 _text_intro_key_ctrl db ' CTRL - drop a bomb', 0
_text_intro_key_space db 'SPACE - do a barrel roll', 0 _text_intro_key_space db 'SPACE - do a barrel roll', 0
_text_intro_select_level db ' Use UP and DOWN arrow keys for select game level:', 0 _text_intro_select_level db ' Use UP and DOWN arrow keys to select the game level:', 0
_text_intro_level_num db ' LEVEL', 0 _text_intro_level_num db ' LEVEL', 0
_text_intro_set_volume db ' Use LEFT and RIGHT arrow keys for setting volume:', 0 _text_intro_set_volume db ' Use LEFT and RIGHT arrow keys for setting volume:', 0
_text_intro_volume_num db 'VOLUME', 0 _text_intro_volume_num db 'VOLUME', 0
_text_intro_start_space db 'Press SPACE for start game', 0 _text_intro_start_space db 'Press SPACE for start game', 0
_text_intro_exit_key db 'Esc - exit', 0 _text_intro_exit_key db 'Esc - exit', 0