Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .Model Small
- ;;;;;;;;;;;; macros ;;;;;;;;;;
- draw_row Macro x,y,z,color ;x - row, y - begining column, z - ending column
- Local L1
- ; draws a line in row x from col y to col z
- MOV AH, 0CH
- MOV AL, color
- MOV CX, y
- MOV DX, x
- L1: INT 10h
- INC CX
- CMP CX, z
- JL L1
- EndM
- draw_column Macro x,y,z,color ;x - column, y - begining row, z - ending row
- Local L2
- ; draws a line col y from row y to row z
- MOV AH, 0CH
- MOV AL, color
- MOV CX, x
- MOV DX, y
- L2: INT 10h
- INC DX
- CMP DX, z
- JL L2
- EndM
- display_string Macro x,row,column,length,color
- push ax
- push bx
- MOV AX, @DATA
- MOV ES, AX
- MOV AH, 13H ; WRITE THE STRING
- MOV AL, 0H; ATTRIBUTE IN BL, MOVE CURSOR TO THAT POSITION
- XOR BH,BH ; VIDEO PAGE = 0
- mov bl,color
- MOV BP, OFFSET x ; ES: BP POINTS TO THE TEXT
- MOV CX, length ; LENGTH OF THE STRING
- MOV DH, row ;ROW TO PLACE STRING
- MOV DL, column ; COLUMN TO PLACE STRING
- INT 10H
- pop bx
- pop ax
- EndM
- draw_block Macro start_row, end_row, start_column, end_column, color_block
- Local along_row
- ; draws a square
- MOV DX, start_row
- along_row:
- draw_row DX, start_column, end_column,color_block
- INC DX
- CMP DX, end_row
- JLE along_row
- EndM
- ;write a draw piece macro - task for tomorrow (angela)
- draw_full_block Macro pattern_name, color, compare ;compare - 4ta block er jonno jhamela,tai last row er first element ta eta
- Local draw
- ;draws a full pattern
- MOV BX,0
- draw:
- draw_block [pattern_name+BX],[pattern_name+BX+2],[pattern_name+BX+4],[pattern_name+BX+6],color
- ADD BX,8
- CMP BX,compare
- JLE draw
- EndM
- update_block Macro pattern_name, blockToBeUpdated
- local while
- push ax
- push bx
- push cx
- mov cx,16
- mov bx,0
- while:
- mov ax,pattern_name[bx]
- mov blockToBeUpdated[bx],ax
- add bx,2
- ; cmp bx,24
- loop while
- pop cx
- pop bx
- pop ax
- EndM
- ;pull row downwards
- modify_row_elements Macro pattern_name, delta, number_of_blocks ; delta = dhakkar amount :3
- local ghuro,exit
- push ax
- push bx
- PUSH CX
- PUSH DX
- ;modify row elements
- mov cx,number_of_blocks
- mov bx,0
- ghuro:
- xor ax,ax
- xor dx,dx
- MOV ax,pattern_name[bx]
- add ax,delta
- MOV pattern_name[bx],ax
- add bx,2
- MOV dx,pattern_name[bx]
- add dx,delta
- MOV pattern_name[bx],dx
- add bx,6
- loop ghuro
- exit:
- pop dx
- pop cx
- pop bx
- pop ax
- EndM
- ;;;;;;;;;;;;;; ;daine bame dhakka dibo B| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- modify_column_elementsD Macro pattern_name, delta, compare ; delta = dhakkar amount :3
- local byebye,shorao
- push ax
- push bx
- PUSH CX
- PUSH DX
- ;modify column elements
- mov bx,4
- shorao:
- ; cmp pattern_name[30],345
- ; jg byebye
- koop:
- MOV cx,pattern_name[bx]
- add cx,delta
- cmp cx,380
- jge byebye
- MOV pattern_name[bx],cx
- add bx,2
- MOV dx,pattern_name[bx]
- add dx,delta
- MOV pattern_name[bx],dx
- add bx,6
- xor cx,cx
- xor dx,dx
- cmp bx,compare
- jle shorao
- byebye:
- pop dx
- pop cx
- pop bx
- pop ax
- EndM
- modify_column_elementsA Macro pattern_name, delta, compare
- local byebye,shorao
- push ax
- push bx
- PUSH CX
- PUSH DX
- ;modify column elements
- mov bx,4
- shorao:
- MOV cx,pattern_name[bx]
- sub cx,delta
- cmp cx,220
- jle byebye
- MOV pattern_name[bx],cx
- add bx,2
- MOV dx,pattern_name[bx]
- sub dx,delta
- MOV pattern_name[bx],dx
- add bx,6
- xor cx,cx
- xor dx,dx
- cmp bx,compare
- jle shorao
- byebye:
- ;sub cx,2 ; offset move
- ;MOV pattern_name[bx],cx
- pop dx
- pop cx
- pop bx
- pop ax
- EndM
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;dhakkadhakki sesh B|
- time_delay Macro pattern_name
- Local tt,tt1,tt2,tt3,tt4,tt5,tt6,tt7,tt8,tt9,tt10,tt11,sesh,show
- ; push ax
- push bx
- push cx
- push dx
- tt:
- CMP timer_flag, 1
- JNE tt
- MOV timer_flag, 0
- ;draw_block 158,163,235,360,08h
- CALL move_block
- ;CALL check_line
- mov bx,pattern_name[16]
- cmp bX,158 ;fixed this one
- jg sesh
- ;;;;;;;;;;;;;;;;;;;;;
- ; mov cx,pattern_name[20]
- ; add cx,5
- ; mov dx,pattern_name[16]
- ; add dx,10
- ; xor ax,ax
- ; mov ah,0dh
- ; int 10h
- ; cmp al,09h
- ; je sesh
- ;;;;;;;;;;;;;;;;;;;;;
- tt2:
- CMP timer_flag, 1
- JNE tt2
- MOV timer_flag, 0
- tt3:
- CMP timer_flag,1
- JNE tt3
- MOV timer_flag,0
- tt4:
- CMP timer_flag,1
- JNE tt4
- MOV timer_flag,0
- tt5:
- CMP timer_flag,1
- JNE tt5
- MOV timer_flag,0
- tt6:
- CMP timer_flag,1
- JNE tt6
- MOV timer_flag,0
- tt7:
- CMP timer_flag,1
- JNE tt7
- MOV timer_flag,0
- tt8:
- CMP timer_flag,1
- JNE tt8
- MOV timer_flag,0
- tt9:
- CMP timer_flag,1
- JNE tt9
- MOV timer_flag,0
- tt10:
- CMP timer_flag,1
- JNE tt10
- MOV timer_flag,0
- tt11:
- CMP timer_flag,1
- JNE tt11
- MOV timer_flag,0
- JMP tt
- sesh:
- ; mov [block_boshche],1
- pop dx
- pop cx
- pop bx
- EndM
- .Stack 100h
- .Data
- new_timer_vec dw ?,?
- old_timer_vec dw ?,?
- a1 dw ?
- a2 dw ?
- b1 dw ?
- b2 dw ?
- score dw ?
- flagg db 0
- color db 4
- seshs db 0
- next_color db 9
- line dw 0
- timer_flag db 0
- vel_x dw 1
- vel_y dw 1
- boxer_a dw ? ; these two vars deal with current upper and lower row bounds
- boxer_b dw ? ; of the single blocks
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; strings that will be displayed ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- msg_next db "Next$",0
- msg_left db "A - Left$"
- msg_right db "D - Right$"
- msg_rotate db "S - Jump Fast$"
- msg_quit db "Q - Quit$"
- msg_lines db "Lines$"
- msg_score db "Score$"
- msg_game_over db "Game Over!$"
- msg_tetris db "TETRIS$"
- game_score db "0000$"
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- screen_width dw 320
- column_limit dw 0
- row_limit dw 0
- block_width dw 10
- block_height dw 5
- block_boundary dw 153
- block_boshche dw 0
- box_medium dw 100
- current_row dw 0
- current_block dw 0
- next_block dw 0
- ;;;;;;;; time ;;;;;;;;
- ;;;;;;;;;;;;; blocks ;;;;;;;;;;;;;;;;;;;;;;
- horizontal dw 51,56,290,300
- dw 51,56,300,310
- dw 51,56,310,320
- dw 0,0,0,0
- next_horizontal dw 71,76,430,440
- dw 71,76,440,450
- dw 71,76,450,460
- dw 0,0,0,0
- vertical dw 51,56,285,295
- dw 56,61,285,295
- dw 61,66,285,295
- T_shape dw 51,56,290,300
- dw 51,56,300,310
- dw 51,56,310,320
- dw 56,62,310,320
- L_shape dw 51,56,290,300
- dw 51,56,300,310
- dw 51,56,310,320
- dw 45,50,290,300
- next_L_shape dw 71,76,430,440
- dw 71,76,440,450
- dw 71,76,450,460
- dw 65,70,430,440
- Ulta_L dw 51,56,290,300
- dw 51,56,300,310
- dw 51,56,310,320
- dw 57,64,310,320
- Ulta_T dw 51,56,290,300
- dw 51,56,300,310
- dw 51,56,310,320
- dw 45,50,310,320
- right_L dw 51,56,290,300
- dw 51,56,300,310
- dw 51,56,310,320
- dw 45,50,310,320
- next_right_L dw 71,76,430,440
- dw 71,76,440,450
- dw 71,76,450,460
- dw 65,70,450,460
- currentBlock dw 0,0,0,0
- dw 0,0,0,0
- dw 0,0,0,0
- dw 0,0,0,0
- next_piece dw 0,0,0,0
- dw 0,0,0,0
- dw 0,0,0,0
- dw 0,0,0,0
- offsetArray dw 20,20,140,140
- dw 20,20,140,140
- dw 20,20,140,140
- dw 20,20,140,140
- temp_nxt_piece dw 0,0,0,0
- dw 0,0,0,0
- dw 0,0,0,0
- dw 0,0,0,0
- choose_random_piece dw 0,0,0,0
- dw 0,0,0,0
- dw 0,0,0,0
- dw 0,0,0,0
- zero_matrix dw 0,0,0,0
- dw 0,0,0,0
- dw 0,0,0,0
- dw 0,0,0,0
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .CODE
- MAIN PROC
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Initialization
- MOV AX,@DATA
- MOV DS,AX ;DATA INITIALIZATION HOYE GESE
- ; set CGA 640x200 high res mode
- mov AH,0
- MOV AL,0eh
- int 10h
- ; set keyboard parameters to be most responsive
- ;mov ax,0305h
- ; xor bx,bx
- ; int 16h
- ;set bgd color
- mov ah,0bh
- mov bh,0
- mov bl,15
- int 10h
- ;generate initial piece
- ;call proc....
- ;display screen stuffs
- call procedure_draw_screen
- draw_block 158,164,236,360,0fh
- ;draw a block at roof middle position
- ;MOV BL,13
- ;draw_block 51,71,300,310,04h
- ;draw_block 51,71,320,330,08h
- ;draw_block 51,71,330,340,09h
- ;draw_block 160,170,300,310,09h
- ;;;;;;;;;;;;;;;; gravity niye khela hobe -_- ;;;;;;;;;;;;;;
- ; set up timer interrupt vector
- MOV new_timer_vec, offset timer_tick
- MOV new_timer_vec+2, CS
- MOV AL, 1CH; interrupt type
- LEA DI, old_timer_vec
- LEA SI, new_timer_vec
- CALL setup_int
- ;PUSH CX
- ;PUSH DX
- ;mov cx,horizontal[4] ;starting point,not yet done for each block,have to fix this one
- ;mov dx,horizontal[6]
- ;
- ;MOV boxer_a,cx
- ;MOV boxer_b,dx
- ;
- ;pop dx
- ;pop cx
- ; draw_block boxer_a,boxer_b,320,330,15
- ; CALL move_block
- ; MOV AH,01h
- ; INT 16H
- ;copy horizontal array to currentBlock
- ;draw_block 158,163,235,360,08h
- mov score,0
- ;update_block L_shape, currentBlock
- ;draw_block 158,163,235,360,08h
- ;show_next_piece T_shape,24 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; modify this
- ;draw_block 158,163,235,360,08h
- ;for horizontal one
- ;time_delay currentBlock
- ; time_delay vertical
- ; time_delay L_shape
- ;;;infinite loop e fele diyechi dada;;; :p
- ;draw_block 158,163,235,359,08h
- notun_notun_block_banao:
- ;cmp [block_boshche],1
- ;jne notun_notun_block_banao
- ;mov [block_boshche],0
- ;show_next_piece horizontal
- ;copy horizontal array to currentBlock
- inc [current_block]
- cmp [current_block],3
- jle continue_kor
- mov [current_block],1
- continue_kor:
- call gen_block
- update_block choose_random_piece, currentBlock
- call gen_next_piece
- call show_next_piece
- time_delay currentBlock
- call hawahawaline
- call score_dekhao
- call gameover
- cmp seshs,23
- je seshh
- add color,5
- add next_color,5
- cmp color,14
- jg Ooops
- cmp next_color,14
- jg Ooops_next
- jmp notun_notun_block_banao
- Ooops:
- mov color,4
- jmp notun_notun_block_banao
- Ooops_next:
- mov next_color,4
- jmp notun_notun_block_banao
- seshh:
- mov ah,0
- mov al,13h
- int 10h
- mov ah,0bh
- mov bh,0
- mov bl,10
- int 10h
- display_string msg_game_over ,10,15,10,2
- display_string msg_game_over ,10,15,10,2
- display_string msg_game_over ,10,15,10,2
- display_string msg_game_over ,10,15,10,2
- jmp seshh
- MAIN ENDP
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; all procedures ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; draw screen elements
- procedure_draw_screen proc near
- draw_screen_border:
- ;top left to top right
- draw_row 5,10,630,03h
- ;top left to bottom left
- draw_column 10,5,195,03h
- ;top right to bottom right
- draw_column 630,5,195,03h
- ;bottom left to bottom right
- draw_row 195,10,630,03h
- draw_screen_play_area:
- ;top left to top right
- draw_row 42,228,381,7
- ;top left to bottom left
- draw_column 228,42,165,7
- ;top right to bottom right
- draw_column 381,42,165,7
- ;bottom left to bottom right
- draw_row 165,228,381,7
- draw_screen_next_piece:
- ;top left to top right
- draw_row 50,400,487,01h
- ;top left to bottom left
- draw_column 400,50,90,01h
- ;top right to bottom right
- draw_column 487,50,90,01h
- ;bottom left to bottom right
- draw_row 90,400,487,01h
- draw_screen_strings:
- ;MOV AX, @DATA
- ;MOV ES, AX
- ;MOV AH, 13H ; WRITE THE STRING
- ;MOV AL, 0H; ATTRIBUTE IN BL, MOVE CURSOR TO THAT POSITION
- ;XOR BH,BH ; VIDEO PAGE = 0
- ;MOV BL, 9
- display_string msg_left,10,10,8,9
- ;MOV BL, 12
- display_string msg_right,12,10,9,12
- ;MOV BL, 8
- display_string msg_rotate,14,10,13,8
- ;MOV BL, 13
- ;; display_string msg_quit,16,10,8,12
- ;MOV BL, 6
- display_string msg_tetris,3,35,6,6
- ;MOV BL, 8
- display_string msg_next,12,54,4,8
- ;MOV BL, 9
- display_string msg_score,18,53,5,9
- ;mov bl, 8
- display_string game_score,16,53,4,8
- ret
- procedure_draw_screen endp
- setup_int Proc
- ; save old vector and set up new vector
- ; input: al = interrupt number
- ; di = address of buffer for old vector
- ; si = address of buffer containing new vector
- ; save old interrupt vector
- MOV AH, 35h ; get vector
- INT 21h
- MOV [DI], BX ; save offset
- MOV [DI+2], ES ; save segment
- ; setup new vector
- MOV DX, [SI] ; dx has offset
- PUSH DS ; save ds
- MOV DS, [SI+2] ; ds has the segment number
- MOV AH, 25h ; set vector
- INT 21h
- POP DS
- RET
- setup_int EndP
- timer_tick Proc
- PUSH DS
- PUSH AX
- MOV AX, Seg timer_flag
- MOV DS, AX
- MOV timer_flag, 1
- exit:
- POP AX
- POP DS
- IRET
- timer_tick EndP
- move_block Proc
- ; erase block at current position and display at new position
- ; input: CX = col of block position
- ; DX = rwo of block position
- ; erase block
- ; MOV AL, 0
- ; mov bx,300
- ; mov cx,310
- ; push ax
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;keyboard bae
- ; mov ah, 1 ;keyboar buffer check korbe
- mov ah, 1 ;keyboar buffer check korbe
- int 16h
- ; int 16h
- jz foo
- mov ah, 0 ; key input nibe
- int 16h
- cmp al,97 ; a checker
- je keya
- cmp al,100 ; d checker
- je fix2
- cmp al,115
- je dours
- foo: jmp boo
- keya:
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- xor cx,cx
- xor dx,dx
- mov cx,currentBlock[20]
- sub cx,45
- mov dx,currentBlock[16]
- fix1:
- jmp fix3
- fix2:
- jmp keyd
- dours: jmp dour
- fix3:
- ; xor ax,ax
- ; mov dx,158
- ; mov cx,301
- mov ah,0dh
- int 10h
- cmp al,09h
- je boo
- cmp al,0eh
- je boo
- cmp al,04h
- je boo
- add dx,10
- int 10h
- cmp al,0eh
- je boo
- cmp al,09h
- je boo
- cmp al,04h
- je boo
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- draw_full_block currentBlock,15 , 24
- modify_column_elementsA currentBlock,30,30
- boo: jmp exittt
- dour:
- jmp exitttt
- keyd:
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- xor cx,cx
- xor dx,dx
- mov cx,currentBlock[20]
- add cx,15
- mov dx,currentBlock[16]
- ; xor ax,ax
- ; mov dx,158
- ; mov cx,301
- mov ah,0dh
- int 10h
- cmp al,09h
- je exittt
- cmp al,0eh
- je exittt
- cmp al,04h
- je exittt
- add dx,10
- int 10h
- cmp al,09h
- je exittt
- cmp al,0eh
- je exittt
- cmp al,04h
- je exittt
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- draw_full_block currentBlock,15 , 30
- modify_column_elementsD currentBlock,30,30
- jmp exittt
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;muhahaha hoya gese
- exittt:
- draw_full_block currentBlock,15, 24
- ;draw_full_block vertical,15
- ;draw_full_block L_shape,15
- jmp test_timer
- ; draw_block boxer_a,boxer_b,320,330,15
- ; draw_block boxer_a,boxer_b,332,342,15
- ; draw_block boxer_a,boxer_b,344,354,15
- ; get new position
- ; check boundary
- ; cmp cx,160
- ; jl exits
- ; CALL
- ; wait for 1 timer tick to display block
- exitttt:
- draw_full_block currentBlock,15, 24
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- xor cx,cx
- xor dx,dx
- mov cx,currentBlock[4]
- inc cx
- ; add cx,20
- mov dx,currentBlock[16]
- xor ax,ax
- ; mov dx,158
- ; mov cx,301
- mov ah,0dh
- cmp dx,140
- jg test_timer
- add dx,24
- int 10h
- cmp al,09h
- je test_timer
- cmp al,0eh
- je test_timer
- cmp al,04h
- je test_timer
- add cx,20
- int 10h
- cmp al,09h
- je test_timer
- cmp al,0eh
- je test_timer
- cmp al,04h
- je test_timer
- ; add cx 20
- ; add dx,10
- ;int 10h
- ; cmp al,09h
- ; je exittt
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- modify_row_elements currentBlock,12, 4
- jmp test_timer
- test_timer:
- xor ax,ax
- CMP timer_flag, 1
- JNE test_timer
- modify_row_elements currentBlock,6 ,16
- draw_full_block currentBlock,color,24
- ; modify_row_elements vertical
- ; modify_row_elements L_shape
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; push ax
- ; push cx
- ; push dx
- xor cx,cx
- xor dx,dx
- mov cx,currentBlock[4]
- inc cx
- ; ; add cx,
- mov dx,currentBlock[16]
- add dx,10
- ; xor ax,ax
- ; mov dx,158
- ; mov cx,301
- mov ah,0dh
- int 10h
- cmp al,09h
- je exits2
- cmp al,0eh
- je exits2
- cmp al,04h
- je exits2
- add cx,20
- int 10h
- cmp al,09h
- je exits2
- cmp al,0eh
- je exits2
- cmp al,04h
- je exits2
- ; jne exits
- ; pop dx
- ; pop cx
- ; pop ax
- ; jne exits2
- ; exits2:
- ; mov currentBlock[18],160
- ; RET
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; halum:
- ;draw_full_block currentBlock,09h
- ; draw_full_block vertical,08h
- ; draw_full_block L_shape,08h
- ;draw_block boxer_a,boxer_b,320,330,08h
- ;draw_block boxer_a,boxer_b,332,342,08h
- ;draw_block boxer_a,boxer_b,344,354,08h
- ;
- MOV timer_flag, 0
- ; MOV AL, 3
- exits:
- RET
- exits2:
- ; mov cx,170
- ; draw_full_block currentBlock,09h
- mov currentBlock[16],170
- RET
- ;dec cx
- move_block EndP
- hawahawaline Proc
- ; push dx
- ;; push cx
- ; push bx
- ; push ax
- xor ax,ax
- xor bx,bx
- xor cx,cx
- xor dx,dx
- hambahamba:
- mov ah,0dh
- mov a1,164
- mov b1,56
- mov a2,230
- mov b2,240
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- mov line,170
- ; mov dx,line
- khuru:
- mov cx,235
- sub line,6
- mov dx,line
- mov a1,dx
- dhuru:
- add cx,10
- cmp cx,380
- jg prehh1
- xor ax,ax
- mov ah,0dh
- int 10h
- cmp al,09h
- je dhuru
- cmp al,0eh
- je dhuru
- cmp al,04h
- je dhuru
- jmp hh3
- prehh1:
- add score,10
- hh1:
- mov a2,220
- sub a1,6
- hh2:
- cmp a1,55
- jl hh3
- add a2,10
- cmp a2,370
- jg hh1
- mov bx,a1
- add bx,6
- mov b1,bx
- mov bx,a2
- add bx,10
- mov b2,bx
- xor ax,ax
- xor bx,bx
- xor cx,cx
- xor dx,dx
- mov cx,a2
- inc cx
- ; add cx,15
- mov dx,a1
- sub dx,4
- mov ah,0dh
- int 10h
- draw_block a1,b1,a2,b2,al ;0 hobe kaj korle
- jmp hh2
- hh3:
- mov a2,220
- cmp line,60
- jl fillhoynai
- jmp khuru
- fillhoynai:
- ;mov ah,4ch
- ; int 21h
- ; pop ax
- ; pop bx
- ; pop cx
- ; pop dx
- RET
- hawahawaline Endp
- score_dekhao proc
- push ax
- push bx
- push cx
- push dx
- mov cx,10d
- xor bx,bx
- mov bx,3
- mov ax,score
- bhag_kor:
- xor dx,dx
- div cx
- ;push bx
- ;inc cx
- or dl,30h
- mov game_score[bx],dl
- dec bx
- or ax,ax
- jne bhag_kor
- display_string game_score,16,53,4,8
- pop dx
- pop cx
- pop bx
- pop ax
- ret
- score_dekhao Endp
- gen_block proc
- cmp [current_block],1
- je horizontal_ako
- cmp [current_block],2
- je L_shape_ako
- cmp [current_block],3
- je right_L_ako
- horizontal_ako:
- update_block horizontal, choose_random_piece
- mov [next_block],2
- ret
- L_shape_ako:
- update_block L_shape, choose_random_piece
- mov [next_block],3
- ret
- right_L_ako:
- update_block right_L, choose_random_piece
- mov [next_block],1
- ret
- ret
- gen_block endp
- gen_next_piece proc
- cmp [next_block],1
- je horizontal_akao
- cmp [next_block],2
- je L_shape_akao
- cmp [next_block],3
- je right_L_akao
- horizontal_akao:
- update_block next_horizontal, next_piece
- ret
- L_shape_akao:
- update_block next_L_shape, next_piece
- ret
- right_L_akao:
- update_block next_right_L, next_piece
- ret
- ret
- gen_next_piece endp
- show_next_piece proc ;pattern_name - konta next piece box e dekhano hobe
- push bx
- push cx
- push dx
- draw_block 61,89,401,470,0Fh
- ; ;add_offset_array
- ; ;pasher picchi box e dekhanor jonno
- ; mov bx,0
- ; mov cx,16
- ;
- ;
- ; jog_koro:
- ; mov dx,next_piece[bx]
- ; add dx,offsetArray[bx]
- ;
- ; mov temp_nxt_piece[bx],dx
- ; add bx,2
- ; xor dx,dx
- ; loop jog_koro
- ;
- ; ;draw_full_block next_piece
- draw_full_block next_piece, [next_color], 24
- ; update_to_zero temp_nxt_piece
- ; update_to_zero next_piece
- pop dx
- pop cx
- pop bx
- ret
- show_next_piece endp
- update_to_zero macro input
- local zero_banao
- push bx
- push cx
- mov bx,0
- mov cx,16
- zero_banao:
- mov input[bx],0
- add bx,2
- loop zero_banao
- EndM
- ;keyboard strike
- gameover proc
- xor ax,ax
- xor cx,cx
- xor dx,dx
- mov dx,59
- mov cx,297
- mov ah,0dh
- int 10h
- cmp al,09h
- je sesh1
- cmp al,04h
- je sesh1
- cmp al,0eh
- je sesh1
- sesh: RET
- sesh1:
- mov ah,0bh
- mov bh,1
- mov bl,13
- int 10h
- mov seshs,23
- RET
- gameover endp
- End main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement