Super Turbo HUD

24567

Comments

  • Big OBig O Joined: Posts: 381
    Yeah I've noticed Honda, Sagat, and a few other people you need to be closer to throw than usual. Like with Honda (and no one else) one light attack at point blank puts him outside of Zangief's super range. Also Honda is outside of SPD range after 3 slow light ticks, while everyone else gets thrown. Against Honda and Sagat you have to be closer than normal to SPD and it throws me off a lot.

    My guess is that the throw distance is based on the distance from pivot point to pivot point. HDR has the little red square to show it, but idk if you can make it show or find it in the code.

    I'll have to mess around with the HUD and see how far ticks push you numerically. I've also been messing around trying to find out the best dizzy combos with Zangief, Guile, and DJ. Lol I finally found a use for Zangief's St. HP in a jump in dizzy combo and I would never have learned about it without looking at the stun data of his moves, so I appreciate the work Pasky, CBO, and Cauldrath are doing/have done. It'd be great if you could find out the range of randomness for stun and damage and display it in the HUD. I'm also positive that the game skews the randomness very heavily in favor of whoever lost the first round (especially throw and super damage), so it'd be nice to see how big the difference is.
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    Guiles best dizzy is j.hk, st. hp, flashkick XD. It's an instant dizzy combo. Pretty sure his close st. hp, j.hk and backfist do the most stun, all seeming to do same amount (which seems to be 10-16) disproving that stupid theory someone had that medium normals do the most stun when its character dependent.
    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
  • Big OBig O Joined: Posts: 381
    Yeah I found out that J. HK and J. MP do the most stun the old fashioned way lol. I also stumbled upon the combo you mentioned, but it doesn't seem to work on some characters like Blanka (even crazy HDR Flashkick lol). Also tried a bunch of different links to see which ones do the most stun. Sadly Cr. MP, St. HP is the best I came up with, although if you tack on HK Flashkick you can dizzy Sim most of the time. A lot Guiles random normals seem to do barely any stun like step kick and upside down kick.
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    Ok, I think I found where the damage is randomized for player 1's damage (using guile's close st.hp):

    Possible base damage:

    Not sure how register d4 gets its value, haven't gone back that far

    1st Value:
    (copy datatype 'word' from register D4 to register D6)

    D6=E1A7FFCE 0BF63C: move.w D4, D6

    After this calculation D6 = E1A7001C (28 Decimal, unsure what this number is)

    The next calculation performed to D6 is:
    (Copy datatype byte of register A1 (e.g. xxxxxx00) + D0.w (e.g. D0's xxxx0000) to register D6)

    D6=E1A7001C 0BEDA4: move.b (A1,D0.w), D6

    After this calculation D6 = E1A70018 (24 decimal, possibly the base damage, although I could never achieve 24 dmg using guile's close st. hp, the most I could get is 22, which never occured in any calculations at this point)

    The next calculation performed to D6:

    (Add datatype 'word' from register D0 (xxxx0000) to register d6)

    D6=E1A70018 0BEE6A: add.w D0, D6

    After the calculation D6=E1A70019 (25 decimal)

    Then a final calculation is performed:

    (Subtract datatype 'word' value in register D5 from register D6)

    D6=E1A70019 0BEE78: sub.w D5, D6

    After the calculation D6=E1A70015 (21 Decimal, Final damage)

    This is then subtracted from player 2's life at:

    (Subtract datatype word value in register D6 (0015) from the address located at 2A + register A2

    D6=E1A70015 0BE646: sub.w D6, ($2a,A2)

    This happens for all normals, throws use different addresses I believe. Not sure about specials. One thing that always seems to happen is there is that value that I marked as "Possible base damage" that occurs during every damage calculation for normals, this value is always the same when using the same normal.

    The 'randomness' of ST's damage occurs during the subtract and add operations after that value is derived (0BEE6A: add.w D0, D6 and 0BEE78: sub.w D5, D6), these can vary during every damage calculation, no idea on the range. Normals also seem to do significantly less damage when the opponent is at very low life (ST.hp usually does 20 dmg on avg, when ken had 10-12 life left when the music change, it would do as low as 7-8 dmg).

    So that's what I've found so far, it's a pain in the ass reversing 68000 ASM when you're used to x86 little endian.

    I can't sleep...so ya.
    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    Yeah I found out that J. HK and J. MP do the most stun the old fashioned way lol. I also stumbled upon the combo you mentioned, but it doesn't seem to work on some characters like Blanka (even crazy HDR Flashkick lol). Also tried a bunch of different links to see which ones do the most stun. Sadly Cr. MP, St. HP is the best I came up with, although if you tack on HK Flashkick you can dizzy Sim most of the time. A lot Guiles random normals seem to do barely any stun like step kick and upside down kick.


    J. hk -> st. hp xx flashkick does work on blanka....I just did it without tool assistance and if you wanna get on supercade I'll show you there :p. Use LK flashkick. Just did it in HDR too with HDR and classic guile.

    GET BETTER! =P
    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
  • ComedyBlissOptionComedyBlissOption Joined: Posts: 65
    Keep in mind that the yoga book hyper does have the base damage values.
    T.Akiba's page lists the "guts" or "damage scaling" system when you have low life.
    Translation by NKI:
    T.Akiba's SF2 Data
    Interestingly it also lists throw damage and the throw damage when you're behind a round.
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    Ya, you can get them from yoga book by doing 144 * 0.<amount in yoga> since yoga lists it as %. I've just always questioned the accuracy of yoga book hyper.

    I think mostly everyone is interested in the random factor of how much is subtracted from the base value, since the base value is 100%, and you can randomly get a larger or lower number even if the dummy has the same amount of life.
    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
  • oldschool_BRoldschool_BR Projectile spammer Joined: Posts: 2,442
    Keep in mind that the yoga book hyper does have the base damage values.
    Yeah, but it misses a bunch of values, and also did not take a number of active frames into account. For example, it did not take Gief's anti-air close Jab into account for the frame data. Also, it does not have full damage data for special moves such as Shoryukens, Tomahawk Buster and Flash Kicks, whose damage depends on which active part connects. A few of them are listed in the Wiki, but most are yet to be determined, or even identified.
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    Updated, now has it's own Google code page and updates will be committed to the SVN (I'll be placing zipped downloads in the download section for the non-tech savvy :P).

    Removed the P2 left and right increment/decrement because it really wasn't necessary.

    Added a hotkey to set the stage timer to infinite, I got annoyed with setting it in cheat engine everytime. Also cleaned the code up.
    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
  • ComedyBlissOptionComedyBlissOption Joined: Posts: 65
    I think there's kind of a point where damage is damage and you can just eyeball it and intuitively base your gameplan from there. You don't need to know the absolute exact damage range of your attacks. You can catalogue it if you want but it isn't going to help anyone. Finding the highest damage combos (in a game like ST) can generally be figured out without having to be so spergy.
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    I think there's kind of a point where damage is damage and you can just eyeball it and intuitively base your gameplan from there. You don't need to know the absolute exact damage range of your attacks. You can catalogue it if you want but it isn't going to help anyone. Finding the highest damage combos (in a game like ST) can generally be figured out without having to be so spergy.

    I find it fun to pick a game apart...*shrug* But yes, agreed for the most part, but you never know, there may be some weird and quirky mechanic such as damage more damage occuring when the timer has a '9' in it or something stupid, or something such as one char does more damage when he is on a specific stage as weird as something like that is, it could prove useful.
    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
  • papasipapasi N Ken is the truth Joined: Posts: 1,568
    I find it fun to pick a game apart...

    Agreed. Looking at the yoga book hyper, you'd figure that ryu j.rh, cr. mp xx tatsu deal more damage than j.rh, st fierce xx fb, but it's not...

    even j.rh, cr. fierce xx tatsu (works on big characters) only deal similar damage to j.rh, st fierce xx fb.

    eye balling is not very precise in some cases.
    eltrouble "I doubt that ST will be on the main stream ever again."
    OhNuki: Real men play ST!!
    James Chen: there is something special about playing ST on a cab. It just feels so goooooood.
    Super Turbo Hitbox & safe jump guide http://www.strevival.com/hitbox/
  • Big OBig O Joined: Posts: 381
    J. hk -> st. hp xx flashkick does work on blanka....I just did it without tool assistance and if you wanna get on supercade I'll show you there :p. Use LK flashkick. Just did it in HDR too with HDR and classic guile.

    GET BETTER! =P

    Yeah you are right. I guess I wasn't close enough or something because the Flashkick would whiff on Guile, Blanka, and Shotos sometimes. Lol the first time I tried it today on Blanka it worked...
    1st Value:
    (copy datatype 'word' from register D4 to register D6)

    D6=E1A7FFCE 0BF63C: move.w D4, D6

    After this calculation D6 = E1A7001C (28 Decimal, unsure what this number is)

    The next calculation performed to D6 is:
    (Copy datatype byte of register A1 (e.g. xxxxxx00) + D0.w (e.g. D0's xxxx0000) to register D6)

    D6=E1A7001C 0BEDA4: move.b (A1,D0.w), D6

    After this calculation D6 = E1A70018 (24 decimal, possibly the base damage, although I could never achieve 24 dmg using guile's close st. hp, the most I could get is 22, which never occured in any calculations at this point)

    The next calculation performed to D6:

    (Add datatype 'word' from register D0 (xxxx0000) to register d6)

    D6=E1A70018 0BEE6A: add.w D0, D6

    After the calculation D6=E1A70019 (25 decimal)

    Then a final calculation is performed:

    (Subtract datatype 'word' value in register D5 from register D6)

    D6=E1A70019 0BEE78: sub.w D5, D6

    After the calculation D6=E1A70015 (21 Decimal, Final damage)

    This is then subtracted from player 2's life at:

    (Subtract datatype word value in register D6 (0015) from the address located at 2A + register A2

    D6=E1A70015 0BE646: sub.w D6, ($2a,A2)

    In here, http://shoryuken.com/f223/things-you-just-dont-understand-about-st-259433/index4.html Cauldrath mentions the character specific damage scaling is about 82% for most characters and 63% for Zangief. Maybe one of these steps is related to the character specific/low health scaling done. The number in the second step seems close enough to be 82% of the number in the first step assuming it rounds up or something.
  • TNBTNB Bye. Joined: Posts: 1,180
    O____O. An ST stun meter and super gauge point counter. this will provide exact values. wow.
    Skills and attitude prove worth as a player, not the internet.
  • mrdhalsimmrdhalsim Joined: Posts: 378
    This looks really cool Pasky, certainly worthy of being called amazing!

    I have something new in the works myself but got a call from the white house a few days ago asking me to hold off for a bit so society will hear the big news item this week first. I was like, the people have been waiting too long, but they said please XSPR don't do it just yet, so I was like ok fine.
  • DNGR S PAPERCUTDNGR S PAPERCUT Joined: Posts: 1,608
    pasky, I used to think you were an idiot. now I know that I was only half right, turns out your also a savant, idiot savant.
    ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ஜ۩۞۩ஜ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
    Ah shit..    
    ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ஜ۩۞۩ஜ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    <3 u too.
    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    • Added Dammit, MZ, and Felineki's Hitbox displaying script.
    • You can now toggle the hitboxes, and the HUD display.
    • HUD no longer displays outside of a match
    • Got rid of moving the character left by 1 hotkey, you should only need one direction to determine max range for throws and whatever else for testing, move the dummies manually then pinpoint by moving P1 left to right in increments of '1' using the script.
    • Cleaned up the source code as well.
    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
  • Born2SPDBorn2SPD SPD Fanatic Joined: Posts: 276
    First of all, nice work on that script, pasky. I'll post some stuff that may help you (or may not). I don't know if this would be the best place to post it or if I should create a new topic, I hope I'm not derailing this one.

    I believe I discovered how exactly the throw ranges work in this game. When I first read the throw ranges in the papasi's site, I didn't understood why Zangief's normal throws had more range (98 pixels) than Honda's (93 pixels), because in that match-up its a fact that Honda's normal throws have a lot more range than Gief's normal throws. So after a bit of time analysing T.Akiba's throw range diagrams, I came with a possible answer...

    The throw ranges are calculated from one character's center pivot to the other character's pivot. Honda can throw (with normal throw) ryu from a max distance of 93 pixels; Gief can throw (with normal throw) Ryu from a max distance of 98 pixels.
    Assuming that you can clearly affirm that Zangief has 5 pixels better range than Honda, why in the Gief x Honda matchup that doesn't happen? That's the main point.

    Well, I failed to make it clear to oldschoolBR in our native language, and my English is not that good, but I hope you guys can understand, haha.
    Each character has an additional "factor" in the math of throw ranges. The math is:

    If "your throw range" + "characters being throw factor" is equal or bigger than the "distance between centers" then the throw happens (obviously only if he is in a throwable state).

    Zangief's factor is 16 (assuming that ryu's factor is 0, notice in that diagram from T Akiba's site that everyone has 16 pixels better range when throwing Gief, in comparison to throwing Ryu), which is really bad. By the same logic, Honda's "factor" is -1, which is a good thing.

    So, in the math of normal throw ranges, the results are:

    For Gief throw Honda with a normal throw:

    98 (Zangief's throw range) - 1 (Honda's "factor") = 97 pixel range, the same from T.Akiba's diagram.
    For Honda throw Gief with a normal throw:

    93 (Honda's throw range) + 16 (Zangief's "factor") = 109 pixel range, again matches the T.Akiba diagram.

    Another example:
    Both Gief's RH Suplex and T.Hawks Typhoon have 112 pixels to throw Ryu, but when they face each other, Hawks Typhoon will have 10 pixels better range. This happens because Hawks factor is 6 while Gief's 16.

    Obviously, all that stuff will only make sense if the diagram from t.akiba is right (http://nki.combovideos.com/data.html#distance), that is, I did not test those values. If they're right, then I firmly believe that's how the throw ranges work. So, assuming these values are actually right, it is possible to create 2 tables with enough information so as to reckon which throw beats others for all match-ups.
    Factors:
    2aiiush.png
    Throw Ranges:
    2mwayao.png
    I keep reading stuff about ST revival, about bringing this game back to life...
    Its nice to see big tourneys happening and old top players giving this game a chance again...
    But what we really need is new players... And having a strong scene obviously helps...
    But in my opinion what will really bring new players to our community is good tutorials/character guides so they can learn easily and have something to start... So, actually good players, stop being selfish and write stuff about the chars you know! The wiki is lacking so much basic content... Stop being lazy and do something about it.
  • papasipapasi N Ken is the truth Joined: Posts: 1,568
    fcs-pasky, don't know if this is too complicated for you =]

    but would it be possible to add a input display in the hud like this?

    screenshotjl.th.jpg



    also, would you be able to do some more reverse engineering?

    I was wondering if we can write values to memory address or registers to trigger the 2p to do a special move?

    Since you have a "Flash Kick: [not] ready" check, if we can program the 2p to do a Flash Kick as soon as it's ready, we can create a training mode to practice safe jump a reversal, etc.

    thumbsupy.gif
    eltrouble "I doubt that ST will be on the main stream ever again."
    OhNuki: Real men play ST!!
    James Chen: there is something special about playing ST on a cab. It just feels so goooooood.
    Super Turbo Hitbox & safe jump guide http://www.strevival.com/hitbox/
  • oldschool_BRoldschool_BR Projectile spammer Joined: Posts: 2,442
    snip
    LOL. Alright, I finally got how it works.
    Zangief's factor is 16 (assuming that ryu's factor is 0, notice in that diagram from T Akiba's site that everyone has 16 pixels better range when throwing Gief, in comparison to throwing Ryu), which is really bad.
    That's just what we need: Gief players whining about their throw ranges! :rofl:
    but would it be possible to add a input display in the hud like this?

    screenshotjl.th.jpg
    MAME HK2v9 has a similar thing (video ). Now I got no idea where the code for that thing is.
  • RufusRufus An unexpected database error has occurred. Joined: Posts: 1,966
    ...
    Well, I failed to make it clear to oldschoolBR in our native language, and my English is not that good, but I hope you guys can understand, haha.
    Each character has an additional "factor" in the math of throw ranges. The math is:

    If "your throw range" + "characters being throw factor" is equal or bigger than the "distance between centers" then the throw happens (obviously only if he is in a throwable state).
    ...
    For throw v throw you could just make it a net throw range
    077 Ryu
    077 Ken
    094 Honda Normals
    099 Honda Oichio
    091 Chun Li
    092 Blanka
    082 Zangief Normal
    082 Zangief Suplex Short/Forward
    096 Zangief Suplex Roundhouse
    086 Zangief Run Grab Short/Forward
    087 Zangief Run Grab Roundhouse
    124 Zangief SPD
    077 Zangief FAB
    076 Guile
    087 Dhalsim
    071 T. Hawk Normal
    106 T. Hawk 360/720
    075 Cammy
    069 Fei Long
    076 Dee Jay
    082 Boxer Strong
    072 Boxer Fierce
    078 Claw
    074 Sagat
    082 Dictator
    077 Akuma
    
    Hitboxes http://www.pedantic.org/~nate/HDR/
    "You don't know what you're talking about as much as I do." -- Unknown
  • deadfrogdeadfrog Joined: Joined: Posts: 6,787
    oh my god
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    fcs-pasky, don't know if this is too complicated for you =]

    but would it be possible to add a input display in the hud like this?

    screenshotjl.th.jpg



    also, would you be able to do some more reverse engineering?

    I was wondering if we can write values to memory address or registers to trigger the 2p to do a special move?

    Since you have a "Flash Kick: [not] ready" check, if we can program the 2p to do a Flash Kick as soon as it's ready, we can create a training mode to practice safe jump a reversal, etc.

    thumbsupy.gif

    A scrolling input display script already exists:

    http://fbarr.googlecode.com/files/ScrollingInputDisplay-v006.zip, read the readme.

    If I have time I'll ask the author if I can incorporate it or something at some point.

    As for reverse engineering the 2p to do a move, that would be extremely over complicated and annoying. Also, the lua library for mame-rr does not include anything for input from a user.

    luaengine.c - mame-rr - MAME Rerecording - Google Project Hosting
    static int doPopup(lua_State *L, const char* deftype, const char* deficon) {
    	const char *str = luaL_checkstring(L, 1);
    	const char* type = lua_type(L,2) == LUA_TSTRING ? lua_tostring(L,2) : deftype;
    	const char* icon = lua_type(L,3) == LUA_TSTRING ? lua_tostring(L,3) : deficon;
    
    	int itype = -1, iters = 0;
    	int iicon = -1;
    	static const char * const titles [] = {"Notice", "Question", "Warning", "Error"};
    	const char* answer = "ok";
    
    	while(itype == -1 && iters++ < 2)
    	{
    		if(!core_stricmp(type, "ok")) itype = 0;
    		else if(!core_stricmp(type, "yesno")) itype = 1;
    		else if(!core_stricmp(type, "yesnocancel")) itype = 2;
    		else if(!core_stricmp(type, "okcancel")) itype = 3;
    		else if(!core_stricmp(type, "abortretryignore")) itype = 4;
    		else type = deftype;
    	}
    	assert(itype >= 0 && itype <= 4);
    	if(!(itype >= 0 && itype <= 4)) itype = 0;
    
    	iters = 0;
    	while(iicon == -1 && iters++ < 2)
    	{
    		if(!core_stricmp(icon, "message") || !core_stricmp(icon, "notice")) iicon = 0;
    		else if(!core_stricmp(icon, "question")) iicon = 1;
    		else if(!core_stricmp(icon, "warning")) iicon = 2;
    		else if(!core_stricmp(icon, "error")) iicon = 3;
    		else icon = deficon;
    	}
    	assert(iicon >= 0 && iicon <= 3);
    	if(!(iicon >= 0 && iicon <= 3)) iicon = 0;
    
    #ifdef WIN32
    	{
    		static const int etypes [] = {MB_OK, MB_YESNO, MB_YESNOCANCEL, MB_OKCANCEL, MB_ABORTRETRYIGNORE};
    		static const int eicons [] = {MB_ICONINFORMATION, MB_ICONQUESTION, MB_ICONWARNING, MB_ICONERROR};
    		int ianswer = MessageBoxA(win_window_list->hwnd, str, titles[iicon], etypes[itype] | eicons[iicon]);
    		switch(ianswer)
    		{
    			case IDOK: answer = "ok"; break;
    			case IDCANCEL: answer = "cancel"; break;
    			case IDABORT: answer = "abort"; break;
    			case IDRETRY: answer = "retry"; break;
    			case IDIGNORE: answer = "ignore"; break;
    			case IDYES: answer = "yes"; break;
    			case IDNO: answer = "no"; break;
    		}
    
    		lua_pushstring(L, answer);
    		return 1;
    	}
    #else
    
    	char *t;
    #ifdef __linux
    	int pid; // appease compiler
    
    	// Before doing any work, verify the correctness of the parameters.
    	if (strcmp(type, "ok") == 0)
    		t = "OK:100";
    	else if (strcmp(type, "yesno") == 0)
    		t = "Yes:100,No:101";
    	else if (strcmp(type, "yesnocancel") == 0)
    		t = "Yes:100,No:101,Cancel:102";
    	else
    		return luaL_error(L, "invalid popup type \"%s\"", type);
    
    	// Can we find a copy of xmessage? Search the path.
    	
    	char *path = strdup(getenv("PATH"));
    
    	char *current = path;
    	
    	char *colon;
    
    	int found = 0;
    
    	while (current) {
    		colon = strchr(current, ':');
    		
    		// Clip off the colon.
    		*colon++ = 0;
    		
    		int len = strlen(current);
    		char *filename = (char*)malloc(len + 12); // always give excess
    		snprintf(filename, len+12, "%s/xmessage", current);
    		
    		if (access(filename, X_OK) == 0) {
    			free(filename);
    			found = 1;
    			break;
    		}
    		
    		// Failed, move on.
    		current = colon;
    		free(filename);
    		
    	}
    
    	free(path);
    
    	// We've found it?
    	if (!found)
    		goto use_console;
    
    	pid = fork();
    	if (pid == 0) {// I'm the virgin sacrifice
    	
    		// I'm gonna be dead in a matter of microseconds anyways, so wasted memory doesn't matter to me.
    		// Go ahead and abuse strdup.
    		char * parameters[] = {"xmessage", "-buttons", t, strdup(str), NULL};
    
    		execvp("xmessage", parameters);
    		
    		// Aw shitty
    		perror("exec xmessage");
    		exit(1);
    	}
    	else if (pid < 0) // something went wrong!!! Oh hell... use the console
    		goto use_console;
    	else {
    		// We're the parent. Watch for the child.
    		int r;
    		int res = waitpid(pid, &r, 0);
    		if (res < 0) // wtf?
    			goto use_console;
    		
    		// The return value gets copmlicated...
    		if (!WIFEXITED(r)) {
    			luaL_error(L, "don't screw with my xmessage process!");
    		}
    		r = WEXITSTATUS(r);
    		
    		// We assume it's worked.
    		if (r == 0)
    		{
    			return 0; // no parameters for an OK
    		}
    		if (r == 100) {
    			lua_pushstring(L, "yes");
    			return 1;
    		}
    		if (r == 101) {
    			lua_pushstring(L, "no");
    			return 1;
    		}
    		if (r == 102) {
    			lua_pushstring(L, "cancel");
    			return 1;
    		}
    		
    		// Wtf?
    		return luaL_error(L, "popup failed due to unknown results involving xmessage (%d)", r);
    	}
    

    So there is no way to grab input from users. You can only make popups that can show "Yes", "No", "Cancel", and "Ok", I could add the library myself to mame-rr and recompile it (adding more lua hotkeys while I'm at it), but it'd be pointless to do so when you can just use:

    macrolua - input playback and recording utility - Google Project Hosting (Use Automacro)

    It's the same shit Mr. Dhalsim (XSPR) is using in his T.R.U.S.T. program. Why make a character do a special move via hotkey, when you can just program his inputs and press play?

    Born2SPD:

    I haven't had time to absorb everything you said, I'm studying for finals this week, but I'll come back and take a look at some point.
    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
  • papasipapasi N Ken is the truth Joined: Posts: 1,568
    A scrolling input display script already exists

    this is so freaking cool man, why you guys know everything?

    screenshotpm.th.jpg

    damnit, someone just fix the buggy infinite-life cheat already ouchz.gif

    we almost have a better training mode than the console sf2.

    btw, if you were to incorporate that into HUD (which would be awesome), please do it mvc3 style instead of sf4 style (i.e. horizontal)

    questions:

    screenshotckt.jpg

    why gief has two numbers next to his move and ken only has one?
    what are the differences between these 2 numbers?
    As for reverse engineering the 2p to do a move, that would be extremely over complicated and annoying. Also, the lua library for mame-rr does not include anything for input from a user.

    but it'd be pointless to do so when you can just use:

    macrolua - input playback and recording utility - Google Project Hosting (Use Automacro)

    It's the same shit Mr. Dhalsim (XSPR) is using in his T.R.U.S.T. program. Why make a character do a special move via hotkey, when you can just program his inputs and press play?

    OK so XSPR explained macrolua to me



    so you can program 2p to do a dragon punch.

    but let's say you knock 2p out of a jump attack, how do you use macrolua to tell 2p to do dp at the reversal frame without reading the game state (i.e. dp [ready/not ready])?

    i hope you can really figure out how!


    [nvm: it's pretty straight forward i commented them out already. good job creating functions =]

    PS. may I suggest we remove (or have an option to disable) the hud highlighted in red?

    screenshotyn.th.jpg

    i dont think anyone is playing this in 2p mode, and when i'm doing the throw range image capture they are distracting]
    eltrouble "I doubt that ST will be on the main stream ever again."
    OhNuki: Real men play ST!!
    James Chen: there is something special about playing ST on a cab. It just feels so goooooood.
    Super Turbo Hitbox & safe jump guide http://www.strevival.com/hitbox/
  • oldschool_BRoldschool_BR Projectile spammer Joined: Posts: 2,442
    I use 2P mode to gather more data at the same time. I use the stick for a few attacks and the keyboard for some more. Anyway, I will say I rarely use anything but damage, timer and stun, so those numbers do not get used by me often.

    You never use 2P mode just cos you have no friends!
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    I use 2P mode to gather more data at the same time. I use the stick for a few attacks and the keyboard for some more. Anyway, I will say I rarely use anything but damage, timer and stun, so those numbers do not get used by me often.

    You never use 2P mode just cos you have no friends!

    Updated it, you can toggle the special move data now.
    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
  • deadfrogdeadfrog Joined: Joined: Posts: 6,787
    i went to bed and woke up and i still can't believe how awesome this is
  • blitzfublitzfu Cosmic Power Joined: Posts: 3,072
    Really great stuff, you guys are geniuses. Good job to Born2SPD for figuring out the "throw constant", now Akiba's data is a little easier to understand.

    I'm really amazed that each character has a factor that can increase/decrease the opponent's throw range. It just goes to show you that ST is a very complex, very well designed game.

    If anybody can figure out these 2 questions I have, it would be appreciated:

    1) Are the throw ranges measured in pixels?

    2) Why are some meaty normals so hard to reversal throw than others?

    I have an incredibly tough time reversal throwing Boxer's meaty cr Forward and Dictator's meaty cr Forward, even from point blank range. I don't really have a problem reversal throwing any other normals after wakeup, but it seems to me like these 2 crouching normals may have a property where they reduce the opponent's throw range or something. Similar to the "throw constant" mentioned above, possibly for a very short time during the hitting frames.
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    Really great stuff, you guys are geniuses. Good job to Born2SPD for figuring out the "throw constant", now Akiba's data is a little easier to understand.

    I'm really amazed that each character has a factor that can increase/decrease the opponent's throw range. It just goes to show you that ST is a very complex, very well designed game.

    If anybody can figure out these 2 questions I have, it would be appreciated:

    1) Are the throw ranges measured in pixels?

    2) Why are some meaty normals so hard to reversal throw than others?

    I have an incredibly tough time reversal throwing Boxer's meaty cr Forward and Dictator's meaty cr Forward, even from point blank range. I don't really have a problem reversal throwing any other normals after wakeup, but it seems to me like these 2 crouching normals may have a property where they reduce the opponent's throw range or something. Similar to the "throw constant" mentioned above, possibly for a very short time during the hitting frames.

    It may not be that their throw range is reduced or increase, but that some unknown "hitbox" for throws moves back when you do certain normals. How throws are determined is still somewhat of a mystery aside from knowing the range in numbers.

    The numbers I have displaying on the screen are not in pixels, although I guess I could make the calculation to translate it to pixels. The numbers displayed are the actual values the game uses to determine where the character is on the stage, not pixels.
    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
  • blitzfublitzfu Cosmic Power Joined: Posts: 3,072
    It may not be that their throw range is reduced or increase, but that some unknown "hitbox" for throws moves back when you do certain normals. How throws are determined is still somewhat of a mystery aside from knowing the range in numbers.

    Basically you're repeating what I said in different words. We may not know everything about how throws work in the game, but I wouldn't call it a "mystery". So much info has been fleshed out about how throws work in ST over the years, that I think we can say that we have a good grasp of throw knowledge.

    It's obvious that the "throw factor" does reduce/increase throw range depending on which character the opponent is facing. If the opponent's character is Ryu/Ken/Akuma/Fei, then throw range is not affected. But if it's anybody else, it's increased or reduced, and if the opponent is Zangief, then it's REALLY increased.

    This is why Honda is harder to tick with SPD or Typhoon. I've noticed that Gief or Hawk players will do less ticks vs Honda compared to other characters. This is so they're not pushed out too far in order to grab Honda. The reason for this is obviously Honda's throw factor being a negative number, meaning he decreases the opposing character's throw range by 1 unit (what their default throw range would be vs Ryu/Ken/Akuma/Fei since those 4 characters have a neutral factor).
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    Training mode cheat in the works, although it won't work with the lua script, it needs to be added to the xml cheat file because I have to do writes to the actual ROM to make a jump after the hit stun decrement loop, the lua engine doesn't have the ability to write to the decrypted CPU instructions memory addresses.

    Already tested the jump and it works great, it should refill both players health bars after the hit stun timer decrements all the way, haven't tested it with throws however, they work differently. Just need to hope that the memory address I'm jumping to doesn't get written to by the game, so far I haven't seen it change.

    EDIT:

    After some testing, it still has bugs, the stun meter is some how affected and can randomly stun so I have to disable stun.

    Also, I'm not gonna bother today to find the throw damage subroutine and modify it, so throwing will damage the dummies. I may possibly look into this further to fix the stun, but as of right now, this was a bitch to make to begin with, tracing through literally thousands of cpu instructions and setting breakpoints to find out when the hit stun timer loop ended was time consuming.

    Looping: [Z80 Assembler] Looping - Pastebin.com
    Not Looping: [Z80 Assembler] Not looping - Pastebin.com

    Wasn't fun...well in a weird way it was seeing how the hit stun decremented before the dummy is pushed back...but still

    For those interested in the actual workings:

    Basically I wrote a memory hook that jumps out of the original code, into my own code and then returns back, so ya....basic memory hook:

    Original game code:
    04C97C: addq.b #2, ($2,A6)
    04C980: rts // Return out of the hit stun timer counter
    

    Modified with a memory hook:
    04C97C: jmp $ffffd12.l //  This is our spiffy memory hook, jump the PC to the new memory location
    FFFFD12: addq.b  #2, ($2,A6)  // Do the overwritten instruction
    FFFFD16: move.b  #$90, $ff8479.l // Set P1's life to 144
    FFFFD1E: move.b  #$90, $ff860b.l // Set P1's Life bar to 144
    FFFFD26: move.b  #$90, $ff8879.l // Set P2's Life to 144
    FFFFD2E: move.b  #$90, $ff8a0b.l // Set P2's Life bar to 144
    FFFFD36: rts // Return out of the hit stun time counter and everythings back to normal
    

    AND BEHOLD:

    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    Training mode cheat:

    Downloads - ssf2thud - Heads Up Display for Super Street Fighter II Turbo - Google Project Hosting

    Only works with mame-rr/mame, not sure how to do ROM address hacks in FBA.

    Install:
    1. DO NOT UNZIP THE CHEAT.ZIP, LEAVE IT ZIPPED
    2. DO NOT UNZIP THE CHEAT.ZIP, LEAVE IT ZIPPED
    3. DO NOT UNZIP THE CHEAT.ZIP, LEAVE IT ZIPPED
    4. DO NOT UNZIP THE CHEAT.ZIP, LEAVE IT ZIPPED
    5. DO NOT UNZIP THE CHEAT.ZIP, LEAVE IT ZIPPED
    6. DO NOT UNZIP THE CHEAT.ZIP, LEAVE IT ZIPPED

    7. Place the cheat.zip in the same directory as mame.exe

    8. You have two options to run mame with cheats, either run mame from the command line like this: mame.exe -cheat.

    9. The 2nd option is to open mame-rr.ini and edit the line under 'Core Misc Options' that says 'cheat 0' and change it to 'cheat 1'. This is the better option because once you save this file you won't ever have to edit it again and mame will always run with the cheat option enabled.

    10. Press tab during the game to bring up the mame menu, go to cheats and turn it on or off.

    Stun does not work during the training mode cheat, unfortunately I haven't fixed that yet. Throws also still do damage in training mode, but this shouldn't be a problem, just hit the dummy again to refill it's life. Throw hit stun is also messed up.
    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
  • papasipapasi N Ken is the truth Joined: Posts: 1,568
    fcs-pasky, why are you so awesome? just tested it, works great! i actually dont like dizzy in training mode, perfect!

    on a side node, the original mame has all those [easy dragon punch] [easy spd] cheats, do you think you can get some insight from those and see if we can trigger 2p dummy to do reversal dp, etc?

    i see in your script you can actually write values to memory addresses (move p1 left 1 pixel)
    eltrouble "I doubt that ST will be on the main stream ever again."
    OhNuki: Real men play ST!!
    James Chen: there is something special about playing ST on a cab. It just feels so goooooood.
    Super Turbo Hitbox & safe jump guide http://www.strevival.com/hitbox/
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    See those values I'm monitoring in the HUD? All those "easy special" cheats do, is set them to the maximum value (e.g. flashkick to 0x06), so that when you press :u::k: the move instantly comes out without a charge. It doesn't make them do the special instantly because it still requires the final input (:f::p: for fireball, :b::k: for hurricane kick etc...)

    I told you, if you want a special, use input macro, set a hotkey with it and that will make them dp (after you've set it to dp)....

    I'll be writing my own input scroll display sometime next week.
    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
  • papasipapasi N Ken is the truth Joined: Posts: 1,568
    Yeah I get your point, we can use luamacro to do special moves, but the problem to solve is *when* to do it.

    How can we teach the dummy to do dp first thing after it got knock down?

    I guess that's a harder problem to solve. Maybe we can tackle that once we learn more about the source code / debugger.

    Now the mame training mode is better than the consoles (do you guys actually find any good use of the auto-block?)
    eltrouble "I doubt that ST will be on the main stream ever again."
    OhNuki: Real men play ST!!
    James Chen: there is something special about playing ST on a cab. It just feels so goooooood.
    Super Turbo Hitbox & safe jump guide http://www.strevival.com/hitbox/
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    I'll never go that far in to find the reversal flag and trigger a special on that frame...it's too annoying to dig through, I have other projects I work on in my free time too (Doing Cadash right now).

    You're just gonna have to deal with using T.R.U.S.T and have it load a save state where the dummy is knocked down and will dp in a pre-determined amount of frames if you wanna practice safe jumps (which i assume that's what you wanna do). That's what that program seems designed to do anyways.

    If I had the actual game source it'd be easy as hell, good luck getting that.

    Auto block is good for seeing which part of a combo you missed. It's not really necessary in ST.
    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
  • papasipapasi N Ken is the truth Joined: Posts: 1,568
    haha you get bored easily =]

    if you were to do the horizontal scrolling input display, please consider make the icons much smaller.
    the current set they have is too big, i barely see all my inputs for 1 SPD.

    another reason is that you might need to display 3+ buttons as the same time stacked together, so you'll need smaller icons anyway.

    damn the current vertical icons look so much like sf4 it's disgusting :)

    its nice to see why i'm getting green hands instead of spd, i pressed the punch just right before i hit up


    [PS. for those who don't know how to create mame-rr.ini, type "mame -createconfig" in the command prompt]
    eltrouble "I doubt that ST will be on the main stream ever again."
    OhNuki: Real men play ST!!
    James Chen: there is something special about playing ST on a cab. It just feels so goooooood.
    Super Turbo Hitbox & safe jump guide http://www.strevival.com/hitbox/
  • -Sesshomaru--Sesshomaru- Joined: Posts: 15
    Pasky, please add something to make ST to run in actually 60 fps, u know, no frame skipping, because speed 0 still skips some frames, when u finish the game, u can see how the CPU vs CPU at the ending credits run with no frame skipping, I suppose its like speed -1?
  • PaskyPasky Ninja with pistol! Joined: Posts: 1,863
    Pasky, please add something to make ST to run in actually 60 fps, u know, no frame skipping, because speed 0 still skips some frames, when u finish the game, u can see how the CPU vs CPU at the ending credits run with no frame skipping, I suppose its like speed -1?

    That's the way the actual game played at the arcades. FBA is terrible at keeping track of CPU cycles and it's timing is off (at least the version ggpo uses that is 2 years old), so sometimes you'll get 59.6 frames per second, 59.8, 59.9, mame is far more accurate and pretty close to the real board, if you're having frame skip issues it's probably because you have a slow pc.
    <Pasky> so you can go extra fast by just holding it?
    <bookah> turbo handjob
    <baklakiller> sure if had a penis
    <baklakiller> im a beginner gief
Sign In or Register to comment.