Jump to content

Vagabond

Members+
  • Posts

    23
  • Joined

  • Last visited

Posts posted by Vagabond

  1. I saw it. A horrible, boring movie with a few moments that make you smile. It would be a much more enjoyable movie if they had compressed it into 5 or 10 minutes.

     

    The film starts off in your typical "Mystery" fashion, an event, reguarding the dissappearance of a scientist, that leaves you in wonder as to what happened. Also one of the many lame plot twists within this movie. If you can encompass your brain around a STUPID plot twist every 5 minutes, this is your movie. The twists weren't even decent. Highly generic movie and VERY boring. I should have seen RE2 instead.

  2. more info for that version:

    [ 2 ] 4 player support for following games:

     

        - Marvel Super Heroes Vs. Street Fighter (all clones)

        - Marvel Vs. Capcom (all clones)

        - X-men Vs. Street Fighter (all clones)

     

        Notes:

     

      * You *could* join the 4 player versions of above games using

        the official build, but the game will desync immediately.

        All other games will play fine with the official build.

     

      * Normal mode recordings must be played on normal mode and

        4 player mode recordings must be played on 4 player mode.

        Failing to do so will cause desync while replaying the

        movie.  However, if you load the replay file before any

        game is loaded, it will load the correct mode.

     

      --- How the 4 player mode works ---

     

      If there are 4 players playing the game, P1 and P2 control left side

      characters, and P3 and P4 control right side characters.  Basically,

      it's (P1 and P2 vs. P3 and P4). On the selection screen, only P1 is

      allowed to select the first character, and then P2 selects the 2nd

      character.  Same goes for the right side players (P3 and then P4).

      The match will start off as P1 vs. P3 until they decide to switch

      with their teammate.  Players cannot control the character while it's

      not their turn, so they must wait for their turn.

     

     

      --- Rules for 4 player support ---

     

      * 4 player support for above games are available for both

        off-line and on-line mode.

     

      * Rules for off-line mode:

     

        - Requires two players to play against CPU.

        - Requires four players to play against each other.

       

      * Rules for on-line mode:

     

        - 1 player at start --->      p1 vs. CPU

        - 2 players at start --> p1 & p2 vs. CPU

        - 3 players at start --> p1 & p2 vs. p3

        - 4 players at start --> p1 & p2 vs. p3 & p4

     

      * Rules for on-line mode when someone gets dropped/disconnected:

     

        - p1 dropped ----------> no longer a netplay, Duh!

     

        - -------------+----------------------+--------------------

          Started with | Dropped/Disconnected | Rule

          -------------+----------------------+--------------------

          2 players    | p2                |      p1 vs. CPU

          3 players    | p2                |      p1 vs. p3

          3 players    | p3                | p1 & p2 vs. CPU

          3 players    | p2 & p3              |      p1 vs. CPU

          4 players    | p2                |      p1 vs. p3 & p4

          4 players    | p3                | p1 & p2 vs. p4

          4 players    | p4                | p1 & p2 vs. p3

          4 players    | p2 & p3              |      p1 vs. p4

          4 players    | p2 & p4              |      p1 vs. p3

          4 players    | p3 & p4              | p1 & p2 vs. CPU

          4 players    | p2 & p3 & p4      |      p1 vs. CPU

          -------------+----------------------+--------------------

     

      --- Bugs regarding to the 4 player mode ---

     

      * In Marvel Vs. Capcom 4 player mode, player 2 has the control

        in the beginning, not player 1.  Therefore, player 2 has to

        input coins and press start.  After the character selection

        screen appears, things will be normal.  However, if you wait

        until the intro ends (after attract mode is started), player 1

        has the control first (which is the way it should be).  The RAM

        monitoring for supporting 4 player mode is based on MAME32k.

        I wasn't able to test this on mame32k, so I don't know if same

        thing happens on MAME32k or not.

     

      * When you generate Romcenter/ClrMamePro dat files, you will

        notice that the 4 player version of above games are listed as

        seperate set of roms. Due to the Game driver structure, it was

        either making them listed as seperate roms, or making them use

        same file names for the game cfg file.  Since switching between

        the normal and 4 player mode could screw up input setting, I

        made it to use different file names, and therefore, listed as

        new set of roms in the dat file. The 4 player versions, however,

        use same roms as normal versions since these are not a rom hacks,

        but input hacks.  Therefore, their status will be same as your

        normal romset status.

  3. I used to have this hack of FBA called FBACombo. This added feature was never used in an official build but it looks tantalizing, and worthy of being in FBAx, as it sounds very, very interesting. Here's a snippet of the changed source from the compiled FBAC version:

     

    ------------------------- /burn/burn.cpp
    ...
    // new
    // FBA Combo - extra players input hack
    bool bInputSwap = false;
    unsigned char kDropped = 0xFF;
    void (*BurnDrvInputSwap)() = NULL;
    ...
    ------------------------- /burn/burn.h
    ...
    // burn.cpp
    ...
    // new
    // FBA Combo - extra players input hack
    extern bool bInputSwap;
    extern unsigned char kDropped; // who's dropped out while playing
    extern void (*BurnDrvInputSwap)();
    ...
    ------------------------ /burn/capcom/cps.h
    ...
    // dc_input.cpp
    ...
    // new
    // FBA Combo - extra players input hack
    extern struct BurnInputInfo CpsFsi4p[0x33];
    void CpsFsi4pSwap(unsigned char nInputSwap);
    ...
    ------------------------ /burn/capcom/dc_input.cpp
    // new
    // FBA Combo - extra players input hack
    static unsigned char DummyInp[0x1B-0x03] = {0,};
    ...
    // new
    // FBA Combo - extra players input hack
    struct BurnInputInfo CpsFsi4p[0x33] = {
    {"P1 Coin"      , 0, CpsInp020+4, "p1 coin"},    // 0x00
    {"P1 Start"      , 0, CpsInp020+0, "p1 start"},
    
    {"P1 Up"        , 0, CpsInp001+3, "p1 up"},      // 0x02
    {"P1 Down"      , 0, CpsInp001+2, "p1 down"},
    {"P1 Left"      , 0, CpsInp001+1, "p1 left"},
    {"P1 Right"      , 0, CpsInp001+0, "p1 right"},
    
    {"P1 Low Punch"  , 0, CpsInp001+4, "p1 fire 4"},  // 0x06
    {"P1 Mid Punch"  , 0, CpsInp001+5, "p1 fire 5"},
    {"P1 High Punch", 0, CpsInp001+6, "p1 fire 6"},
    {"P1 Low Kick"  , 0, CpsInp011+0, "p1 fire 1"},
    {"P1 Mid Kick"  , 0, CpsInp011+1, "p1 fire 2"},
    {"P1 High Kick"  , 0, CpsInp011+2, "p1 fire 3"},
    
    {"P2 Coin"      , 0, DummyInp+0x00, "p2 coin"},  // 0x0C
    {"P2 Start"      , 0, DummyInp+0x01, "p2 start"},
    
    {"P2 Up"        , 0, DummyInp+0x02, "p2 up"},    // 0x0E
    {"P2 Down"      , 0, DummyInp+0x03, "p2 down"},
    {"P2 Left"      , 0, DummyInp+0x04, "p2 left"},
    {"P2 Right"      , 0, DummyInp+0x05, "p2 right"},
    
    {"P2 Low Punch"  , 0, DummyInp+0x06, "p2 fire 4"},// 0x12
    {"P2 Mid Punch"  , 0, DummyInp+0x07, "p2 fire 5"},
    {"P2 High Punch", 0, DummyInp+0x08, "p2 fire 6"},
    {"P2 Low Kick"  , 0, DummyInp+0x09, "p2 fire 1"},
    {"P2 Mid Kick"  , 0, DummyInp+0x0A, "p2 fire 2"},
    {"P2 High Kick"  , 0, DummyInp+0x0B, "p2 fire 3"},
    
    {"P3 Coin"      , 0, CpsInp020+5, "p3 coin"},    // 0x18
    {"P3 Start"      , 0, CpsInp020+1, "p3 start"},
    
    {"P3 Up"        , 0, CpsInp000+3, "p3 up"},      // 0x1A
    {"P3 Down"      , 0, CpsInp000+2, "p3 down"},
    {"P3 Left"      , 0, CpsInp000+1, "p3 left"},
    {"P3 Right"      , 0, CpsInp000+0, "p3 right"},
    
    {"P3 Low Punch"  , 0, CpsInp000+4, "p3 fire 4"},  // 0x1E
    {"P3 Mid Punch"  , 0, CpsInp000+5, "p3 fire 5"},
    {"P3 High Punch", 0, CpsInp000+6, "p3 fire 6"},
    {"P3 Low Kick"  , 0, CpsInp011+4, "p3 fire 1"},
    {"P3 Mid Kick"  , 0, CpsInp011+5, "p3 fire 2"},
    {"P3 High Kick"  , 0, CpsInp020+6, "p3 fire 3"},
    
    {"P4 Coin"      , 0, DummyInp+0x0C, "p4 coin"},  // 0x24
    {"P4 Start"      , 0, DummyInp+0x0D, "p4 start"},
    
    {"P4 Up"        , 0, DummyInp+0x0E, "p4 up"},    // 0x26
    {"P4 Down"      , 0, DummyInp+0x0F, "p4 down"},
    {"P4 Left"      , 0, DummyInp+0x10, "p4 left"},
    {"P4 Right"      , 0, DummyInp+0x11, "p4 right"},
    
    {"P4 Low Punch"  , 0, DummyInp+0x12, "p4 fire 4"},// 0x2A
    {"P4 Mid Punch"  , 0, DummyInp+0x13, "p4 fire 5"},
    {"P4 High Punch", 0, DummyInp+0x14, "p4 fire 6"},
    {"P4 Low Kick"  , 0, DummyInp+0x15, "p4 fire 1"},
    {"P4 Mid Kick"  , 0, DummyInp+0x16, "p4 fire 2"},
    {"P4 High Kick"  , 0, DummyInp+0x17, "p4 fire 3"},
    
    {"Reset"        , 0, &CpsReset  , "reset"},      // 0x30
    {"Diagnostic"    , 0, CpsInp021+1, "diag"},
    {"Service"      , 0, CpsInp021+2, "service"}     // 0x32
    };
    ...
    // new
    // FBA Combo - extra players input hack
    void CpsFsi4pSwap(unsigned char nInputSwap)
    {
    unsigned int nOffset1,nOffset2;
    
    if (nInputSwap&0x02) {
     for (nOffset1=0x00, nOffset2=0x0C; nOffset1<0x0C; nOffset1++, nOffset2++) {
    	 *(CpsFsi4p[nOffset1].pVal) = *(CpsFsi4p[nOffset2].pVal);
     }
    }
    
    if (nInputSwap&0x08) {
     for (nOffset1=0x18, nOffset2=0x24; nOffset1<0x24; nOffset1++, nOffset2++) {
    	 *(CpsFsi4p[nOffset1].pVal) = *(CpsFsi4p[nOffset2].pVal);
     }
    }
    #ifdef _DEBUG
    {
     static unsigned char nPrevVal = nInputSwap;
     if (nInputSwap != nPrevVal) {
    	 printf ("input swapped - ");
    	 if (nInputSwap == 0x00) {
       printf ("p1 controls p1 - p3 controls p2\n");
    	 } else if (nInputSwap == 0x02) {
       printf ("p2 controls p1 - p3 controls p2\n");
    	 } else if (nInputSwap == 0x08) {
       printf ("p1 controls p1 - p4 controls p2\n");
    	 } else {
       printf ("p2 controls p1 - p4 controls p2\n");
    	 }
    	 nPrevVal = nInputSwap;
     }
    }
    #endif
    }
    ...
    ------------------------ /burn/capcom/cps_rw.cpp
    ...
    int CpsRwGetInp()
    {
    ...
    if (nMaxPlayers > 2) {
     if (Cps == 2) {
    	 if (!bInputSwap) { // FBA Combo - extra players input hack (additional check for bInputSwap)
       StopOpposite(&Inp011);
    	 }
    	 if (nMaxPlayers == 4 && !bInputSwap) { // FBA Combo - extra players input hack (additional check for bInputSwap)
       StopOpposite(&Inp010);
    	 }
     } else {
     ...
    }
    ...
    ------------------------ /burner/run.cpp
    ...
    static int GetInput(bool bCopy)
    {
    ...
    HotkeyInputMake(bCopy);
    
    // new
    // FBA Combo - extra players input hack
    if (bInputSwap && !kNetGame && bCopy) {
     BurnDrvInputSwap();
    }
    ...
    }
    ...
    static int RunFrame(int bDraw, int bPause)
    {
    ...
     if (kNetGame) {
    	 GetInput(true);	// Update inputs
    	 if (KailleraGetInput()) { // Synchronize input with Kaillera
       return 0;
    	 }
    	 // new
    	 // FBA Combo - extra players input hack
    	 if (bInputSwap) {
       BurnDrvInputSwap();
    	 }
    	 ...
     }
    ...
    }
    ...
    ------------------------ /burner/scrn.cpp
    ...
    static int WINAPI gameCallback(char* game, int player, int numplayers)
    {
    ...
    kNetGame = 1;
    
    // new
    kDropped = 0xFF<<numplayers; // FBA Combo - extra players input hack
    ...
    }
    ...
    static void WINAPI kDropCallback(char *nick, int playernb)
    {
    ...
    VidSAddChatMsg(szTemp, 0xFFFFFF, NULL, 0);
    // new
    kDropped |= 1<<(playernb-1); // FBA Combo - extra players input hack
    }
    ...
    ------------------------ /burner/fba_kaillera.cpp
    ...
    int KailleraGetInput()
    {
    ...
    if (kailleraModifyPlayValues(nControls, k) == -1) {
     kNetGame = 0;
     // new
     kDropped = 0x00; // FBA Combo - extra players input hack
     return 1;
    }
    ...
    }
    ...
    ------------------------ /burn/capcom/dc_mshvsf.cpp
    ...
    STDINPUTINFOSPEC(Drv, CpsFsi);
    // new
    STDINPUTINFOSPEC(Drv4p, CpsFsi4p); // FBA Combo - extra players input hack
    ...
    static int DrvExit()
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    // kDropped = which players got dropped during netplay
    static void Drv4pInputSwap()
    {
    static bool bInit = false;
    unsigned char pDropped = kDropped;
    unsigned char nInputSwap = 0x00; // default = don't swap
    
    if (SekReadByte(0xFF2492) == 1) {
     bInit = true;
    }
    if (bInit) {
     if (!(pDropped&0x02) && SekReadByte(0xFF4983) > 0) {
    	 nInputSwap |= 0x02; // p2 controls p1
     }
     if (!(pDropped&0x08) && SekReadByte(0xFF49A3) > 0) {
    	 nInputSwap |= 0x08; // p4 controls p2
     }
     if (SekReadByte(0xFF2492) == 0) {
    	 bInit = false;
    	 nInputSwap = 0x00; // back to default
     }
    } else {
     if (!(pDropped&0x02) && SekReadByte(0xFF3A61) == 1) {
    	 nInputSwap |= 0x02; // p2 controls p1
     }
     if (!(pDropped&0x08) && SekReadByte(0xFF3E61) == 1) {
    	 nInputSwap |= 0x08; // p4 controls p2
     }
    }
    
    if(pDropped&0x04 && !(pDropped&0x08)) {
     nInputSwap |= 0x08; // p4 controls p2
    }
    
    CpsFsi4pSwap(nInputSwap);
    }
    // new
    // FBA Combo - extra players input hack
    static int Drv4pInit()
    {
    bInputSwap = true;
    kDropped = 0x00;
    BurnDrvInputSwap = Drv4pInputSwap;
    return DrvInit();
    }
    // new
    // FBA Combo - extra players input hack
    static int Drv4pExit()
    {
    bInputSwap = false;
    kDropped = 0x00;
    BurnDrvInputSwap = NULL;
    return DrvExit();
    }
    ...
    struct BurnDriver BurnDrvCpsMshvsf=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int MshvsfZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="mshvsf.zip";  return 0; }
     return 1;
    }
    struct BurnDriver BurnDrvCpsMshvsf4p=
    {
     {"mshvsf4p","Marvel Super Heroes Vs. Street Fighter (US 970827) 4 Player","","Capcom","CPS2","1997",NULL, NULL},
     1,4,HARDWARE_CAPCOM_CPS2,
     MshvsfZipName, MshvsfRomInfo, MshvsfRomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    struct BurnDriver BurnDrvCpsMshvsfu1=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int Mshvsfu1ZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="mshvsfu1.zip";  return 0; }
     if (i==1) { if (pszName!=NULL) *pszName="mshvsf.zip";  return 0; }
     return 1;
    }
    struct BurnDriver BurnDrvCpsMshvsfu14p=
    {
     {"mshvsfu14p","Marvel Super Heroes Vs. Street Fighter (US 970625) 4 Player","","Capcom","CPS2","1997","mshvsf4p",NULL},
     1,4,HARDWARE_CAPCOM_CPS2,
     Mshvsfu1ZipName, Mshvsfu1RomInfo, Mshvsfu1RomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    struct BurnDriver BurnDrvCpsMshvsfj=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int MshvsfjZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="mshvsfj.zip";  return 0; }
     if (i==1) { if (pszName!=NULL) *pszName="mshvsf.zip";  return 0; }
     return 1;
    }
    struct BurnDriver BurnDrvCpsMshvsfj4p=
    {
     {"mshvsfj4p","Marvel Super Heroes Vs. Street Fighter (Japan 970707) 4 Player","","Capcom","CPS2","1997","mshvsf4p",NULL},
     1,4,HARDWARE_CAPCOM_CPS2,
     MshvsfjZipName, MshvsfjRomInfo, MshvsfjRomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    struct BurnDriver BurnDrvCpsMshvsfj1=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int Mshvsfj1ZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="mshvsfj1.zip";  return 0; }
     if (i==1) { if (pszName!=NULL) *pszName="mshvsf.zip";  return 0; }
     return 1;
    }
    struct BurnDriver BurnDrvCpsMshvsfj14p=
    {
     {"mshvsfj14p","Marvel Super Heroes Vs. Street Fighter (Japan 970702) 4 Player","","Capcom","CPS2","1997","mshvsf4p",NULL},
     1,4,HARDWARE_CAPCOM_CPS2,
     Mshvsfj1ZipName, Mshvsfj1RomInfo, Mshvsfj1RomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    struct BurnDriverX BurnDrvCpsMshvsfh=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int MshvsfhZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="mshvsfh.zip";  return 0; }
     if (i==1) { if (pszName!=NULL) *pszName="mshvsf.zip";  return 0; }
     return 1;
    }
    struct BurnDriverX BurnDrvCpsMshvsfh4p=
    {
     {"mshvsfh4p","Marvel Super Heroes Vs. Street Fighter (Hispanic 970625) 4 Player","Encrypted","Capcom","CPS2","1997","mshvsf4p",NULL},
     0,4,HARDWARE_CAPCOM_CPS2,
     MshvsfhZipName, MshvsfhRomInfo, MshvsfhRomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    struct BurnDriverX BurnDrvCpsMshvsfa=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int MshvsfaZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="mshvsfa.zip";  return 0; }
     if (i==1) { if (pszName!=NULL) *pszName="mshvsf.zip";  return 0; }
     return 1;
    }
    struct BurnDriverX BurnDrvCpsMshvsfa4p=
    {
     {"mshvsfa4p","Marvel Super Heroes Vs. Street Fighter (Asia 970625) 4 Player","Encrypted","Capcom","CPS2","1997","mshvsf4p",NULL},
     0,4,HARDWARE_CAPCOM_CPS2,
     MshvsfaZipName, MshvsfaRomInfo, MshvsfaRomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    struct BurnDriverX BurnDrvCpsMshvsfa1=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int Mshvsfa1ZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="mshvsfa1.zip";  return 0; }
     if (i==1) { if (pszName!=NULL) *pszName="mshvsf.zip";  return 0; }
     return 1;
    }
    struct BurnDriverX BurnDrvCpsMshvsfa14p=
    {
     {"mshvsfa14p","Marvel Super Heroes Vs. Street Fighter (Asia 970620) 4 Player","Encrypted","Capcom","CPS2","1997","mshvsf4p",NULL},
     0,4,HARDWARE_CAPCOM_CPS2,
     Mshvsfa1ZipName, Mshvsfa1RomInfo, Mshvsfa1RomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    ------------------------ /burn/capcom/dc_mvsc.cpp
    ...
    STDINPUTINFOSPEC(Drv, CpsFsi);
    // new
    STDINPUTINFOSPEC(Drv4p, CpsFsi4p); // FBA Combo - extra players input hack
    ...
    static int DrvExit()
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    // kDropped = which players got dropped during netplay
    static void Drv4pInputSwap()
    {
    static bool bInit = false;
    unsigned char pDropped = kDropped;
    unsigned char nInputSwap = 0x00; // default = don't swap
    
    if (SekReadByte(0xFF5C2B) == 1) {
     bInit = true;
    }
    if (bInit) {
     if (!(pDropped&0x02) && SekReadByte(0xFF5E4C) > 0) {
    	 nInputSwap |= 0x02; // p2 controls p1
     }
     if (!(pDropped&0x08) && SekReadByte(0xFF5DDC) > 0) {
    	 nInputSwap |= 0x08; // p4 controls p2
     }
     if (SekReadByte(0xFF5C2B) == 0) {
    	 bInit = false;
    	 nInputSwap = 0x00; // back to default 
     }
    } else {
     if (!(pDropped&0x02) && SekReadByte(0xFF3A81) == 0) {
    	 nInputSwap |= 0x02; // p2 controls p1
     }
     if (!(pDropped&0x08) && SekReadByte(0xFF3E81) == 0) {
    	 nInputSwap |= 0x08; // p4 controls p2
     }
    }
    
    if(pDropped&0x04 && !(pDropped&0x08)) {
     nInputSwap |= 0x08; // p4 controls p2
    }
    
    CpsFsi4pSwap(nInputSwap);
    }
    // new
    // FBA Combo - extra players input hack
    static int Drv4pInit()
    {
    bInputSwap = true;
    kDropped = 0x00;
    BurnDrvInputSwap = Drv4pInputSwap;
    return DrvInit();
    }
    // new
    // FBA Combo - extra players input hack
    static int Drv4pExit()
    {
    bInputSwap = false;
    kDropped = 0x00;
    BurnDrvInputSwap = NULL;
    return DrvExit();
    }
    ...
    struct BurnDriver BurnDrvCpsMvsc=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int MvscZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="mvsc.zip";  return 0; }
     return 1;
    }
    struct BurnDriver BurnDrvCpsMvsc4p=
    {
     {"mvsc4p","Marvel Vs. Capcom: Clash of Super Heroes (US 980123) 4 Player","","Capcom","CPS2","1998",NULL,NULL},
     1,4,HARDWARE_CAPCOM_CPS2,
     MvscZipName, MvscRomInfo, MvscRomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    struct BurnDriver BurnDrvCpsMvscj=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int MvscjZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="mvscj.zip";  return 0; }
     if (i==1) { if (pszName!=NULL) *pszName="mvsc.zip";  return 0; }
     return 1;
    }
    struct BurnDriver BurnDrvCpsMvscj4p=
    {
     {"mvscj4p","Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123) 4 Player","","Capcom","CPS2","1998","mvsc4p",NULL},
     1,4,HARDWARE_CAPCOM_CPS2,
     MvscjZipName, MvscjRomInfo, MvscjRomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    struct BurnDriver BurnDrvCpsMvscjr1=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int Mvscjr1ZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="mvscjr1.zip";  return 0; }
     if (i==1) { if (pszName!=NULL) *pszName="mvsc.zip";  return 0; }
     return 1;
    }
    struct BurnDriver BurnDrvCpsMvscjr14p=
    {
     {"mvscjr14p","Marvel Vs. Capcom: Clash of Super Heroes (Japan 980112) 4 Player","","Capcom","CPS2","1998","mvsc4p",NULL},
     1,4,HARDWARE_CAPCOM_CPS2,
     Mvscjr1ZipName, Mvscjr1RomInfo, Mvscjr1RomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    struct BurnDriver BurnDrvCpsMvsca=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int MvscaZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="mvsca.zip";  return 0; }
     if (i==1) { if (pszName!=NULL) *pszName="mvsc.zip";  return 0; }
     return 1;
    }
    struct BurnDriver BurnDrvCpsMvsca4p=
    {
     {"mvsca4p","Marvel Vs. Capcom: Clash of Super Heroes (Asia 980112) 4 Player","","Capcom","CPS2","1998","mvsc4p",NULL},
     1,4,HARDWARE_CAPCOM_CPS2,
     MvscaZipName, MvscaRomInfo, MvscaRomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    struct BurnDriverX BurnDrvCpsMvsch=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int MvschZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="mvsch.zip";  return 0; }
     if (i==1) { if (pszName!=NULL) *pszName="mvsc.zip";  return 0; }
     return 1;
    }
    struct BurnDriverX BurnDrvCpsMvsch4p=
    {
     {"mvsch4p","Marvel Vs. Capcom: Clash of Super Heroes (Hispanic 980123) 4 Player","Encrypted","Capcom","CPS2","1998","mvsc4p",NULL},
     0,4,HARDWARE_CAPCOM_CPS2,
     MvschZipName, MvschRomInfo, MvschRomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    ------------------------ /burn/capcom/dc_xmvsf.cpp
    ...
    ...
    STDINPUTINFOSPEC(Drv, CpsFsi);
    // new
    STDINPUTINFOSPEC(Drv4p, CpsFsi4p); // FBA Combo - extra players input hack
    ...
    static int DrvExit()
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    // kDropped = which players got dropped during netplay
    static void Drv4pInputSwap()
    {
    static unsigned int cP1 = 0, cP2 = 0, cP3 = 0, cP4 = 0;
    static bool bInit = false;
    unsigned char pDropped = kDropped;
    unsigned char nInputSwap = 0x00; // default = don't swap
    
    if ((SekReadByte(0xFF4211) == 0 && SekReadByte(0xFF4213) == 0 && SekReadByte(0xFF4214) == 0) ||
    	 (SekReadByte(0xFF4611) == 0 && SekReadByte(0xFF4613) == 0 && SekReadByte(0xFF4614) == 0)) {
     bInit = true;
    }
    if (bInit) {
     cP1 = SekReadByte(0xFF4053);
     cP2 = SekReadByte(0xFF4853);
     cP3 = SekReadByte(0xFF4453);
     cP4 = SekReadByte(0xFF4C53);
     if (!(pDropped&0x02) && SekReadByte(0xFF5183) > 0) {
    	 nInputSwap |= 0x02; // p2 controls p1
     }
     if (!(pDropped&0x08) && SekReadByte(0xFF51A3) > 0) {
    	 nInputSwap |= 0x08; // p4 controls p2
     }
     if (SekReadByte(0xFF4211) != 0 && SekReadByte(0xFF4611) != 0)	{
    	 bInit = false;
    	 nInputSwap = 0x00; // back to default 
     }
    } else {
     if (!(pDropped&0x02) && SekReadByte(0xFF4053) == cP2) {
    	 nInputSwap |= 0x02; // p2 controls p1
     }
     if (!(pDropped&0x08) && SekReadByte(0xFF4453) == cP4) {
    	 nInputSwap |= 0x08; // p4 controls p2
     }
    }
    
    if(pDropped&0x04 && !(pDropped&0x08)) {
     nInputSwap |= 0x08; // p4 controls p2
    }
    
    CpsFsi4pSwap(nInputSwap);
    }
    // new
    // FBA Combo - extra players input hack
    static int Drv4pInit()
    {
    bInputSwap = true;
    kDropped = 0x00;
    BurnDrvInputSwap = Drv4pInputSwap;
    return DrvInit();
    }
    // new
    // FBA Combo - extra players input hack
    static int Drv4pExit()
    {
    bInputSwap = false;
    kDropped = 0x00;
    BurnDrvInputSwap = NULL;
    return DrvExit();
    }
    ...
    struct BurnDriver BurnDrvCpsXmvsf=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int XmvsfZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="xmvsf.zip";  return 0; }
     return 1;
    }
    struct BurnDriver BurnDrvCpsXmvsf4p=
    {
     {"xmvsf4p","X-Men Vs. Street Fighter (Euro 960910) 4 Player","","Capcom","CPS2","1996",NULL,NULL},
     1,4,HARDWARE_CAPCOM_CPS2,
     XmvsfZipName, XmvsfRomInfo, XmvsfRomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    struct BurnDriver BurnDrvCpsXmvsfu=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int XmvsfuZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="xmvsfu.zip";  return 0; }
     if (i==1) { if (pszName!=NULL) *pszName="xmvsf.zip";  return 0; }
     return 1;
    }
    struct BurnDriver BurnDrvCpsXmvsfu4p=
    {
     {"xmvsfu4p","X-Men Vs. Street Fighter (US 961004) 4 Player","","Capcom","CPS2","1996","xmvsf4p",NULL},
     1,4,HARDWARE_CAPCOM_CPS2,
     XmvsfuZipName, XmvsfuRomInfo, XmvsfuRomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    struct BurnDriverX BurnDrvCpsXmvsfj=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int XmvsfjZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="xmvsfj.zip";  return 0; }
     if (i==1) { if (pszName!=NULL) *pszName="xmvsf.zip";  return 0; }
     return 1;
    }
    struct BurnDriverX BurnDrvCpsXmvsfj4p=
    {
     {"xmvsfj4p","X-Men Vs. Street Fighter (Japan 960910) 4 Player","Encrypted","Capcom","CPS2","1996","xmvsf4p",NULL},
     0,4,HARDWARE_CAPCOM_CPS2,
     XmvsfjZipName, XmvsfjRomInfo, XmvsfjRomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    struct BurnDriverX BurnDrvCpsXmvsfa=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int XmvsfaZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="xmvsfa.zip";  return 0; }
     if (i==1) { if (pszName!=NULL) *pszName="xmvsf.zip";  return 0; }
     return 1;
    }
    struct BurnDriverX BurnDrvCpsXmvsfa4p=
    {
     {"xmvsfa4p","X-Men Vs. Street Fighter (Asia 961023) 4 Player","Encrypted","Capcom","CPS2","1996","xmvsf4p",NULL},
     0,4,HARDWARE_CAPCOM_CPS2,
     XmvsfaZipName, XmvsfaRomInfo, XmvsfaRomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...
    struct BurnDriverX BurnDrvCpsXmvsfh=
    {
    ...
    }
    // new
    // FBA Combo - extra players input hack
    static int XmvsfhZipName(char **pszName,unsigned int i)
    {
     if (i==0) { if (pszName!=NULL) *pszName="xmvsfh.zip";  return 0; }
     if (i==1) { if (pszName!=NULL) *pszName="xmvsf.zip";  return 0; }
     return 1;
    }
    struct BurnDriverX BurnDrvCpsXmvsfh4p=
    {
     {"xmvsfh4p","X-Men Vs. Street Fighter (Hispanic 961004) 4 Player","Encrypted","Capcom","CPS2","1996","xmvsf4p",NULL},
     0,4,HARDWARE_CAPCOM_CPS2,
     XmvsfhZipName, XmvsfhRomInfo, XmvsfhRomName, Drv4pInputInfo, NULL,
     Drv4pInit,Drv4pExit,Cps2Frame,CpsRedraw,CpsAreaScan,
     &CpsRecalcPal,384,224,4,3
    };
    ...

     

    With this information, could a new version of FBAx or FBA-xxx be compiled that allowed 4 player MvC?

  4. What's with the Mina love here? She is easily killed thganks to the LayDown attack and she cannot touch Poppy.

     

    KOF2003 is not released yet, as I have searched everywhere and the official status of the 2 or so groups that have the roms is "No, it is not released, do not Download links to the ROM, as it is not the ROM".

  5. Right now I am trying to balance 2 Kawa-X's on my Xbox just to run all my favorite games. It is not working out. FBAx runs all games as long as you write the appropiate driver, correct? So why is FBAx not so popular around here? Are the drivers that difficult to write? Is there something else besides the drivers?

     

    I ask this because it would be convieniant to run all my Arcade games from one source, so why is the FBAx program so mulled over?

  6. They're working as much as they can on it. They have lives outside of MAMEoX and they have only one guy working on VMM at the moment (Only one with enough info to work on it).

     

    MAMEoX source is available if you wanna work on VMM or know anyone with expirience in C who could work on VMM

  7. Hello, I suffered the same problem and the solution is sucky yet simple.

     

    ***Warning*** It will most probally flock ur crap up!

     

    And erase all configs you had in Kawa-x

     

    FTP into your Xbox

     

    Fo into drive E

     

    Go into folder TDATA

     

    there should be a folder '0000fa7e'

     

    delete the folder '0000fa7e'

     

    It is the folder where Kawa-x saves your rom info. There is (I suppose) a glitch or bug causing toe black screen.

     

    you may then restart Kawa-X and enjoy. thank me later. :P

×
×
  • Create New...