0,0 → 1,217 |
;#************************** |
;#* 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 |
; ===== !!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 |
; ¢ § £®«®¢ª¥ 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 ; ¢ ®ª¥!!! |
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: |
;------------------------------------------------------------------------------- |
; -------- |
; 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 ; === === |
|
|
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 ;¢®§¢à é ¥¬áï ª 横«ã ®¦¨¤ ¨ï |
} |
|
|