Posts for r57shell

1 2
12 13 14 15 16
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Fix "Special Thanks" Zeropass author is Organic.
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
WST, это не лично мой сайт, это наш сайт, чей - в подписи в самом низу. Тебе в раздел HandMade. Вообще, подойдёт любая память с откликом меньше 150 us (нано секунд), только желательно стандарт под 5v, а то сейчас 3.3v (или сколько там?) в моде. Картридж сеговский - тупо кусок памяти. feos, тыкай полностью! :D А если натыкаешь? всё? Rejected? :D
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Ну, знаешь, тяп ляп пробежал 100 ререкордов за весь мувик, и тыкание мыкание во все углы втыкание, - тоже не дело. Надо всё равно иметь какую-то планку. У меня вот такая планка, если она достигнута - вот это тас, вот это качество, к примеру глянтьте WIP по Batman & Robin в секции по Sega Megadrive. А вообще да, можно запилить только роут, а потом чтобы оптимизатор пришел, и оптимизировал на максимум. Но, лично я придерживаюсь мнения, что оптимизатор или не придёт вообще, или ждать придётся долго, как с привидённым тобой мувиком. Там да, инструменты были другие, потому и можно улучшить. Но с другой стороны, где это улучшение? Остаётся только верить и надеяться что кто-то придёт и улучшит. Не смотря на популярность соника, этот забег всё ещё не побили. И ещё, ты так говоришь, будто надо чтобы улучшали, а по мне, если не улучшают - признак качества. Как ни крути, оптимальный пробег - не улучшишь, исходя из определения оптимальности.
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Там в обсуждении написали очень много, и переводить/обсуждать я всё то не хочу. Вообще у меня есть очень грубая оценка TAS-ов: ререкордов должно быть минимум в два раза больше чем инпута. Но это грубо. Это не обязательно, просто смысл в том, что если ререкордов мало - значит мало пробовал. Сам же должен понимать что малое количество ререкордов только если ты несколько раз пробовал какой-то момент, например на slowmotion. Качественные TAS делаются на framestep. То есть ты взял остановился на каком-то кадре, сохранился, и ты пробуешь по разному какие-нибудь 60 кадров к примеру, по несколько раз, даже если ты их попробовал 10 раз (10 раз это мало, сам подумай) то это уже 1/6 плотность (1 ререкорд на 6 кадров), 2 ререкорда на 1 кадр это к примеру 20 попыток на 10 кадров - когда сидишь, тестируешь, не замечаешь как быстро делаешь 20+ попыток. Это по поводу очень грубой оценки. (я не смотрел сколько там у тебя ререкордов) Второе: роуты. Route - путь, в общем как ты проходишь. Надо тщательно продумывать путь по которому ты будешь проходить: планировать что из итемов тебе надо поднять, сравнивать несколько разных путей грубым TAS-ом - какой из них быстрее. Если же разница получается мелкой, увы, придётся TAS-ить тщательно, и снова сравнивать. К примеру по одному пути быстрее на 10 фреймов, но так как ты TAS-ил хламово, возможно ты просто где-то потерял 20 кадров в том который медленнее показался, а значит он может быть быстрее. Второй пример: первый раз пробежал собрал дополнительную аптечку - потом выяснилось что она не понадобится - пробегай заново без аптечки ). Как бы хорошо ни был оптимизирован TAS, если путь выбран коряво - любой школьник придёт и перебьёт твой TAS, и будешь ты obsoleted :D. Третье: утилиты. TAS без утилит это как-то не серьёзно, я так считаю. На одних slowmotion и save/load (даже с taseditor) не выжмешь максимум, получится "на глазок". Получается так: если видишь что ты ткнулся в стену - значит ткнулся, если не видно, то не ткнулся, наверно. Как "в потёмках". К примеру, первое, что я лично бы сделал, это нашел бы координаты героя в памяти игры. У тебя есть оффсет в RAM на позицию X,Y? Вот даже если ты её найдёшь, сразу будет проще и качественнее - ты сможешь понимать где стены (смотреть ограничения на x,y, правда это сложновато но можно), и оптимизировать на основе этого. В идеале, я бы порылся, и нашел: позицию, скорость, направление (куда смотришь), стены, и потом ещё до кучи карту бы вывел в виде: линии - стены, крестик - персонаж, а потом чтобы не было такого: И если ты приведёшь lua скрипт который будет выводить стены, и позицию персонажа (стены - линии, позиция - крестик), то не будет таких вопросов. Особенно если ты ещё и траекторию выведешь. По поводу оптимальных траекторий: если даже есть у персонажа радиус поворота, то зная стены, и имея модель этого поворота, можно оптимизировать. Вот к примеру как перейти от точки до точки с радиусом поворота: http://www.sid337.newmail.ru/1340.html Это я к чему? Если есть возможность двигаться по дугам - почему нет? Разогнался и вошел в поворот под нужным углом ). Опять же, если путь не оптимальный - нет смысла пыхтеть над координатами, и прочими техническими оптимизациями, но никто не знает оптимален ли выбранный путь, до того как его улучшат. Так что, ответь на несколько вопросов: 1) Проверял ли ты "все" пути прохождения? (все мыслимые) 2) Как именно ты делал попытки? Framestep от угла до угла? (от checkpoint до checkpoint?) Checkpoint - это место где ты что-то должен сделать если следовать выбранному пути. 3) Пользовался ли ты RAM Watch, Lua scripts, и прочими техническими хитростями?
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Language: c

const int A = <some>; // no entropy const int B = <some>; // no entropy int seed = 0; // no entropy int rand() { seed = A*seed + B; // A, B, seed - no entropy -> new seed - no entropy return seed; } // so this func deterministic void main () { seed = time(0); // time(0) - source of entropy, so seed isn't deterministic. for (int i=0; i<10; ++i) printf("rand() = %d\n", rand()); // there will be 10 random numbers but! if you know first, you can easily determine all 9 after. } // so if you set seed to some certain value in main, you'll get deterministic program. it will run always same.
List of some sources of entropy: 1) Time, timers, delays, elapsed time between some two points in program. 2) Threads execution order, it can't be same, unless if you syncronize all with appropriate methods (mutexes, events etc.) 3) Program base address (where it was loaded), current stack pointer :D, addresses of memory allocated in heap... 4) User input: keys down, keys up, mouse movements... 5) OS events: WM_MESSAGES, hmmm something else :) 6) Polling stuff: socket recieve packets, socket send packet, sound in poll mode (is there space for next sound samples?)... 7) Special random devices that produces REAL RANDOM! You can expand this list forever. But when it comes to emulators, you may restrict your emulator core from accessing to all this stuff except user input. So your emulator must have only two methods: 1) advance time (emulate frame / emulate miliseconds ...) 2) change current user input (for rerecording) and restrict from any other external input that may have entropy :), also restrict frontend from changing any data used by core. Use "encapsulation" method :). Question: how then I'll show image and play sound if it produce entropy? Answer: yes it produce entropy, but as far as you don't access it from core: (advance time method) you can use it, because while you didn't call time advance methods, state does not change.
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Also, easy answer to "how to make it deterministic" Just remove any sources of entropy! :D It might sounds complicated, but it easy.
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Yep, I know what envelope there, and yes, it's parabola. I already told that I'm thinking few days already, so I know something :) If you assume that all straight lines in 2D is stright in 3D then it class of ruled surfaces (hyperbolic paraboloid there too) And then, you can setup many of such surfaces... But, when you see image in 2D you imagine exactly some certain surface. And then, different question - how to understand what you see? :)
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
A little about string art. I'm thinking few days already about it. Here is picture [URL=http://imgur.com/bZTZIgX][/URL] It's made in 2D, but if you may imagine that there some surface. Question is: What That Surface?! (in 3D) How it's made: just draw line between points (0,i) (1-i,0) for i = 0 to 1 by 1/n :)
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
It can't, otherwise you'll get same slow speed. Exodus 1.0 for all MD hardware part create its own thread = ~12 threads Each now and then sync them, that's why it's very slow. In Exodus 1.1 only Nemesis knows what was changed. but still 50fps on Core 2 E7400 (2.8GHz dual core) it's slow. Also, 28fps ->50fps it's only 2 times faster, seems like nothing changed (only optimized)
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
There is Very Serious Question. A matter of life and death. Should we encode what happens after? Or NOT? If we choose wrong, we definitely all die. Don't rush! Think carefully! Or, the world will collapse. LOL That flame, making me laugh! :D
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
For me ACE means 0) unintended - you can argue endlessly about intention 1) arbitrary - do you have some freedom here? 2) code - is it code? yes! 3) execution - is it executed? yes! Then it's ACE.
Tub wrote:
If you cannot do turing complete computations, you haven't been executing code.
lol, I even doubt whether you know what is "turing complete computations". You can run "turing complete computation" in SQL.
Tub wrote:
My personal criterion for "arbitrary" would be: can you use it to replace the game with SMB1, Tetris or any other game available on the platform? If you can't, it's not arbitrary enough.
Ha! Gotcha! "If you can't, it's not arbitrary enough." But, it's still arbitrary! Not enough, maybe, for something. But still, you can write whatever you want, but something won't run. Same thing in any language even in asm, you can write some bad opcodes, and they won't work. You can write some bad code in Javascript, and in certain conditions, it will stop. (exception/error occured). Also, there are many of filters for user input to preventing injections, but still, hackers making exploits writing code with such restrictions: no spaces/no NOP byte. There are even special tools that generate machine code without restricted bytes/patterns.
Tub wrote:
To do so, you must exercise enough control over the platform to
  • stop the previously running game from executing
  • execute your own turing complete computations
  • load or create new game assets, including images and sounds
  • have full access to the platform's inputs (gamepad, keyboard, mouse, ...) to load new data
  • have full access to the plaform's outputs, usually video and sound
I would create tag "platform total control". :D STOP! Who cares how to call it? Is there run that needs tag? Nope, you talking about game. Replay first -> tag after! :D If this "hole" will make fun, then why not?
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
you making me sad :( you need to search string in file, and there isn't such function then make it yourself pseudocode:
f = io.open(file,'r');
all = f:read('*a');
s,e = string.find(all,'X1 Y2',1,true); // find from start plain text
(s,e - start, end, indices)
f:close(); // don't forget!
(didn't read whole thread) if you need to know line number then you must go through lines:
local l = 1;
for line in io.lines(filename) do
s,e = string.find(line,pattern,1,true);
if (s ~= nil ) then // I don't remember correct condition)
   return l,s,e; // returns line number, start, end;
end
r = r + 1;
end
something like that..... think please.
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
yes, jumping macaco :)
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
meh, jumping macaco.
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
For me, "heavy glitch abuse" is not how heavy glitch is. It's how frequently they used, or how many of them. So, if there is one ACE to game end, I would not say that it's "heavy glitch abuse". About clutter of tags. I would like to see button "see all tags" for each movie. Most expensive (common) tags are always visible, and all other tags - is hidden until you press "see all tags". As result, you may have a lot of tags for same movie, including very specific tags. Tags - for search, if you want more info, see publication and description.
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Great!
Truncated wrote:
* Being able to "see" things outside the screen with feos' script helps immensely.
:(
Truncated wrote:
* The third lock screen was weird. It does not require all enemies to be dead. My best understanding is that it allows you to progress if either 1) there is 0 to 1 enemy left, and that enemy is a big guy 2) there are 0 to 2 enemies left, and neither is a big guy
We discussed about it with feos few weaks ago. I don't remember... Did someone of us described conditions of unlocking? Nevermind, here we go. All event system done in this way: 1) In start of level, current condition and function initialized. 2) While condition is not true, nothing happens. 3) If condition is true then function called. But, this function can have hardcoded additional condition, and this is very common behavior. 4) function can: a) do nothing if some condition was met. b) update condition (set new one) c) update function (set current function to another) d) fork another (condition;function) event system (with same behavior) e) and most of them (of such functions) spawn new enemy, and doing some animations, change music, lock/unlock screen. I have script which shows all awaiting conditions, but there is no way to find out what is hardcoded unless manually viewing all code of all events. Lot of code, for any little scene. So, I gave up to make further investigation in this way. And, it's much faster to figure out contidions in game, than viewing code. But yes, you can miss something.
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
It's awesome. I'm voting yes already :) thumb up!)
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
I see only one reason: my last WIP was 19 march, it was quite a long time ago. You want to go further, but I'm not updating and checking this part. I see only this reason. I suspended this run for uncertain time. That's reason. I don't worry about it. Because every time you have to suspend something and resume another thing. All depends your priorities and desires. Me bad, yes... But I'm not upset. I'll resume, when I have to!
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Dooty wrote:
Looks like we do have a problem here;
First, may be you have a problem, but I'm not.
Dooty wrote:
I understand your preference for Gens over BizHawk, but we're stuck on those damn platforms.
May be you stuck on platforms, but I'm haven't tried yet.
Dooty wrote:
Also, I've lost something really important, or maybe the most important thing on a TAS; motivation...
That's problem, but not mine :).
Dooty wrote:
So, before it reaches a point that would lead me into dropping the project, I'll keep on working on a BizHawk version.
Do what you want. I don't worry. I'm happy :D Also, I don't interested in any info about BizHawk.
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Dooty wrote:
and of course, r57shell agreeing to switch to a new emulator.
Nope, of course I don't agree.
Dooty wrote:
We're not going to work on the Gens version for a while.
I'm going to work on Gens version, but when I want. As I always saying: do what you want to do.
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Only facepalm.
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Also, don't forget that VBLANK is not instant! It has start, and end. VBLANK start -> Active display end. VBLANK end -> Active display start. So, there are two points where developer of emulator can update input. But game can read input at any point. It can read input twice or more... For real system, joypad state is not changing once in frame. Game reads current state of input when it needs.
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
YYEEAAHH!!!!
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Ahaha, as russian, I can definetely say: he using translator, or trolling. More likely first. lol
Experienced Forum User, Published Author, Player (107)
Joined: 12/12/2013
Posts: 380
Location: Russia
xxNKxx wrote:
The person got catched can counter by a catch to who catching him.
How, and in what version? I play a lot in Sega and MAME version, and still didn't know about this.
1 2
12 13 14 15 16