- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
; загрузка из cfg-файла переменной Gravity
seg011:06CA fld [dbl_45A48] ; 0.2
seg011:06CF add sp, -8
seg011:06D2 fstp [bp+var_16] ; default=0.2
seg011:06D6 push ds
seg011:06D7 mov ax, offset aGravity
seg011:06DA push ax ; key="GRAVITY"
seg011:06DB wait
seg011:06DD push cs
seg011:06DE call near ptr cfg_ReadDbl
seg011:06E1 add sp, 12
seg011:06E4 fstp [curGravity] ; cur=cfg_ReadDbl()
; проверка загруженного значения на диапазон [0,05..10,0]
seg011:06E9 fld [flt10]
seg011:06EE add sp, -8
seg011:06F1 fstp [bp+var_16] ; max = 10.0
seg011:06F5 fld [minGravity]
seg011:06FA add sp, -8
seg011:06FD fstp [bp+var_1E] ; min = 0.05
seg011:0701 fld [curGravity]
seg011:0706 add sp, -8
seg011:0709 fstp [bp+var_26] ; cur
seg011:070D wait
seg011:070F push cs
seg011:0710 call near ptr CheckRangeDbl
seg011:0713 fstp st ; результат нах...
seg011:0716 add sp, 24
<....cut....>
; double CheckRangeDbl(double cur, double min, double max)
seg011:0077 proc CheckRangeDbl far
seg011:0077 var_2 = word ptr -2
seg011:0077 @@cur = qword ptr 6
seg011:0077 @@min = qword ptr 0Eh
seg011:0077 @@max = qword ptr 16h
seg011:0077 push bp
seg011:0078 mov bp, sp
seg011:007A dec sp
seg011:007B dec sp
seg011:007C fld [bp+@@cur]
seg011:0080 fcomp [bp+@@min]
seg011:0084 fnstsw [bp+var_2]
seg011:0088 wait
seg011:008A mov ax, [bp+var_2]
seg011:008D sahf
seg011:008E jnb @@chk_max ; if (cur < min)
seg011:0090 fld [bp+@@min] ; st(0) = min
seg011:0094 jmp @@exit
seg011:0096 @@chk_max: ; else
seg011:0096 fld [bp+@@cur]
seg011:009A fcomp [bp+@@max]
seg011:009E fnstsw [bp+var_2]
seg011:00A2 wait
seg011:00A4 mov ax, [bp+var_2]
seg011:00A7 sahf
seg011:00A8 jbe @@ret_cur ; if (cur > max)
seg011:00AA fld [bp+@@max] ; st(0) = max
seg011:00AE jmp @@exit
seg011:00B0 @@ret_cur: ; else
seg011:00B0 fld [bp+@@cur] ; st(0) = cur
seg011:00B4 @@exit:
seg011:00B4 fst [bp+@@cur]
seg011:00B8 wait
seg011:00BA mov sp, bp
seg011:00BC pop bp
seg011:00BD retf ; return st(0)
seg011:00BD endp CheckRangeDbl
Из старой, очень популярной игрухи (Scorshed Earth). Все как положено, подгружаемые из cfg-файла данные проходят проверку. Только вот результаты проверок (для double, для int и прочих типов) попросту отбрасываются :) Даже не знаю, как такое можно было накодить, на невнимательность непохоже - такого кода довольно много.
telnet 13.06.2011 06:50 # 0
DemonId7 14.06.2011 03:06 # 0
SmackMyBitchUp 13.06.2011 08:33 # 0
Слева в меню можно выбрать расширение окна игры, удобное для вас.
Lure Of Chaos 13.06.2011 13:12 # +1
.win!
bugmenot 13.06.2011 13:57 # −1
Lure Of Chaos 13.06.2011 18:48 # +1
guest 15.06.2011 09:38 # −1
bugmenot 15.06.2011 10:15 # +1
guest 15.06.2011 12:11 # −2
Ещё одно быдловыражение с лукоморья?
И да... Лурк всегда был не тот.
bugmenot 15.06.2011 22:19 # 0
istem 15.06.2011 22:24 # 0
guest 16.06.2011 03:13 # −1
bugmenot 16.06.2011 08:01 # +1
This is obvious 04.07.2011 16:20 # +1
TheCalligrapher 15.06.2011 02:01 # 0
Я, конечно, понимаю, что с точки зрения языка высокого уровня, 'cur' - это локальная переменная (параметр) функции, которая "снаружи" не видна, но тем не менее на уровне машинного кода возможность "восстановить" результат функции даже после 'fstp st' все-таки существует, ибо этот результат продублирован в '[bp+var_26]'.
Там у вас не видно, что происходило дальше.
DemonId7 15.06.2011 06:43 # 0
Впрочем, проверить легко. Выставляешь в scorch.cfg некорректные значения (там для каждой переменной в каментах указан допустимый диапазон) и запускаешь игруху. Заходишь в меню и видишь те значения, что были прописаны в файле, хотя, по идее, они должны были бы отсечся.
ps: уточню, для Scorched Earth Version 1.1, более новую не смотрел, как и 1.0 (а она была такая?)
TheCalligrapher 15.06.2011 17:44 # 0
DemonId7 15.06.2011 20:48 # +1
void CheckDbl(double *var, double min, double max)
а уж затем ее коснулась переделка, со всеми вытекающими.
TheCalligrapher 15.06.2011 17:43 # −1
guest 26.06.2012 17:46 # −2
[URL=http://wooden-hause.ru/gruppovuxa/s
eks-narktiki-i-rok-n-roll.html]бесплатно
е секс видео из дома 2[/URL] [URL=http://ultants.info/gruppovuxa/porn
o-v-baku.html]порновидео бесплатно смотреть кунилингус[/URL] [URL=http://blog17.ru/minet/porno-kartin
ki-anime.html]бесплатное онлайн порно нижнее бельё[/URL]
сайт знакомств геев и бисексуалов в краснодарском крае кожный отросток на анальном отверстии аниме порно онлайн лучшее
[URL=http://victoriamoscow.ru/anal/posmo
tret-besplatno-russkie-pornofilmy.html]б
есплатное порно-секс видео с предварительным просмотром[/URL]
частное порно студентов видео секс видео русские бабы порно влагалище клитор
[URL=http://kirovcenter.ru/molodenkie/ru
sskoe-porno-u-ginekologa.html]порно бесплатно трусики[/URL] [URL=http://kirovcenter.ru/domashnee-por
no/smotret-video-seks-festivali.html]сек
с старухи порно смотреть бесплатно[/URL]
guest8 09.04.2019 10:56 # −999