1
Эмуляторы консолей 1-4 поколений / Gens с разгоном
« : 25 Сентябрь 2010, 15:20:34 »
Народ, подкиньте разогнанный эмуль Gens.
Юзал поиск, все ссылки на форуме битые((
Юзал поиск, все ссылки на форуме битые((
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
.386
.MODEL use16 small
.STACK 200h
.DATA
Mx dw ?
My dw ?
Ox dw ?
Oy dw ?
A dw ?
B dw ?
X dw ?
Y dw ?
Astr DB 6, ?, 5 dup (?)
Bstr DB 6, ?, 5 dup (?)
Step dw ?
.CODE
ProgramStart:
mov ax, @DATA
mov DS, ax
;--------------------------------]
;2. Создать двухбайтовые переменные Mx, My, Ox, Oy с вычисленными значениями
;--------------------------------]
mov Mx, 160
mov My, 120
mov Ox, 160
mov Oy, 120
;---------------------------------------------------
mov ah, 0fh ; узнать видеорежим
int 10h
mov ah, 00h ; установить видеорежим
int 10h
;---------------------------------------------------
mov ah, 0ah ; запрос строки Astr
mov dx, offset Astr
int 21h
;---------------------------------------------------
mov ah, 0fh ; узнать видеорежим
int 10h
mov ah, 00h ; установить видеорежим
int 10h
;---------------------------------------------------
mov ah, 0ah ; запрос строки Bstr
mov dx, offset Bstr
int 21h
;---------------------------------------------------
mov ah, 0fh ; узнать видеорежим
int 10h
mov ah, 00h ; установить видеорежим
int 10h
;---------------------------------------------------
; переводим число А из строки Astr
;---------------------------------------------------
mov CL, Astr[1] ;CL = кол-во символов
mov AX, 0 ;AX = 0
mov SI, offset Astr[2] ;SI = адрес первого введённого символа
Frml1: mov Bx, 10 ; AX:=AX*10
mul Bx
mov BL, [SI] ;[SI]-'0'
mov BH, 0
sub BX, '0'
add AX, BX ;Ax:=Ax*10+([SI]-'0')
inc SI ;SI:=SI+1
dec CL ;CL:=CL-1
cmp CL,0 ; if CL <>0 then goto Frml
jne Frml1
mov A, AX
;---------------------------------------------------
; переводим число B из строки Bstr
;---------------------------------------------------
mov CL, Bstr[1] ;CL = кол-во символов
mov AX, 0 ; AX = 0
mov SI, offset Bstr[2] ; SI = адрес первого введённого символа
Frml2: mov Bx, 10 ; AX:=AX*10
mul Bx
mov BL, [SI] ;[SI]-'0'
mov BH, 0
sub BX, '0'
add AX, BX ;Ax:=Ax*10+([SI]-'0')
inc SI ;SI:=SI+1
dec CL ;CL:=CL-1
cmp CL,0 ; if CL <>0 then goto Frml
jne Frml2
mov B, AX
;---------------------------------------------------
mov ah, 0Fh
Int 10h ; узнать видеорежим
mov ah, 13H
Int 10h ; установить видеорежим в режим 640*480
;---------------------------------------------------
;///////////////////////////////////////////////////
;---------------------------------------------------
; Подсчёты и цикл
;---------------------------------------------------
mov step, 0
Draw:
fild A
fild Step
fmul
mov B, 1000
fild B
fdiv
fsin
fild Mx
fmul
fild Ox
fadd
fist X
fild B
fild Step
fmul
mov A, 1000
fild A
fdiv
fcos
fild My
fmul
fild Oy
fadd
fist Y
; ставим точку
mov AH, 0ch
mov AL, 7
mov BH, 0
mov CX, X
mov DX, Y
int 10h
inc Step
cmp step, 6284
jl Draw
;--------------------------------------------------
xor ah, ah ;пауза до нажатия клавиши
int 16h
mov ah, 4ch
int 21h
;--------------------------------------------------
mov ah, 0Fh
Int 10h ; узнать видеорежим
mov ah, 00h
Int 10h ; установить видеорежим текста
;---------------------------------------------------
END ProgramStart
OS Compatibility
Windows Vista
* Windows XP driver is not available
Вы используете DEBUG DirectX. Производительность игры будет низкой. Хотите продолжить? [Да] [Нет]