kolibrios/programs/games/lights/trunk/main.inc
2011-01-29 22:35:52 +00:00

218 lines
8.1 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;#**************************
;#* LIGHTS (c)* main.inc
;#************************** 15/10/2007
L0 equ 0x0000F8 ; light off
L1 equ 0xFFFF00 ; light on
LAG equ 2
deltaX equ 35
deltaY equ 35
posX equ 50
posY equ 50
macro main_loop
{
; äã­ªæ¨ï ®âà¨á®¢ª¨ ®ª­ 
draw_window:
mov eax,12 ; äã­ªæ¨ï 12: á®®¡é¨âì á¨á⥬¥ ®
; á®áâ®ï­¨¨ ¯¥à¥à¨á®¢ª¨ ®ª­ 
mov ebx,1 ; ¯®¤äã­ªæ¨ï 1, ­ ç «® ¯¥à¥à¨á®¢ª¨
int 0x40
; ===== ŽŠ<EFBFBD>Ž !!1
mov eax,0 ; äã­ªæ¨ï 0: ®¯à¥¤¥«¨âì ¨ ¢ë¢¥á⨠®ª­®
mov ebx,100*65536+270 ; [x ­ ç «ì­ë©] *65536 + [x à §¬¥à]
mov ecx,100*65536+280 ; [y ­ ç «ì­ë©] *65536 + [y à §¬¥à]
mov edx,0x02ccddff ; 梥â à ¡®ç¥© ®¡« á⨠RRGGBB
; 0x02000000 = ⨯ ®ª­  2
mov esi,0x808899AA ; 梥⠮¡« á⨠§ £®«®¢ª  RRGGBB
; 0x80000000 = 梥⠯¥à¥â¥ª ¥â
mov edi,0xFFAAcc ; 梥â à ¬ª¨ RRGGBB
int 0x40
; <EFBFBD>€„<EFBFBD>ˆœ ¢ § £®«®¢ª¥ Lights v0.001
mov eax,4 ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
mov ebx,8*65536+8 ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
mov ecx,0x00224422 ; 梥â ⥪áâ  RRGGBB
; áâ à訩 ¡ ©â (0x00) - à §¬¥à èà¨äâ 
; (¬ «¥­ìª¨©)
mov edx,text ; 㪠§ â¥«ì ­  ­ ç «® ⥪áâ 
mov esi,texts-text ; ¤«¨­  ⥪áâ  ¢ ¡ ©â å
int 0x40
xor eax,eax ; <EFBFBD>€„<EFBFBD>ˆœ ¢ ®ª­¥!!!
mov ecx,eax
lb: ;loop ecx
mov edi,ecx ;
shl edi,3 ;
add edi,tBut ;
add al,byte[edi+1] ;
;
inc ecx ;
cmp ecx,25 ;
jne lb ;ecx<25
cmp eax, 0xE7 ;25
jne goon
;int3
;call Bin2Hex
mov eax,4 ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
mov ebx,80*65536+250 ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
mov ecx,0x10FF22FF ; 梥â ⥪áâ  RRGGBB
; ; áâ à訩 ¡ ©â (0x10) - à §¬¥à èà¨äâ 
; ; (¡®«ì让)
;mov edx,txthex
;mov esi,17
mov edx,texts ; 㪠§ â¥«ì ­  ­ ç «® ⥪áâ 
mov esi,textend-texts ; ¤«¨­  ⥪áâ  ¢ ¡ ©â å
int 0x40
goon:
;-------------------------------------------------------------------------------
; ----Š<EFBFBD>Ž<EFBFBD>Šˆ----
; button()
;-------------------------------------------------------------------------------
mov eax,8 ; äã­ªæ¨ï 8: ®¯à¥¤¥«¨âì ¨ ¢ë¢¥á⨠ª­®¯ªã
mov ebx,(200-19)*65536+12 ; [x ­ ç «ì­ë©] *65536 + [x à §¬¥à]
mov ecx,5*65536+12 ; [y ­ ç «ì­ë©] *65536 + [y à §¬¥à]
mov edx,100 ; ¨¤¥­â¨ä¨ª â®à ª­®¯ª¨ =1
mov esi,0xFF6611 ; 梥⠪­®¯ª¨ RRGGBB
int 0x40 ; ===Š<EFBFBD>Ž<EFBFBD>Š€ ‡€Š<EFBFBD>ˆŸ ŽŠ<EFBFBD>===
LoopBegin labl,0 ;ecx - loop index
;add ecx,5
mov edi,ecx
shl edi,3 ;edi*8 -index of table
add edi,tBut
xor ebx,ebx
mov bl,byte[edi+2] ;X
shl ebx,16 ;*65536=256*256
add ebx,deltaX-LAG ;dX
xor ecx,ecx
mov cl,byte[edi+3] ;Y
shl ecx,16 ;*65536=256*256
add ecx,deltaY-LAG ;dY
xor edx,edx
mov dl,byte[edi] ;N
xor esi,esi
cmp byte[edi+1], 0 ;Color = 0/1
je lit_off
mov esi,L1 ;on
jmp lend
lit_off:
mov esi,L0 ;off
lend:
mov eax,8 ;8-BUTTON
int 0x40
LoopEnd labl,25
;=============================================================
endbut:
mov eax,12 ; äã­ªæ¨ï 12: á®®¡é¨âì á¨á⥬¥ ®
; á®áâ®ï­¨¨ ¯¥à¥à¨á®¢ª¨ ®ª­ 
mov ebx,2 ; ¯®¤äã­ªæ¨ï 2, ¯¥à¥à¨á®¢ª  ®ª®­ç¥­ 
int 0x40
;ret ; ª®­¥æ ä㭪樨 - íâ® ­¥ äã­ªæ¨ï!
event_wait:
;mov eax,10 ; äã­ªæ¨ï 10:=0A ®¦¨¤ ­¨¥ ᮡëâ¨ï
mov eax,23
mov ebx,100
int 0x40
; ⨯ ᮡëâ¨ï ¢®§¢à éñ­ ¢ eax, ¤ «¥¥ ¯à®¢¥à塞, ª ª®¥ ᮡë⨥ ¯à®¨§®è«®
;-------------------------------------------------------------------------------
cmp eax,1 ; § ¯à®á ­  ¯¥à¥à¨á®¢ªã?
je redraw
cmp eax,2 ; ­ ¦ â  ª« ¢¨è  ª« ¢¨ âãàë?
je key
cmp eax,3 ; ­ ¦ â  ª­®¯ª  ¢ ®ª­¥ ¯à®£à ¬¬ë?
je button
jmp event_wait ; ¢®§¢à é ¥¬áï ª ­ ç «ã 横«  ®¦¨¤ ­¨ï ᮡë⨩
; ¯®á«¥ ⮣®, ª ª ᮡë⨥ ¨¤¥­â¨ä¨æ¨à®¢ ­®, ¥£® ­ ¤® ®¡à ¡®â âì
;-------------------------------------------------------------------------------
redraw:
call draw_window ; ¢ë§ë¢ ¥¬ äã­ªæ¨î draw_window ¨
jmp event_wait ; ¢®§¢à é ¥¬áï ­ § ¤ ª 横«ã ®¦¨¤ ­¨ï
key:
mov eax,2 ; áç¨â뢠¥¬ ª®¤ ­ ¦ â®© ª« ¢¨è¨. ‚®§¢à é¥­ ¢ ah.
int 0x40 ; Š« ¢¨è  ¤®«¦­  ¡ëâì ¯à®ç¨â ­  ¤«ï ®ç¨á⪨
cmp ah,27
je clos0 ; exit on ESC
;
jmp event_wait ; ¢®§¢à â ª event_wait
button:
mov eax,17 ; áç¨â뢠¥¬ ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
int 0x40 ; ¢®§¢à é¥­ ah.
;-------------------------------------------------------------------------------
; ᬮâਬ, ª ª ï ª­®¯ª  ¡ë«  ­ ¦ â  ¨ ᮮ⢥âáâ¢ãî騬 ®¡à §®¬ ॠ£¨à㥬.
;-------------------------------------------------------------------------------
cmp ah,100 ; ª­®¯ª  á id=100("§ ªàëâì")?
jne noclose
clos0:
mov eax,-1 ; äã­ªæ¨ï -1: § ¢¥àè¨âì ¯à®£à ¬¬ã
int 0x40 ; ª­®¯ª  5-29
noclose:
xor ecx,ecx ;
mov cl,ah ;
sub ecx,5 ; ecx - index for tBut
mov edi,ecx
call x_lit ;+0 - 業âà
mov [tButIdx],edi ;save index
mov edi,[tButIdx]
cmp byte[edi+6],0
je next000
mov edi,ecx
inc edi
call x_lit ;+1 á¯à ¢ 
next000:
mov edi,[tButIdx]
cmp byte[edi+5],0
je next001
mov edi,ecx
dec edi
call x_lit ;-1 á«¥¢ 
next001:
mov edi,[tButIdx]
cmp byte[edi+4],0
je next002
mov edi,ecx
sub edi,5
call x_lit ;-5 ᢥàåã
next002:
mov edi,[tButIdx]
cmp byte[edi+7],0
je next003
mov edi,ecx
add edi,5
call x_lit ;+5 á­¨§ã
next003:
call draw_window
jmp event_wait
;================================--
x_lit: ; edi - index
shl edi,3 ; edi*8 -index of table tBut
add edi,tBut ;
not byte[edi+1] ; invert second byte = L0/L1
ret ;
;================================--
call draw_window ;­ è  ª­®¯ª ;)
; §¤¥áì ¯à®¢¥à塞 ®áâ «ì­ë¥ ª­®¯ª¨
jmp event_wait ;¢®§¢à é ¥¬áï ª 横«ã ®¦¨¤ ­¨ï
}