Jump to content

Iran

Retired staff
  • Posts

    1161
  • Joined

  • Last visited

Everything posted by Iran

  1. Can someone give me a description of the range of the most common units, when shooting south, west, north and east. I need this info for a south advantage fix. I don't know what the normal ranges are in each direction but they seem odd. When the Turret defense structure has it's turret pointing in the same direction as your attack cursor it gets one cell more range..
  2. Hi ROB, I didn't see that one. I just checked it and it's the Radar Dome crash. I added a test fix for it (which I'm not sure about whether it fixes the crash or not) but Allen262 seems to be using an older EXE.
  3. Which options would you use? It isn't hard for me to add but it takes quite some time..
  4. It's easy to change the facings to 32 though, it's a one byte change per vehicle unit.. I could add it as rules.ini options, like Arda has.
  5. But ANT1 to ANT3 only use 8 facings, not 32. The other vehicles are set up to use 32 facings. There should be options for vehicles which have their turret on the back of the vehicle (instead of center), an option to enable/disable turret and one for bigger selection bracket. Does any of those interest you?
  6. I know now how to enable/disable shroud generator logic on every vehicle unit in the game. Sorry I kinda forgot about this topic since I replied almost a month ago.
  7. ...wow. They recycled that for the reveal trigger just because it's also a radius around a point? That is so fricking dumb. That setting is also used by other code, stuff that requires a decent radius mostly.
  8. If ANT1 to ANT3 were able to use more than 8 facings would that allow you to make Red Dawn any better? I also found out how to enable/disable shroud generator and radar jamming abilities on vehicle units, next to figuring out how to enable/disable crushing.
  9. The Jeep/Ranger and Mine Layer crush logics are hard-coded, the game setups every unit type with a function that takes tons of arguments, one of them is a 'can crush' flag. In the last 30 minutes I made the Ranger/Jeep be able to crush infantry and prevented the Nod Buggy from Red Dawn from doing this (by modifying the minelayer settings). This instruction is reponsible: AUTO:0056DD85 050 push 1 ; can crush, push 1 = true You need to change it to 'push 0'. Note that the 0x0056DD85 address is the in memory address of the instruction, not the address inside the executable. If you're interested in hex editing the EXE to apply this change please tell me so I'll figure out what address in the EXE needs to be changed. If you do that you need to modify every EXE I give you to add this change, so you should find some kind of program which can patch the EXE with this change (and any future ones) automatically.
  10. Get CCHyper to re-enable alliances with AI instead.
  11. Are you sure the Mine Layer doesn't still crush infantry because it is hard-coded like that? What makes the Jeep/Ranger be able to crush?
  12. Are you sure the Tracking= key is related to being able to crush infantry?
  13. There's a map called 'The Hills Have Eyes' included with the Aftermath expansion which sounds similar to what you're talking about. On this map there's a civilian town in the middle with civilians with crazy and overpowered weapons, they're scripted to attack players.
  14. Sadly this isn't the case in Red Alert 1 and I've been meaning to patch the game to add this logic, because in skirmish the AI runs out of money really quickly. To be fair everyone does..
  15. Here's the code causing Tiberium to spread and grow for cells. .text:004689F8 void MapClass::Logic(void) proc near ; CODE XREF: LogicClass::AI(void)+2DDp .text:004689F8 ; DATA XREF: .data:004FC8C8o ... .text:004689F8 .text:004689F8 var_38 = dword ptr -38h .text:004689F8 var_34 = dword ptr -34h .text:004689F8 var_30 = dword ptr -30h .text:004689F8 var_2C = dword ptr -2Ch .text:004689F8 var_28 = dword ptr -28h .text:004689F8 var_24 = word ptr -24h .text:004689F8 var_20 = byte ptr -20h .text:004689F8 var_1C = byte ptr -1Ch .text:004689F8 .text:004689F8 push ebx .text:004689F9 push ecx .text:004689FA push edx .text:004689FB push esi .text:004689FC push edi .text:004689FD push ebp .text:004689FE sub esp, 20h .text:00468A01 mov esi, eax .text:00468A03 mov ah, ds:byte_53E4A2 .text:00468A09 test ah, 8 .text:00468A0C jnz short loc_468A17 .text:00468A0E test ah, 10h .text:00468A11 jz loc_468D77 .text:00468A17 .text:00468A17 loc_468A17: ; CODE XREF: MapClass::Logic(void)+14j .text:00468A17 mov eax, [esi+102h] .text:00468A1D mov edx, 1Eh .text:00468A22 sar eax, 10h .text:00468A25 mov [esp+38h+var_28], edx .text:00468A29 mov [esp+38h+var_2C], eax .text:00468A2D cmp eax, 1000h .text:00468A32 jl short loc_468A4F .text:00468A34 jmp loc_468B56 .text:00468A39 ; --------------------------------------------------------------------------- .text:00468A39 .text:00468A39 loc_468A39: ; CODE XREF: MapClass::Logic(void)+158j .text:00468A39 mov ecx, [esp+38h+var_2C] .text:00468A3D inc ecx .text:00468A3E mov [esp+38h+var_2C], ecx .text:00468A42 cmp ecx, 1000h .text:00468A48 jl short loc_468A51 .text:00468A4A jmp loc_468B56 .text:00468A4F ; --------------------------------------------------------------------------- .text:00468A4F .text:00468A4F loc_468A4F: ; CODE XREF: MapClass::Logic(void)+3Aj .text:00468A4F xor ebp, ebp .text:00468A51 .text:00468A51 loc_468A51: ; CODE XREF: MapClass::Logic(void)+50j .text:00468A51 mov dh, [esi+106h] .text:00468A57 mov ebx, [esp+38h+var_2C] .text:00468A5B test dh, 1 .text:00468A5E jnz short loc_468A69 .text:00468A60 mov ebx, 0FFFh .text:00468A65 sub ebx, [esp+38h+var_2C] .text:00468A69 .text:00468A69 loc_468A69: ; CODE XREF: MapClass::Logic(void)+66j .text:00468A69 movsx eax, bx .text:00468A6C imul eax, 21h .text:00468A6F mov edx, [esi] .text:00468A71 add eax, edx .text:00468A73 mov dl, ds:byte_53E4A2 .text:00468A79 mov ecx, eax .text:00468A7B test dl, 8 .text:00468A7E jz short loc_468AC6 .text:00468A80 mov dl, [eax+20h] .text:00468A83 cmp dl, 5 .text:00468A86 jnz short loc_468AC6 .text:00468A88 mov al, [eax+7] .text:00468A8B and eax, 0FFh .text:00468A90 cmp eax, 0Bh .text:00468A93 jge short loc_468AC6 .text:00468A95 mov edi, [esi+98h] .text:00468A9B cmp edi, 32h .text:00468A9E jnb short loc_468AB7 .text:00468AA0 lea edx, ds:0[edi*2] .text:00468AA7 lea eax, [edi+1] .text:00468AAA mov [esi+98h], eax .text:00468AB0 mov [edx+esi+34h], bx .text:00468AB5 jmp short loc_468AC6 .text:00468AB7 ; --------------------------------------------------------------------------- .text:00468AB7 .text:00468AB7 loc_468AB7: ; CODE XREF: MapClass::Logic(void)+A6j .text:00468AB7 lea edx, [edi-1] .text:00468ABA mov eax, ebp .text:00468ABC call RandomStraw_RandomRanged .text:00468AC1 mov [esi+eax*2+34h], bx .text:00468AC6 .text:00468AC6 loc_468AC6: ; CODE XREF: MapClass::Logic(void)+86j .text:00468AC6 ; MapClass::Logic(void)+8Ej ... .text:00468AC6 mov eax, ecx .text:00468AC8 call sub_4266B8 .text:00468ACD test ds:byte_53E4A2, 10h .text:00468AD4 jz short loc_468AE8 .text:00468AD6 mov dl, [ecx+20h] .text:00468AD9 cmp dl, 5 .text:00468ADC jnz short loc_468AE8 .text:00468ADE xor edx, edx .text:00468AE0 mov dl, [ecx+7] .text:00468AE3 cmp edx, 6 .text:00468AE6 jg short loc_468AF5 .text:00468AE8 .text:00468AE8 loc_468AE8: ; CODE XREF: MapClass::Logic(void)+DCj .text:00468AE8 ; MapClass::Logic(void)+E4j .text:00468AE8 test eax, eax .text:00468AEA jz short loc_468B45 .text:00468AEC mov edx, [eax+1Eh] .text:00468AEF test byte ptr [edx+21h], 4 .text:00468AF3 jz short loc_468B45 .text:00468AF5 .text:00468AF5 loc_468AF5: ; CODE XREF: MapClass::Logic(void)+EEj .text:00468AF5 mov edi, 1 .text:00468AFA test eax, eax .text:00468AFC jz short loc_468B03 .text:00468AFE mov edi, 3 .text:00468B03 .text:00468B03 loc_468B03: ; CODE XREF: MapClass::Logic(void)+104j .text:00468B03 mov ecx, ebp .text:00468B05 test edi, edi .text:00468B07 jle short loc_468B45 .text:00468B09 jmp short loc_468B22 .text:00468B0B ; --------------------------------------------------------------------------- .text:00468B0B .text:00468B0B loc_468B0B: ; CODE XREF: MapClass::Logic(void)+133j .text:00468B0B lea edx, [eax-1] .text:00468B0E mov eax, ebp .text:00468B10 call RandomStraw_RandomRanged .text:00468B15 mov [esi+eax*2+9Ch], bx .text:00468B1D .text:00468B1D loc_468B1D: ; CODE XREF: MapClass::Logic(void)+14Bj .text:00468B1D inc ecx .text:00468B1E cmp ecx, edi .text:00468B20 jge short loc_468B45 .text:00468B22 .text:00468B22 loc_468B22: ; CODE XREF: MapClass::Logic(void)+111j .text:00468B22 mov eax, [esi+100h] .text:00468B28 cmp eax, 32h .text:00468B2B jnb short loc_468B0B .text:00468B2D lea edx, ds:0[eax*2] .text:00468B34 inc eax .text:00468B35 mov [esi+100h], eax .text:00468B3B mov [edx+esi+9Ch], bx .text:00468B43 jmp short loc_468B1D .text:00468B45 ; --------------------------------------------------------------------------- .text:00468B45 .text:00468B45 loc_468B45: ; CODE XREF: MapClass::Logic(void)+F2j .text:00468B45 ; MapClass::Logic(void)+FBj ... .text:00468B45 mov edx, [esp+38h+var_28] .text:00468B49 dec edx .text:00468B4A mov [esp+38h+var_28], edx .text:00468B4E cmp ebp, edx .text:00468B50 jnz loc_468A39 .text:00468B56 .text:00468B56 loc_468B56: ; CODE XREF: MapClass::Logic(void)+3Cj .text:00468B56 ; MapClass::Logic(void)+52j .text:00468B56 mov eax, [esp+38h+var_2C] .text:00468B5A mov [esi+104h], ax .text:00468B61 mov eax, [esi+102h] .text:00468B67 sar eax, 10h .text:00468B6A cmp eax, 1000h .text:00468B6F jl loc_468D77 .text:00468B75 mov ebp, 1 .text:00468B7A mov ch, ds:byte_53E4A2 .text:00468B80 mov [esp+38h+var_38], ebp .text:00468B83 test ch, 20h .text:00468B86 jnz short loc_468B91 .text:00468B88 cmp ds:SessionClass__Session, 0 .text:00468B8F jz short loc_468B98 .text:00468B91 .text:00468B91 loc_468B91: ; CODE XREF: MapClass::Logic(void)+18Ej .text:00468B91 mov [esp+38h+var_38], 2 .text:00468B98 .text:00468B98 loc_468B98: ; CODE XREF: MapClass::Logic(void)+197j .text:00468B98 lea eax, [esi+106h] .text:00468B9E mov dh, [esi+106h] .text:00468BA4 mov word ptr [esi+104h], 0 .text:00468BAD test dh, 1 .text:00468BB0 setz dl .text:00468BB3 mov bl, [eax] .text:00468BB5 and bl, 0FEh .text:00468BB8 and edx, 0FFh .text:00468BBE mov [eax], bl .text:00468BC0 and edx, 1 .text:00468BC3 or [eax], edx .text:00468BC5 cmp dword ptr [esi+98h], 0 .text:00468BCC jz short loc_468C13 .text:00468BCE mov edi, [esp+38h+var_38] .text:00468BD1 xor ebx, ebx .text:00468BD3 test edi, edi .text:00468BD5 jle short loc_468C13 .text:00468BD7 mov ebp, [esp+38h+var_38] .text:00468BDA xor ecx, ecx .text:00468BDC .text:00468BDC Grow_Tiberium: ; CODE XREF: MapClass::Logic(void)+219j .text:00468BDC mov edx, [esi+98h] .text:00468BE2 mov eax, ecx .text:00468BE4 dec edx .text:00468BE5 call RandomStraw_RandomRanged .text:00468BEA mov ax, [esi+eax*2+34h] .text:00468BEF cwde .text:00468BF0 imul edx, eax, 21h .text:00468BF3 mov eax, [esi] .text:00468BF5 add eax, edx .text:00468BF7 mov dl, [eax+20h] .text:00468BFA cmp dl, 5 .text:00468BFD jnz short loc_468C0E .text:00468BFF xor edx, edx .text:00468C01 mov dl, [eax+7] .text:00468C04 cmp edx, 0Bh ; tiberium check? .text:00468C07 jge short loc_468C0E .text:00468C09 inc dl .text:00468C0B mov [eax+7], dl ; Set to new tiberium stage? .text:00468C0E .text:00468C0E loc_468C0E: ; CODE XREF: MapClass::Logic(void)+205j .text:00468C0E ; MapClass::Logic(void)+20Fj .text:00468C0E inc ebx .text:00468C0F cmp ebx, ebp .text:00468C11 jl short Grow_Tiberium .text:00468C13 .text:00468C13 loc_468C13: ; CODE XREF: MapClass::Logic(void)+1D4j .text:00468C13 ; MapClass::Logic(void)+1DDj .text:00468C13 mov eax, [esi+100h] .text:00468C19 mov dword ptr [esi+98h], 0 .text:00468C23 test eax, eax .text:00468C25 jz loc_468D6D .text:00468C2B xor edx, edx .text:00468C2D mov ebx, [esp+38h+var_38] .text:00468C30 mov [esp+38h+var_34], edx .text:00468C34 test ebx, ebx .text:00468C36 jle loc_468D6D .text:00468C3C jmp loc_468CB4 .text:00468C41 ; --------------------------------------------------------------------------- .text:00468C41 .text:00468C41 SpreadTiberium: ; CODE XREF: MapClass::Logic(void)+362j .text:00468C41 ; MapClass::Logic(void)+36Dj .text:00468C41 ; DATA XREF: ... .text:00468C41 mov [esp+38h+var_30], 1 ; jumptable 00468D65 cases 1,3,5 .text:00468C49 mov eax, 1Eh .text:00468C4E call OverlayClass::operator new(uint) .text:00468C53 mov edi, eax .text:00468C55 test eax, eax .text:00468C57 jz short loc_468C86 .text:00468C59 mov eax, offset MouseClass Map .text:00468C5E mov edx, ebp .text:00468C60 call sub_4C1398 .text:00468C65 mov edx, 11h .text:00468C6A movsx ebx, ax .text:00468C6D mov eax, 6 .text:00468C72 mov ecx, 0FFFFFFFFh .text:00468C77 call RandomStraw_RandomRanged .text:00468C7C movsx edx, al .text:00468C7F mov eax, edi .text:00468C81 call OverlayClass::OverlayClass(OverlayType,short,HousesType) .text:00468C86 .text:00468C86 loc_468C86: ; CODE XREF: MapClass::Logic(void)+25Fj .text:00468C86 mov byte ptr [ebp+7], 1 .text:00468C8A .text:00468C8A loc_468C8A: ; CODE XREF: MapClass::Logic(void)+36Dj .text:00468C8A ; DATA XREF: .text:off_4689DCo .text:00468C8A cmp [esp+38h+var_30], 0 ; jumptable 00468D65 cases 0,2,4,6 .text:00468C8F jnz short loc_468CA0 .text:00468C91 .text:00468C91 loc_468C91: ; CODE XREF: MapClass::Logic(void)+329j .text:00468C91 ; MapClass::Logic(void)+33Aj ... .text:00468C91 mov cl, [esp+38h+var_20] .text:00468C95 inc cl .text:00468C97 mov [esp+38h+var_20], cl .text:00468C9B cmp cl, 8 .text:00468C9E jl short loc_468CFA .text:00468CA0 .text:00468CA0 loc_468CA0: ; CODE XREF: MapClass::Logic(void)+297j .text:00468CA0 ; MapClass::Logic(void)+2EAj .text:00468CA0 mov ebx, [esp+38h+var_34] .text:00468CA4 inc ebx .text:00468CA5 mov ecx, [esp+38h+var_38] .text:00468CA8 mov [esp+38h+var_34], ebx .text:00468CAC cmp ebx, ecx .text:00468CAE jge loc_468D6D .text:00468CB4 .text:00468CB4 loc_468CB4: ; CODE XREF: MapClass::Logic(void)+244j .text:00468CB4 mov edx, [esi+100h] .text:00468CBA xor eax, eax .text:00468CBC dec edx .text:00468CBD call RandomStraw_RandomRanged .text:00468CC2 mov ax, [esi+eax*2+9Ch] .text:00468CCA mov [esp+38h+var_24], ax .text:00468CCF mov edx, [esp+38h+var_28+2] .text:00468CD3 mov eax, offset MouseClass Map .text:00468CD8 sar edx, 10h .text:00468CDB call sub_468444 .text:00468CE0 test eax, eax .text:00468CE2 jz short loc_468CA0 .text:00468CE4 mov edx, 7 .text:00468CE9 xor eax, eax .text:00468CEB call RandomStraw_RandomRanged .text:00468CF0 xor dh, dh .text:00468CF2 mov [esp+38h+var_1C], al .text:00468CF6 mov [esp+38h+var_20], dh .text:00468CFA .text:00468CFA loc_468CFA: ; CODE XREF: MapClass::Logic(void)+2A6j .text:00468CFA mov dl, [esp+38h+var_20] .text:00468CFE add dl, [esp+38h+var_1C] .text:00468D02 mov ebx, [esp+38h+var_28+2] .text:00468D06 sar ebx, 10h .text:00468D09 imul ebx, 21h .text:00468D0C and dl, 7 .text:00468D0F mov eax, [esi] .text:00468D11 movsx edx, dl .text:00468D14 add eax, ebx .text:00468D16 call sub_427BAC .text:00468D1B mov ecx, eax .text:00468D1D mov ebp, eax .text:00468D1F test eax, eax .text:00468D21 jz loc_468C91 .text:00468D27 xor ebx, ebx .text:00468D29 xor edx, edx .text:00468D2B call sub_4266C8 .text:00468D30 test eax, eax .text:00468D32 jnz loc_468C91 .text:00468D38 mov al, [ecx+20h] .text:00468D3B test al, al .text:00468D3D jnz loc_468C91 .text:00468D43 cmp byte ptr [ecx+6], 0FFh .text:00468D47 jnz loc_468C91 .text:00468D4D mov al, [ecx+4] .text:00468D50 xor edi, edi .text:00468D52 sub al, 0A5h .text:00468D54 mov [esp+38h+var_30], edi .text:00468D58 cmp al, 6 .text:00468D5A ja SpreadTiberium ; jumptable 00468D65 cases 1,3,5 .text:00468D60 and eax, 0FFh ; switch 7 cases .text:00468D65 jmp cs:off_4689DC[eax*4] ; switch jump .text:00468D6D ; --------------------------------------------------------------------------- .text:00468D6D .text:00468D6D loc_468D6D: ; CODE XREF: MapClass::Logic(void)+22Dj .text:00468D6D ; MapClass::Logic(void)+23Ej ... .text:00468D6D mov dword ptr [esi+100h], 0 .text:00468D77 .text:00468D77 loc_468D77: ; CODE XREF: MapClass::Logic(void)+19j .text:00468D77 ; MapClass::Logic(void)+177j .text:00468D77 add esp, 20h .text:00468D7A pop ebp .text:00468D7B pop edi .text:00468D7C pop esi .text:00468D7D pop edx .text:00468D7E pop ecx .text:00468D7F pop ebx .text:00468D80 retn .text:00468D80 void MapClass::Logic(void) endp There's also a call in TerrainClass::AI() which might be for creating Tiberium by Blossom trees. Not sure: .text:00436D7C call OverlayClass::OverlayClass(OverlayType,short,HousesType)
  16. Make me a test mission where the enemy player has MGG and where I can easily check if MGG's are reshrouding stuff or not.
  17. for white colours on the tabs ingame: Mar 28 19:19:09 <iran> Pichorra: at offset 0xEC356 change 04 to 0F Mar 28 19:21:36 <iran> Pichorra: Offset 0x1F3A5 change 09 to 08 Mar 28 19:22:17 <iran> Pichorra: Offset 0x9AECE change 09 to 08 Mar 28 19:22:57 * ustas (6dac3bd2@gateway/web/freenode/ip.109.172.59.210) has left #cncnet Mar 28 19:23:40 <iran> Pichorra: Offset 0x9AEF6 change 09 to 08 Some info about making sidebar icons remap to player colour: http://cnc-comm.com/community/index.php?topic=2253.0
  18. Yes by adding [Aftermath]NewUnitsEnabled=1 to the mission file. The next release of my patch will have an option which enables Aftermath units too in single player missions.
  19. Iran

    CY repack glitch

    I was talking about patching ra95 so after capturing an enemy CY you get all the tech from an enemy side, even after losing that CY. It's possible for me to add that now but it's a bit tedious, basically need to find a way to check if you captured an enemy team's CY then set your country flag to a new one that's actually invalid (like 0x20) then patch the code that checks your country/side when checking for stuff you can build so it works with value 0x20. The figuring out if you captured an enemy CY is the only hard part though, unless the "current country" flag is used in more places and setting it to 0x20 crashes stuff.
  20. Iran

    CY repack glitch

    In RA1 a bit flag is used to check if you can build a 'buildable', it checks a side bitflag set on the data for every player. I think C&C95 changes that bitflag after you capture an enemy CY. Does C&C1 DOS have the same behavior? EDIT: I figured out how to make both sides' stuff buildable with some memory patching. I need to be able to check if an enemy CY has been captured for it to be useful though.
  21. Should probably ask around in the CnCNet v4 lobby for players.
  22. The game crashed while calling a C standard library function called 'time()', probably with the argument 1. That's all I see. Call stack is missing. When did the game crash? This function is only called in a few spots.
×
×
  • Create New...