1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

Civilization II MGE User Interface Additions (CIV2UIA)

Discussion in 'Civ2 - Technical Support' started by FoxAhead, Oct 18, 2017.

  1. Prof. Garfield

    Prof. Garfield Deity Supporter

    Joined:
    Mar 6, 2004
    Messages:
    2,826
    Location:
    Ontario
    I always thought it was classic only, and treated it as such. That seemed to be the consensus in the community. It's been a few years since I've bothered with it, but based on the description in my video, the deity+ levels might work.

    If you're eager for a more capable AI, maybe have a look at Test of Time Patch Project. We're doing events with the Lua programming language, and it might be possible to 'nudge' the AI into more capable play. (For example, by eliminating most production options for it in the build queue, so it only builds 'good' things.) Thus far, the efforts have been for building scenarios, but improving the AI in some areas seems possible.
     
  2. Kaiser0985

    Kaiser0985 Chieftain

    Joined:
    Oct 24, 2019
    Messages:
    16
    Gender:
    Male
    I ask @FoxAhead if there's a way to keep the units in their original color instead of this grey shadow when you press "sleep" button. Estetically, It is a punch in the face seeing these grey figures around the map instead of the original color.
     
  3. HIT Games

    HIT Games Chieftain

    Joined:
    Mar 13, 2010
    Messages:
    10
    Location:
    Finland
    This is something we've been looking for. Something that runs on Windows 98 SE, and is able to fix massive CPU-usage problem among other things as well.

    One of our team members has tested this launcher on his Windows 98 SE -laptop.

    Other fixes tested so far:

    Tim's patch crashes.
    civ2patch gives the following error message: "Failed to allocate memory for dll injection."
    civ2mge_cpu_fix_1 gives the following error message: "File XDELTA3.EXE is linked to a missing export function KERNEL32.DLL GetFileSizeEx."

    But this one looks promising. Unfortunately, version 1.4 is the last one that worked. All of the newer versions crash with the two following messages:

    Civ2uialauncher

    Program has executed an illegal function and it will be ended.

    If the problem does not disappear, contact the manufacturer of this program.

    CIV2UIALAUNCHER caused an interrupt eedfadeH at module <unknown> at memory location 0000:00000000.
    Registrys:
    EAX=00000000 CS=0000 EIP=00000000 EFLGS=00000000
    EBX=00000000 SS=0000 ESP=00000000 EBP=00000000
    ECX=00000000 DS=0000 ESI=00000000 FS=0000
    EDX=00000000 ES=0000 EDI=00000000 GS=0000
    Bytes at memory location CS:EIP:
    Heap dump:

    &

    Exception EOleException in module CIV2UIALAUNCHER.EXE at 0006FCD5. Class is not registered.

    The laptop used for testing has 98lite Professional without web integration and it has Windows 95 shell.

    We'll be following the progress of this project!
     
  4. FoxAhead

    FoxAhead Warlord

    Joined:
    Sep 7, 2017
    Messages:
    108
    Gender:
    Male
    It seems that your system doesn't have ActiveX installed. May be it was stripped by 98lite? ActiveX module is used in this project for shortcut creation feature (button "Create shortcut...").
     
  5. FoxAhead

    FoxAhead Warlord

    Joined:
    Sep 7, 2017
    Messages:
    108
    Gender:
    Male
    I swear I spent a lot of time inspecting this subroutine for commodities calculation, read Samson topics, comparing 2.4.2 version and its patch. But still doesn't figure out why is there a bug. At this point I don't have any ideas. May be later. If some one want to catch up here is the address of procedure: sub_43D400. And decompilation:
    Spoiler Code :
    Code:
    int __cdecl sub_43D400(int arg0)
    {
      int result; // eax@3
      int v2; // ebx@49
      int v3; // eax@62
      int v4; // eax@77
      int v5; // ecx@132
      int v6; // eax@196
      int v7; // ecx@217
      int v8; // eax@250
      int v9; // [sp+0h] [bp-148h]@0
      int v10; // [sp+Ch] [bp-13Ch]@201
      int v11; // [sp+10h] [bp-138h]@194
      int v12; // [sp+14h] [bp-134h]@149
      int v13; // [sp+18h] [bp-130h]@4
      signed int l; // [sp+1Ch] [bp-12Ch]@331
      int v15; // [sp+20h] [bp-128h]@0
      int v16; // [sp+24h] [bp-124h]@18
      int v17; // [sp+28h] [bp-120h]@49
      int v18; // [sp+2Ch] [bp-11Ch]@45
      int v19; // [sp+30h] [bp-118h]@33
      int v20; // [sp+34h] [bp-114h]@45
      int v21; // [sp+38h] [bp-110h]@69
      int v22; // [sp+3Ch] [bp-10Ch]@33
      int v23; // [sp+40h] [bp-108h]@33
      int v24; // [sp+44h] [bp-104h]@55
      int v25; // [sp+48h] [bp-100h]@33
      int v26; // [sp+4Ch] [bp-FCh]@45
      int v27; // [sp+50h] [bp-F8h]@21
      int v28; // [sp+90h] [bp-B8h]@43
      int v29; // [sp+94h] [bp-B4h]@264
      int v30; // [sp+98h] [bp-B0h]@16
      int v31; // [sp+9Ch] [bp-ACh]@4
      int v32; // [sp+A0h] [bp-A8h]@4
      int v33; // [sp+A4h] [bp-A4h]@277
      int v34; // [sp+A8h] [bp-A0h]@4
      int v35; // [sp+ACh] [bp-9Ch]@4
      int v36; // [sp+B0h] [bp-98h]@162
      int v37; // [sp+B4h] [bp-94h]@4
      int v38; // [sp+B8h] [bp-90h]@4
      int v39; // [sp+BCh] [bp-8Ch]@4
      int v40; // [sp+C0h] [bp-88h]@4
      int j; // [sp+C4h] [bp-84h]@159
      int v42; // [sp+C8h] [bp-80h]@201
      int v43; // [sp+CCh] [bp-7Ch]@25
      int k; // [sp+D0h] [bp-78h]@314
      int v45; // [sp+D4h] [bp-74h]@26
      int v46; // [sp+D8h] [bp-70h]@266
      int v47; // [sp+DCh] [bp-6Ch]@25
      int v48; // [sp+E0h] [bp-68h]@4
      int i; // [sp+E4h] [bp-64h]@16
      int v50; // [sp+E8h] [bp-60h]@4
      int v51; // [sp+ECh] [bp-5Ch]@273
      int v52; // [sp+F0h] [bp-58h]@21
      int Max; // [sp+130h] [bp-18h]@75
      int v54; // [sp+134h] [bp-14h]@159
      int v55; // [sp+138h] [bp-10h]@4
      int v56; // [sp+13Ch] [bp-Ch]@319
      int v57; // [sp+140h] [bp-8h]@273
      int a1; // [sp+144h] [bp-4h]@75
    
      if ( stru_64F340[arg0].byte_64F346 & 2
        || stru_655AE8.byte_655B07
        || (result = arg0 + stru_655AE8.Turn, !(result & 0xF)) )
      {
        *&stru_64F340[arg0].byte_64F344 &= 0xFFFDFFFF;
        v39 = stru_64F340[arg0].X;
        v37 = stru_64F340[arg0].Y;
        v13 = stru_64F340[arg0].Owner;
        v34 = sub_401F50(v39, v37);
        v31 = (stru_64F340[arg0].Size + 2) / 5;
        v40 = stru_64C6A0[stru_64F340[arg0].Owner].Unknown5[6];
        v55 = v37 - (V_MapSizeY_word_6D1162 >> 1);
        v48 = v39 - (V_MapSizeX_word_6D1160 >> 1);
        v32 = 0;
        v50 = 0;
        v38 = 0;
        v35 = 0;
        if ( v55 < 0 )
          v35 = -v55;
        if ( v55 > 0 )
          v38 = v55;
        if ( v48 > 0 )
          v50 = v48;
        if ( v48 < 0 )
          v32 = -v48;
        if ( v55 <= 0 )
          v55 = -v55;
        if ( v48 <= 0 )
          v48 = -v48;
        v30 = 0;
        for ( i = 0; i < 0xB; ++i )
          *(&v16 + i) = 0;
        for ( i = 0; i < 0x10; ++i )
        {
          *&dword_63F540[4 * i] = 0;
          *&CmdLine[4 * i] = *&dword_63F540[4 * i];
          *(&v52 + i) = i;
          *(&v27 + i) = *(&v52 + i);
        }
        for ( i = 0; i < 0x15; ++i )
        {
          v47 = j_Q_WrapMapX_sub_5AE052(v39 + byte_628370[i]);
          v43 = v37 + byte_6283A0[i];
          if ( sub_4012D0(v47, v43) )
          {
            v45 = sub_403648(v47, v43);
            ++*(&v16 + v45);
            if ( sub_402342(v47, v43) )
              *(&v16 + v45) += 3;
            if ( *sub_401BB3(v47, v43) & 0x80 )
              ++v30;
            if ( sub_4019F1(v47, v43) & 0x10 )
              ++v15;
          }
        }
        v22 += v23;
        v23 = 0;
        *CmdLine = 3 * v30 + 3 * v25 + 6 * v22 + 4 * v19;
        if ( v40 < 0x10 )
          *CmdLine *= 2;
        if ( v40 < 0x18 )
          *CmdLine *= 2;
        if ( v40 <= 0x30 )
        {
          if ( stru_64F340[arg0].Size < 3 )
            *CmdLine *= 2;
        }
        else
        {
          *CmdLine /= 2;
        }
        if ( stru_64F340[arg0].Size >= 8 )
          *CmdLine /= 2;
        v28 = v22 + 2;
        if ( V_MapSizeY_word_6D1162 / 3 < v55 )
          ++v28;
        dword_63F66C[0] = v28 * (v18 + v30 / 2 + 2 * v20);
        dword_63F670 = 8 * v26 - v55;
        if ( stru_64F340[arg0].Size > 9 )
          dword_63F670 >>= 1;
        if ( v40 > 0x20 )
          dword_63F670 >>= 1;
        v2 = v16 + 3 * v17 - v30;
        dword_63F674 = j_Q_Clamp_sub_5ADFA0(v40 / 0xA, 1, 2) * v2;
        if ( sub_402E7D(v13, 0x25) )
          dword_63F674 = 3 * dword_63F674 >> 1;
        if ( v40 < 8 )
          dword_63F674 >>= 1;
        if ( v40 < 0x10 )
          dword_63F674 >>= 1;
        dword_63F678 = 3 * v26 + 4 * v16 + 2 * v24 - v40 / 6;
        if ( !sub_402E7D(v13, 0x41) )
          dword_63F678 /= 3;
        if ( j_Q_CityHasImprove_sub_43D20A(arg0, 9) )
          dword_63F678 += dword_63F678 >> 1;
        if ( v34 & 1 )
        {
          if ( v34 <= 5 )
            dword_63F678 += dword_63F678 >> 1;
        }
        dword_63F67C = (5 * v20 * (v24 + v19 + v17 + v25 + 1));
        v3 = v31 / 2;
        if ( v31 / 2 >= 2 )
          v3 = 2;
        dword_63F67C = sub_40112C(dword_63F67C, v3 - 1);
        if ( v34 & 1 )
        {
          if ( v34 > 1 )
            dword_63F67C = (dword_63F67C + (dword_63F67C >> 1));
        }
        if ( v40 < 0x14 )
          dword_63F67C = (dword_63F67C >> 1);
        dword_63F680 = 5 * v20 + 5 * v21;
        if ( v34 )
        {
          if ( !(v34 & 1) )
            dword_63F680 *= 2;
        }
        dword_63F684 = 2 * (v30 + 5 * v18 - v17);
        if ( v34 )
        {
          if ( !(v34 & 3) )
            dword_63F684 *= 2;
        }
        a1 = 5 * v30 - v18;
        Max = 4 * v17;
        a1 = j_Q_Clamp_sub_5ADFA0(a1, 0, 4 * v17);
        Max = j_Q_Clamp_sub_5ADFA0(Max, 0, a1);
        dword_63F688 = (a1 + ((V_MapSizeX_word_6D1160 >> 1) - v48) / 2 + Max);
        if ( v38 )
          dword_63F688 = (dword_63F688 >> 1);
        v4 = j_Q_Clamp_sub_5ADFA0(v31 - 1, 0xFFFFFFFE, 1);
        dword_63F688 = sub_40112C(dword_63F688, v4);
        if ( !((v34 - 2) & 3) )
          dword_63F688 = (dword_63F688 + (dword_63F688 >> 1));
        if ( *&stru_64C6A0[v13].Unknown3 == 9 )
          dword_63F688 = (2 * dword_63F688);
        if ( stru_64F340[arg0].Size > 0xA )
          dword_63F688 = (dword_63F688 >> 1);
        dword_63F68C = (v20 + 1) * (v25 + 2 * v19 + 1);
        if ( dword_63F68C )
        {
          dword_63F68C += 2 * v50;
          if ( v34 )
          {
            if ( !(v34 % 5) )
              dword_63F68C *= 2;
          }
        }
        if ( *&stru_64C6A0[v13].Unknown3 == 0xB )
          dword_63F68C *= 2;
        dword_63F690 = 8 * v21;
        if ( 8 * v21 )
        {
          dword_63F690 += v48 + v20;
          if ( !sub_402E7D(v13, 0x27) )
            dword_63F690 >>= 1;
          if ( v34 > 8 )
            dword_63F690 += dword_63F690 >> 1;
          if ( stru_64F340[arg0].Size < 5 )
            dword_63F690 >>= 1;
        }
        if ( *&stru_64C6A0[v13].Unknown3 == 0xA )
          dword_63F68C *= 2;
        dword_63F694 = (v30 + v26) / 2 * (3 * v25 + 2 * v24 + 2 * v16);
        if ( dword_63F694 )
        {
          if ( v55 < 0xA )
            dword_63F694 *= 2;
          dword_63F694 -= v55;
          if ( word_666130[8 * v34] <= 0x19 )
            dword_63F694 += dword_63F694 >> 1;
          if ( word_666130[8 * v34] > 0x12C )
            dword_63F694 >>= 1;
          if ( v34 == 1 )
            dword_63F694 >>= 1;
        }
        dword_63F698 = v17 + (v16 + 1) * (v24 + 1) * (v21 + 1);
        if ( dword_63F698 )
        {
          dword_63F698 *= j_Q_Clamp_sub_5ADFA0(v31, 1, 4);
          dword_63F698 /= 2;
          if ( v34 == 7 )
            dword_63F698 += dword_63F698 >> 1;
        }
        dword_63F69C = (v30 + 2) * (v20 / 2 + v21 + 1);
        if ( v21 > 2 )
          dword_63F69C *= 2;
        if ( stru_64F340[arg0].Size >= 5 )
          dword_63F69C *= 2;
        if ( stru_64F340[arg0].Size >= 0xA )
          dword_63F69C *= 2;
        dword_63F6A0 = 8 * v22 + 0xA * v16 + 6 * v24 + 0xC * v23;
        if ( !byte_655B90 )
          dword_63F6A0 >>= 3;
        if ( dword_63F6A0 )
        {
          if ( v34 == 0x11 )
          {
            dword_63F6A0 *= 3;
          }
          else if ( v34 > 1 && !((v34 - 1) & 7) )
          {
            dword_63F6A0 += dword_63F6A0 >> 1;
          }
          dword_63F6A0 *= j_Q_Clamp_sub_5ADFA0(v31 / 2 - 2, 1, 2);
        }
        else
        {
          dword_63F6A0 = 0xFFFFFFFF;
        }
        dword_63F6A4 = (v21 + 1) * (v30 + v20 + 1) * (v16 + v22 + 1);
        if ( !sub_402E7D(v13, 0x3A) )
          dword_63F6A4 = 0;
        if ( dword_63F6A4 )
        {
          if ( v34 )
          {
            if ( !(v34 % 0xA) )
              dword_63F6A4 += dword_63F6A4 >> 1;
          }
          v5 = v31;
          if ( v31 >= 6 )
            v5 = 6;
          dword_63F6A4 *= v5;
          dword_63F6A4 /= 6;
        }
        else
        {
          dword_63F6A4 = 0xFFFFFFFF;
        }
        *dword_63F540 = v19 + 3 * v55 / 2 + 5 * (v23 + v22) + 2 * v21;
        dword_63F54C = 4 * v20 + 4 * v19;
        dword_63F54C += *dword_63F540 * (v40 / 0xA) / 8;
        if ( stru_64F340[arg0].Size < 3 )
          *dword_63F540 *= 2;
        if ( sub_402E7D(v13, 0x25) )
          *dword_63F540 /= 3;
        if ( sub_402E7D(v13, 0x30) )
          *dword_63F540 = 1;
        if ( v40 < 0xA )
          *dword_63F540 *= 2;
        if ( v40 < 0x14 )
          *dword_63F540 *= 2;
        if ( v40 >= 0x30 )
          *dword_63F540 /= 2;
        if ( (V_MapSizeY_word_6D1162 >> 2) - v55 <= 0 )
          v12 = -((V_MapSizeY_word_6D1162 >> 2) - v55);
        else
          v12 = (V_MapSizeY_word_6D1162 >> 2) - v55;
        dword_63F544[0] = v19 + 2 * v12 + 2 * v17;
        if ( sub_402E7D(v13, 0x25) )
          dword_63F544[0] *= 2;
        dword_63F548 = 3 * (0x15 - v26) / 2 + v55;
        if ( stru_64F340[arg0].Size < 4 )
          dword_63F548 += dword_63F548 >> 1;
        if ( stru_64F340[arg0].Size >= 0xC )
          dword_63F548 /= 2;
        if ( v40 >= 0x30 )
          dword_63F548 /= 2;
        v54 = 8;
        for ( j = stru_64F340[arg0].Size; v54 && j > 0; j -= v36 )
        {
          v36 = j_Q_Clamp_sub_5ADFA0(j, 0, 5);
          dword_63F550 += v54 * v36;
          v54 /= 2;
        }
        dword_63F550 -= v40 / 2;
        dword_63F554 = v40 + v31 * (v55 + 0xA);
        if ( stru_64F340[arg0].Size < 5 )
          dword_63F554 = 0;
        if ( stru_64F340[arg0].Size < 8 )
          dword_63F554 >>= 1;
        if ( sub_402E7D(v13, 0x25) )
          dword_63F554 *= 2;
        if ( sub_402E7D(v13, 0x17) )
          dword_63F554 *= 2;
        if ( j_Q_CityHasImprove_sub_43D20A(arg0, 0x13) )
          dword_63F554 *= 2;
        if ( j_Q_CityHasImprove_sub_43D20A(arg0, 0x14)
          || j_Q_CityHasImprove_sub_43D20A(arg0, 0x15)
          || j_Q_CityHasImprove_sub_43D20A(arg0, 0x1D) )
        {
          dword_63F554 >>= 3;
        }
        dword_63F558 = v31 * (v15 + v30 + 1);
        if ( dword_63F558 <= dword_63F680 )
          dword_63F558 >>= 1;
        if ( j_Q_CityHasImprove_sub_43D20A(arg0, 5) )
          dword_63F558 += dword_63F558 >> 1;
        if ( j_Q_CityHasImprove_sub_43D20A(arg0, 0xA) )
          dword_63F558 += dword_63F558 >> 1;
        if ( sub_402E7D(v13, 0x17) )
          dword_63F558 += dword_63F558 >> 1;
        if ( sub_402E7D(v13, 0x10) )
          dword_63F558 /= 4;
        if ( stru_64F340[arg0].Size < 5 )
          dword_63F558 >>= 1;
        dword_63F55C = v15 + dword_63F674;
        if ( sub_402E7D(v13, 0xA) )
          dword_63F55C /= 2;
        if ( sub_402E7D(v13, 0x30) )
          dword_63F55C /= 2;
        if ( stru_64F340[arg0].X - stru_64F340[arg0].Y <= 0 )
          v11 = -(stru_64F340[arg0].X - stru_64F340[arg0].Y);
        else
          v11 = stru_64F340[arg0].X - stru_64F340[arg0].Y;
        dword_63F560 = v11 + 4 * v31 + 4;
        dword_63F564 = (v17 / 2
                      + (V_MapSizeX_word_6D1160 >> 1)
                      + 2 * ((V_MapSizeY_word_6D1162 >> 1) - v55)
                      - v48
                      + 4 * v25
                      + 2 * v24
                      + 4 * v16);
        v6 = j_Q_Clamp_sub_5ADFA0(v31 - 1, 0xFFFFFFFF, 1);
        dword_63F564 = sub_40112C(dword_63F564, v6);
        if ( v34 == 1 )
        {
          if ( arg0 & 2 )
            dword_63F564 = (dword_63F564 + (dword_63F564 >> 1));
        }
        if ( stru_64F340[arg0].Size < 7 )
          dword_63F564 = (dword_63F564 >> 1);
        dword_63F568 = 8 * stru_64F340[arg0].Size;
        dword_63F574 = 0;
        dword_63F570 = 0;
        v42 = 0xA;
        v10 = (stru_64F340[arg0].X + stru_64F340[arg0].Y) % 3;
        if ( v10 == 1 )
        {
          dword_63F570 = dword_63F568;
          v42 = 0xC;
        }
        else if ( v10 == 2 )
        {
          dword_63F574 = dword_63F568;
          v42 = 0xD;
        }
        if ( j_Q_CityHasImprove_sub_43D20A(arg0, 0xB) || j_Q_CivHasWonder_sub_453E51(v13, 0xA) )
          *&dword_63F540[4 * v42] = 3 * *&dword_63F540[4 * v42] >> 1;
        if ( j_Q_CityHasImprove_sub_43D20A(arg0, 0xA) )
          *&dword_63F540[4 * v42] = 3 * *&dword_63F540[4 * v42] >> 1;
        if ( sub_402E7D(v13, 0x16) )
          *&dword_63F540[4 * v42] >>= 1;
        if ( sub_402E7D(v13, 0x10) )
          *&dword_63F540[4 * v42] >>= 1;
        if ( *&stru_64C6A0[v13].Unknown3 == 0x11 )
          *&dword_63F540[4 * v42] *= 2;
        v7 = v40 - 0xC;
        if ( v40 - 0xC <= 0 )
          v7 = 0;
        dword_63F56C = word_666130[8 * v34] / 0xA - v7;
        if ( stru_64F340[arg0].Size < 4 )
          dword_63F56C /= 2;
        if ( word_666130[8 * v34] > 0x190 )
        {
          if ( stru_64F340[arg0].Size >= 8 )
            dword_63F56C *= 2;
          if ( !((-stru_64F340[arg0].X - stru_64F340[arg0].Y) & 3) )
            dword_63F56C = 0;
        }
        if ( sub_402E7D(v13, 0x46) )
          dword_63F56C >>= 1;
        if ( sub_402E7D(v13, 0x25) )
        {
          dword_63F578 = (v31 + 2) * (v40 / 3);
          if ( dword_63F6A0 >= (v31 + 2) * (v40 / 3) )
            dword_63F578 >>= 1;
          if ( j_Q_CityHasImprove_sub_43D20A(arg0, 0xF) )
          {
            dword_63F578 = 3 * dword_63F578 / 2;
          }
          else
          {
            if ( stru_64F340[arg0].Size < 5 )
              dword_63F578 >>= 1;
            if ( stru_64F340[arg0].Size < 0xA )
              dword_63F578 >>= 1;
            if ( stru_64F340[arg0].Size < 0x14 )
              dword_63F578 >>= 1;
          }
          if ( sub_402E7D(v13, 5) )
            dword_63F578 *= 3;
          if ( j_Q_CityHasImprove_sub_43D20A(arg0, 0x19) )
            dword_63F578 *= 2;
          if ( j_Q_CityHasImprove_sub_43D20A(arg0, 0xD) )
            dword_63F578 >>= 1;
          if ( j_Q_CityHasImprove_sub_43D20A(arg0, 0x12) )
            dword_63F578 >>= 1;
        }
        else
        {
          dword_63F578 = 0xFFFFFFFF;
        }
        if ( sub_402E7D(v13, 0x3A) )
        {
          dword_63F57C = (v40 * v40);
          v8 = j_Q_Clamp_sub_5ADFA0(v31 - 3, 0xFFFFFFFD, 0);
          dword_63F57C = sub_40112C(dword_63F57C, v8);
          if ( j_Q_CityHasImprove_sub_43D20A(arg0, 0x15) || j_Q_CityHasImprove_sub_43D20A(arg0, 0x11) )
            dword_63F57C = (2 * dword_63F57C);
        }
        else
        {
          dword_63F57C = 0xFFFFFFFF;
        }
        for ( i = 0; i < 0x10; ++i )
        {
          if ( *&dword_63F540[4 * i] > *&CmdLine[4 * i] )
          {
            if ( *&CmdLine[4 * i] > 0 )
              *&CmdLine[4 * i] = 0;
          }
          else if ( *&dword_63F540[4 * i] > 0 )
          {
            *&dword_63F540[4 * i] = 0;
          }
        }
        sub_4011F9(0x10, &v27, CmdLine, v9);
        sub_4011F9(0x10, &v52, dword_63F540, v11);
        v29 = 0xF;
        for ( i = 0; i < 3; ++i )
        {
          do
            v46 = *(&v27 + v29--);
          while ( dword_63F66C[v29] < 0 );
          *(&stru_64F340[arg0].byte_64F37B + i) = v46;
        }
        v29 = 0xF;
        for ( i = 0; i < 3; ++i )
        {
          do
            v46 = *(&v52 + v29--);
          while ( dword_63F544[v29] < 0 );
          *(&stru_64F340[arg0].byte_64F37E + i) = v46;
        }
        if ( v40 < 0x20 )
        {
          v51 = (3 * stru_64F340[arg0].X + 5 * stru_64F340[arg0].Y) % 0xE;
          v57 = (0xD * stru_64F340[arg0].X + 7 * stru_64F340[arg0].Y) % 0xE;
        }
        else
        {
          v51 = (3 * stru_64F340[arg0].X + 5 * stru_64F340[arg0].Y) % 9 + 5;
          v57 = (0xD * stru_64F340[arg0].X + 7 * stru_64F340[arg0].Y) % 9 + 5;
        }
        if ( v57 == v51 )
          v57 = 0xFFFFFFFE;
        v33 = 0;
        for ( i = 0; i < 3; ++i )
        {
          if ( *(&stru_64F340[arg0].byte_64F37E + i) >= 0xE )
            v33 |= 1u;
          if ( *(&stru_64F340[arg0].byte_64F37B + i) >= 0xE )
            v33 |= 2u;
          if ( *(&stru_64F340[arg0].byte_64F37B + i) == v51 || *(&stru_64F340[arg0].byte_64F37E + i) == v51 )
            v51 = 0xFFFFFFFE;
          if ( *(&stru_64F340[arg0].byte_64F37B + i) == v57 || *(&stru_64F340[arg0].byte_64F37E + i) == v57 )
            v57 = 0xFFFFFFFE;
        }
        if ( v51 < 0 && !(v33 & 1) )
        {
          if ( sub_402E7D(v13, 0x25) && v51 & 1 )
          {
            v51 = 0xE;
          }
          else if ( sub_402E7D(v13, 0x3A) )
          {
            if ( !(v51 & 1) )
              v51 = 0xF;
          }
        }
        if ( v51 >= 0 )
          stru_64F340[arg0].byte_64F37F[0] = v51;
        if ( v57 < 0 && !(v33 & 2) )
        {
          v57 = (v57 & 1) + 0xE;
          if ( v57 == 0xE && !sub_402E7D(v13, 0x25) )
            v57 = 0xFFFFFFFF;
          if ( v57 == 0xF && !sub_402E7D(v13, 0x3A) )
            v57 = 0xFFFFFFFF;
        }
        if ( v57 >= 0 )
          stru_64F340[arg0].byte_64F37C[0] = v57;
        for ( i = 0; stru_64F340[arg0].byte_64F37A > i; ++i )
        {
          v46 = *(&stru_64F340[arg0].byte_64F381 + i);
          if ( v46 >= 0 )
          {
            for ( k = 0; k < 3; ++k )
            {
              if ( *(&stru_64F340[arg0].byte_64F37B + k) == v46 )
                *(&stru_64F340[arg0].byte_64F37B + k) = -*(&stru_64F340[arg0].byte_64F37B + k);
            }
            v56 = *(&stru_64F340[arg0].word_64F384 + i);
            v46 = 0xFFFFFFFF;
            for ( k = 0; stru_64F340[v56].byte_64F37A > k; ++k )
            {
              if ( *(&stru_64F340[v56].word_64F384 + k) == arg0 )
                v46 = *(&stru_64F340[v56].byte_64F381 + k);
            }
            if ( v46 >= 0 )
            {
              for ( k = 0; k < 3; ++k )
              {
                if ( *(&stru_64F340[arg0].byte_64F37E + k) == v46 )
                  *(&stru_64F340[arg0].byte_64F37E + k) = -*(&stru_64F340[arg0].byte_64F37E + k);
              }
            }
          }
        }
        for ( l = 0; ; ++l )
        {
          result = stru_655AE8.TotalUnits;
          if ( stru_655AE8.TotalUnits <= l )
            break;
          if ( stru_6560F0[l].ID )
          {
            if ( stru_6560F0[l].HomeCity == arg0
              && byte_64B1CA[0x14 * stru_6560F0[l].UnitType] == 7
              && stru_6560F0[l].Counter >= 0 )
            {
              for ( i = 0; i < 3; ++i )
              {
                if ( *(&stru_64F340[arg0].byte_64F37B + i) == stru_6560F0[l].Counter )
                  *(&stru_64F340[arg0].byte_64F37B + i) = -*(&stru_64F340[arg0].byte_64F37B + i);
              }
            }
          }
        }
      }
      return result;
    }
     
  6. TurnBasedObsession

    TurnBasedObsession Chieftain

    Joined:
    Mar 8, 2020
    Messages:
    1
    Gender:
    Male
    Don't know if this "bug" is present on vanilla version or if it is specific to UIA. Loaded a game earlier today and could not select any city (the city window would not appear)

    Solution was to re-load another savegame, opening city window there and then after that the game worked normally on this savegame again. Attached is the saved game to see if you can reproduce that problem in your end. Glad I did not to remove the whole save for corruption.
     

    Attached Files:

  7. FoxAhead

    FoxAhead Warlord

    Joined:
    Sep 7, 2017
    Messages:
    108
    Gender:
    Male
    Tried your save, but no bug detected. One of ideas is that there is some modal window opened behind the map.
    Otherwise need reproducible sequence of actions which lead to this bug.
     
  8. Zoot2020

    Zoot2020 Chieftain

    Joined:
    Mar 31, 2020
    Messages:
    3
    I get the error message:
    "Error: ReadProcessMemory: 5"
    Please tell me waht further information you need from me to help with this. Thank you!
     
  9. FoxAhead

    FoxAhead Warlord

    Joined:
    Sep 7, 2017
    Messages:
    108
    Gender:
    Male
    Have you tried "run as administrator"?
     
  10. Zoot2020

    Zoot2020 Chieftain

    Joined:
    Mar 31, 2020
    Messages:
    3
    Yes I have, thank you for that advise. I think it may have been due to having an older version of that patch already installed. Im running Windows 10 Home, and the game runs fine otherwise with the older version. I then did try to install the game again in a different directory using the original CD I still have, but the install does not even start. Im happy the game runs as it is, so Ill live with what I got. I just miss all those extra QOL's the newer patch affords!
     
  11. FoxAhead

    FoxAhead Warlord

    Joined:
    Sep 7, 2017
    Messages:
    108
    Gender:
    Male
    Can't reproduce this behavior in my environment. You can try to play with folder/file permissions. Something like this:
    https://answers.microsoft.com/en-us...ndows-10/8a4069ea-4b0e-4517-9d7a-62c44b4d6e7d
     
  12. Zoot2020

    Zoot2020 Chieftain

    Joined:
    Mar 31, 2020
    Messages:
    3
    Thank you anyway for your replys. Im trying to tell myself it aint the end of the world, at least the game plays..lol..

    EDIT: Guess what? NOW WE WORK! Either before I was not running as Administartor, even though I thought I was, or was running the wrong executable. This time I thought "what the hell, try it again.." and off we go!
     
    Last edited: Apr 5, 2020
  13. Dbuck12118

    Dbuck12118 Chieftain

    Joined:
    Apr 10, 2020
    Messages:
    3
    Gender:
    Male
    Hello all. I'm new to the forums. Been playing Civilization since the 90's. Just got a copy of Civ 2 MGE the other day. I did some of the updates to get it running correctly on my Win 7 system. The problem I'm having though, is trying to get Multiplayer to connect with my brothers laptop. He has Win 8. We tried LAN and Internet games but neither connect. We can see the game room either way (he sets it up or I do). Did I miss a patch that corrects it or is there another program I have download to both systems?
     
  14. Kaiser85

    Kaiser85 Chieftain

    Joined:
    Apr 27, 2007
    Messages:
    12
    Hi @FoxAhead I have downloaded the tool to play with simultaneous turns in multiplayer. As far as you know, does this tool work with the UIA Launcher?
     
  15. FoxAhead

    FoxAhead Warlord

    Joined:
    Sep 7, 2017
    Messages:
    108
    Gender:
    Male
    Hello!
    CIV2UIA should fix network problem relevant to Win8 and Win10.

     
  16. FoxAhead

    FoxAhead Warlord

    Joined:
    Sep 7, 2017
    Messages:
    108
    Gender:
    Male
    What is this tool? UIA was developed without taking simultaneous turns into account. I mean it was not tested in that conditions. But you could try.
     
  17. Kaiser85

    Kaiser85 Chieftain

    Joined:
    Apr 27, 2007
    Messages:
    12
    Here it is https://www.civfanatics.com/civ2/downloads/utility/
    The problem is that the tool asks me to choose "CIV2.exe" only, however your launcher is "Civ2UIALauncher.exe". I will try editing it in "CIV2" and see if it works.
     
  18. FoxAhead

    FoxAhead Warlord

    Joined:
    Sep 7, 2017
    Messages:
    108
    Gender:
    Male
    @Kaiser85
    you can try this instead:

    New version 1.14 (build 65).
    New option for Simultaneous moves in multiplayer.
    Same as writing 'Simultaneous=1' string to the CIV.INI file. With this option enabled, the multiplayer feature 'Humans Move Units at the Same Time' should be available when setting up a new multiplayer game.

    Download

    https://github.com/FoxAhead/Civ2-UI-Additions/releases/tag/v1.14
     
    Kaiser0985 likes this.
  19. Kaiser0985

    Kaiser0985 Chieftain

    Joined:
    Oct 24, 2019
    Messages:
    16
    Gender:
    Male
    Thank you! I will let you know asap.
     
  20. Dbuck12118

    Dbuck12118 Chieftain

    Joined:
    Apr 10, 2020
    Messages:
    3
    Gender:
    Male
    @FoxAhead

    I got both computer systems up and connected on a network game. The problem I run into now is I can't actually get a game to start. He connects into my game and we can get our Civs set up, but then my system just locks up on the building world screen and his screen says waiting for other people to join. I set it up for 4 civilizations on a large map so it should be me, him, and 2 AI. Not sure what I'm missing but everything else is working great.
     

Share This Page