Street fighter 89

In Progress Street Fighter 89 The Final Fight by Machok v3.7

No permission to download
The project is currently under development.
More less the best I can do without script
You put the word SUPER inside the character ICON

edit:
like this
8CwJ2Eg.png
 
should use script too?
Yes, you will need to put the same script in the level.c in order to reset the mp when any level starts. For players joining a in-progress game, use the join1.c/join2.c on the same way as the respawn.c
 
Is that MP bar default or is it a single sprite? I think it's got to do with setlayer, especially if there are big levels like that one.

Oh. I tried the animated MP before. I made an animated MP as a panel type model and I had to use script for it. But @DCurrent doesn't recommend me to use models. What I want(ed) is for it to be always with players every time their MP gets full.
 
Last edited:
Ilu, when I use super sprite to cover the mp bar it's keep getting glitching visual very often. Not really sure what is going on


Uptown Restaurant Stage REMAKE by @don vecta


and Yes more update will be shown soon :)
Looks like a layer issue, try to adjust values by putting the mpbar behind the icon at the levels.txt using the mpbarsize command.

1704328957451.png
 
Is that MP bar default or is it a single sprite? I think it's got to do with setlayer
the bar is default and covered with icon sprite


@Kratus

Thank you I keep focusing on last 4 variables but It seems noborder 0 is the cause
Code:
{noborder} turns on or off the border and shadow around life bars. {0} means there is, {1} means no outline or shadow.

now is better no more glitch I need to test it more though
C:
mpbarsize 45 6 1 1 0 -300 0 -300 -300
p1mp  31 209

Nice, this quick edit works well, glad it's there.
Uptown stage now looks great 🤗
 
@O Ilusionista @Kratus

Ok so I've been testing mp bar - iconmp and found a weird situation, not sure if this a bug or my setting isn't correct. Better to explain with pic

mpbar_colormagic.png

colormagic = yellow bar
colormagic2 = grey

1. mp is zero
2. mprate is filling
3. now this is start to confusing me, why suddenly the mpbar change to colormagic2 when it's not yet full?
because when this happened iconmphigh is also show up but I can't use my super yet
4. mpbar back to yellow (colormagic1) and still fill, this is why my super can't be used because mpbar hasn't full
5. mpbar is full, super now can be used

Question: Why does no.3 suddenly appear? and at the same time iconmphigh icon is also active, even though the mpbar is still not fully charged?
 
  • Wow
Reactions: NED
I have the same issue here and I never managed to fix. This happens since long time (I think 4432)
Sounds like something I need to look at. I never use those for anything, and don't recall a bug report (or I looked over it/forgot like an idiot). I'll take a crack.

DC
 
Just looked at the reading logic for HUD color bars... good lord what a bunch of spaghetti. The variable names are stuff like "orange" and "red" even though they can store any color... and the whole thing is just badly conceived. Added in 2005, by the same person who did that silly hardcoded dive function.

C:
void lifebar_colors()
{
    char *filename = "saves/lifebar.txt";
    char *buf;
    size_t size;
    int pos;
    ArgList arglist;
    char argbuf[MAX_ARG_LEN + 1] = "";

    char *command;

    if(buffer_pakfile(filename, &buf, &size) != 1)
    {
        goto default_file;
    }
    else
    {
        goto proceed;
    }

default_file:

    if(buffer_pakfile("data/lifebar.txt", &buf, &size) != 1)
    {
        color_black = 0;
        color_red = 0;
        color_orange = 0;
        color_yellow = 0;
        color_white = 0;
        color_blue = 0;
        color_green = 0;
        color_pink = 0;
        color_purple = 0;
        color_magic = 0;
        color_magic2 = 0;
        shadowcolor = 0;
        shadowalpha = BLEND_MULTIPLY + 1;
        shadowopacity = 255;
        return;
    }
    else
    {
        goto proceed;
    }

proceed:

    pos = 0;
    colorbars = 1;
    while(pos < size)
    {
        if(ParseArgs(&arglist, buf + pos, argbuf))
        {
            command = GET_ARG(0);
            if(command && command[0])
            {
                if(stricmp(command, "blackbox") == 0)
                {
                    color_black = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "whitebox") == 0)
                {
                    color_white = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "color300") == 0)
                {
                    color_orange = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "color25") == 0)
                {
                    color_red = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "color50") == 0)
                {
                    color_yellow = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "color100") == 0)
                {
                    color_green = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "color200") == 0)
                {
                    color_blue = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "color400") == 0)
                {
                    color_pink = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "color500") == 0)
                {
                    color_purple = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                //magic bars color declarations by tails
                else if(stricmp(command, "colormagic") == 0)
                {
                    color_magic = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "colormagic2") == 0)
                {
                    color_magic2 = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                //end of magic bars color declarations by tails
                else if(stricmp(command, "shadowcolor") == 0)
                {
                    shadowcolor = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "shadowalpha") == 0) //gfxshadow alpha
                {
                    shadowalpha = GET_INT_ARG(1);
                }
                else if(stricmp(command, "shadowopacity") == 0)
                {
                    shadowopacity = GET_INT_ARG(1);
                }
                else if(command && command[0])
                {
                    printf("Warning: Unknown command in lifebar.txt: '%s'.\n", command);
                }
            }
        }

        // Go to next line
        pos += getNewLineStart(buf + pos);
    }
    if(buf != NULL)
    {
        free(buf);
        buf = NULL;
    }
}
// ltb 1-17-05 end new lifebar colors

I haven't looked at the actual drawing portion yet, but I shudder to think about it. Well, guess that's why I get paid the big bucks... oh wait... :unsure:

DC
 
Last edited:
I remember I mentioned it already and other users too, but yeah, nobody made a Github report :(

And I clearly forgot. Honestly the github bug reports tend to get overlooked sometimes too, just because a lot of people abused/misused it to make unneeded suggestions or report things that aren't really bugs. I'll try to be better about checking it, or transferring bug reports so I have a list.

DC
 
@O Ilusionista @Kratus

Ok so I've been testing mp bar - iconmp and found a weird situation, not sure if this a bug or my setting isn't correct. Better to explain with pic

View attachment 6532

colormagic = yellow bar
colormagic2 = grey

1. mp is zero
2. mprate is filling
3. now this is start to confusing me, why suddenly the mpbar change to colormagic2 when it's not yet full?
because when this happened iconmphigh is also show up but I can't use my super yet
4. mpbar back to yellow (colormagic1) and still fill, this is why my super can't be used because mpbar hasn't full
5. mpbar is full, super now can be used

Question: Why does no.3 suddenly appear? and at the same time iconmphigh icon is also active, even though the mpbar is still not fully charged?
@machok I had this same issue in my old SF VS KOF game, I was able to bypass by putting the same color for both colormagic/colormagic2. It works for percentage and native methods in the mpbarsize.

C:
blackbox    255    255    0
whitebox    0    0    0

color25      255    0    0
color50      255    0    0
color100      255    255    0
color200      255    255    0
color300     255    255    0
color400     255    255    0
color500     255    255    0

colormagic    0    10    255
colormagic2    0    10    255

shadowcolor    0     0     0


Just looked at the reading logic for HUD color bars... good lord what a bunch of spaghetti. The variable names are stuff like "orange" and "red" even though they can store any color... and the whole thing is just badly conceived. Added in 2005, by the same person who did that silly hardcoded dive function.

C:
void lifebar_colors()
{
    char *filename = "saves/lifebar.txt";
    char *buf;
    size_t size;
    int pos;
    ArgList arglist;
    char argbuf[MAX_ARG_LEN + 1] = "";

    char *command;

    if(buffer_pakfile(filename, &buf, &size) != 1)
    {
        goto default_file;
    }
    else
    {
        goto proceed;
    }

default_file:

    if(buffer_pakfile("data/lifebar.txt", &buf, &size) != 1)
    {
        color_black = 0;
        color_red = 0;
        color_orange = 0;
        color_yellow = 0;
        color_white = 0;
        color_blue = 0;
        color_green = 0;
        color_pink = 0;
        color_purple = 0;
        color_magic = 0;
        color_magic2 = 0;
        shadowcolor = 0;
        shadowalpha = BLEND_MULTIPLY + 1;
        shadowopacity = 255;
        return;
    }
    else
    {
        goto proceed;
    }

proceed:

    pos = 0;
    colorbars = 1;
    while(pos < size)
    {
        if(ParseArgs(&arglist, buf + pos, argbuf))
        {
            command = GET_ARG(0);
            if(command && command[0])
            {
                if(stricmp(command, "blackbox") == 0)
                {
                    color_black = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "whitebox") == 0)
                {
                    color_white = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "color300") == 0)
                {
                    color_orange = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "color25") == 0)
                {
                    color_red = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "color50") == 0)
                {
                    color_yellow = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "color100") == 0)
                {
                    color_green = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "color200") == 0)
                {
                    color_blue = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "color400") == 0)
                {
                    color_pink = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "color500") == 0)
                {
                    color_purple = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                //magic bars color declarations by tails
                else if(stricmp(command, "colormagic") == 0)
                {
                    color_magic = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "colormagic2") == 0)
                {
                    color_magic2 = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                //end of magic bars color declarations by tails
                else if(stricmp(command, "shadowcolor") == 0)
                {
                    shadowcolor = _makecolour(GET_INT_ARG(1), GET_INT_ARG(2), GET_INT_ARG(3));
                }
                else if(stricmp(command, "shadowalpha") == 0) //gfxshadow alpha
                {
                    shadowalpha = GET_INT_ARG(1);
                }
                else if(stricmp(command, "shadowopacity") == 0)
                {
                    shadowopacity = GET_INT_ARG(1);
                }
                else if(command && command[0])
                {
                    printf("Warning: Unknown command in lifebar.txt: '%s'.\n", command);
                }
            }
        }

        // Go to next line
        pos += getNewLineStart(buf + pos);
    }
    if(buf != NULL)
    {
        free(buf);
        buf = NULL;
    }
}
// ltb 1-17-05 end new lifebar colors

I haven't looked at the actual drawing portion yet, but I shudder to think about it. Well, guess that's why I get paid the big bucks... oh wait... :unsure:

DC
@DCurrent I made an update some time ago to allow the engine to read the external saves folder for lifebar configuration in the same way as I did for the translation, but I didn't change how the color management works. It really needs to be improved.

Just as a curiosity, the intent of my change was to allow devs to export the lifebar.txt file through filestream scripts and then change the colors on-the-fly, like the translation does now.
 
I had this same issue in my old SF VS KOF game, I was able to bypass by putting the same color for both colormagic/colormagic2. It works for percentage and native methods in the mpbarsize.
for the color it's working great however iconmphigh still show up before it's reach full mp :unsure:
 
for the color it's working great however iconmphigh still show up before it's reach full mp :unsure:
Are you using native or percentage in the mpbarsiize? I remember when I tried to use the iconmps in the past and had a issue, but I don't remember my configs.
 
@Kratus

my [type] is percent based, but I also tried the default just the same
C:
mpbarsize 45 6 1 1 0 -300 -300 -300 -300
p1mp  31 209
 
Back
Top Bottom