106 lines
2.2 KiB
PHP
106 lines
2.2 KiB
PHP
|
; level format
|
|||
|
; [fx|fy][blue xy][red xy][blue point xy][red point xy]..[maze walls]
|
|||
|
|
|||
|
; internal format
|
|||
|
; points db=[stepptr]
|
|||
|
; [player]= blue
|
|||
|
; [finish]= red
|
|||
|
; area: ..[1-red,0-black xy].. ( -1 if empty)
|
|||
|
|
|||
|
TILT2_levelp:
|
|||
|
call get_xy_sf
|
|||
|
mov [stepptr],esi
|
|||
|
add esi,2
|
|||
|
call unpack_level
|
|||
|
mov [pause_time],10
|
|||
|
ret
|
|||
|
|
|||
|
TILT2_key:
|
|||
|
cmp eax,176
|
|||
|
jb .ex
|
|||
|
cmp eax,179
|
|||
|
ja .ex
|
|||
|
mov esi,area
|
|||
|
inc esi
|
|||
|
lea ebx,[eax-176]
|
|||
|
.lp:
|
|||
|
xor edx,edx
|
|||
|
mov eax,[player]
|
|||
|
call check_move
|
|||
|
jc .nom1
|
|||
|
inc edx
|
|||
|
add eax,[dirs+ebx*4]
|
|||
|
mov [player],eax
|
|||
|
.nom1:
|
|||
|
mov eax,[finish]
|
|||
|
call check_move
|
|||
|
jc .nom2
|
|||
|
inc edx
|
|||
|
add eax,[dirs+ebx*4]
|
|||
|
mov [finish],eax
|
|||
|
.nom2:
|
|||
|
test edx,edx
|
|||
|
jz .ex1
|
|||
|
call delay
|
|||
|
call drwfld
|
|||
|
jmp .lp
|
|||
|
.ex1:
|
|||
|
mov eax,[finish]
|
|||
|
cmp eax,[player]
|
|||
|
jnz .ex2
|
|||
|
mov [win_flag],2
|
|||
|
jmp TILT2_drawm.skip
|
|||
|
.ex2:
|
|||
|
mov esi,[stepptr]
|
|||
|
cmp al,[esi+1]
|
|||
|
jne .ex
|
|||
|
mov eax,[player]
|
|||
|
cmp al,[esi]
|
|||
|
jne .ex
|
|||
|
mov [win_flag],1
|
|||
|
.ex:
|
|||
|
ret
|
|||
|
|
|||
|
TILT2_drawm:
|
|||
|
cmp [win_flag],2
|
|||
|
je .skip
|
|||
|
; mov [sq_size],3
|
|||
|
mov eax,[player]
|
|||
|
call get_xy
|
|||
|
mcall 13,[lx],[ly],0xff
|
|||
|
mov eax,[finish]
|
|||
|
call get_xy
|
|||
|
mcall 13,[lx],[ly],0xff0000
|
|||
|
.skip:
|
|||
|
shl [sq_size],1
|
|||
|
mov esi,[stepptr]
|
|||
|
lodsb
|
|||
|
call get_xy
|
|||
|
mcall 13,[lx],[ly],0xff
|
|||
|
lodsb
|
|||
|
call get_xy
|
|||
|
shr [sq_size],1
|
|||
|
mcall 13,[lx],[ly],0xff0000
|
|||
|
ret
|
|||
|
|
|||
|
TILT2_level:
|
|||
|
file 'tilt2.bin'
|
|||
|
|
|||
|
if lang eq ru
|
|||
|
TILT2_help mstr \
|
|||
|
'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> ᨭ<><E1A8AD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⮪',\
|
|||
|
'ᮮ⢥<E1AEAE><E2A2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>饣<EFBFBD> 梥<><E6A2A5>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>! <20><><EFBFBD><EFBFBD><EFBFBD> ᤥ<><E1A4A5><EFBFBD><EFBFBD>',\
|
|||
|
'<27><> <20><><EFBFBD><EFBFBD><EFBFBD>ᨢ<EFBFBD><E1A8A2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ਠ<EFBFBD><E0A8A0>, <20> <20><><EFBFBD> <20>⮫<EFBFBD><E2AEAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',\
|
|||
|
'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ᯠ<EFBFBD><E1AFA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20> <20>⮬ <20><><EFBFBD>砥 <20><><EFBFBD> <20>ਤ<EFBFBD><E0A8A4><EFBFBD><EFBFBD>',\
|
|||
|
'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA2><EFBFBD> ᭠砫<E1ADA0>.','',\
|
|||
|
'http://www.clickmazes.com'
|
|||
|
else
|
|||
|
TILT2_help mstr \
|
|||
|
'The red block must reach the red target and the',\
|
|||
|
'blue block the blue target. Beware! The two',\
|
|||
|
'blocks are made of highly reactive material and,',\
|
|||
|
'if they collide, will instantly evaporate. At',\
|
|||
|
'this point you must start all over again.','',\
|
|||
|
'http://www.clickmazes.com'
|
|||
|
end if
|