RESTRICTIONS
Letting Real Sociedad buy any spaniard players
Code:
change
008CECAC: MOV ECX,DWORD PTR DS:[9D0128]
to
008CECAC: MOV ECX,-1
008CECB1: NOP
Stop from buying a nation's players
Code:
008CE9D0: MOV EDX,DWORD PTR DS:[9CF458]
008CE9D6: CMP ECX,EDX
008CE9D8: JNE SHORT 008CEA14
9CF458 is Saudi Arabia, this is the code that stops you from buying Saudi players. Changing 9CF458 will allow this rule to be applied to another nation instead.
Alternatively, deleting JNE SHORT 008CEA14 (filling with NOP) will apply this restriction to everybody unless they already play abroad.
It won't edit the messages the game shows though, they'll still refer to Saudi Arabia.
Stopping trial offers
Code:
change
00872538 - JE 00872620
to
00872538 - JMP 00872620
0087253D - NOP
Stopping transfers and loan bids
Code:
change
0087278D JE 00872918
to
0087278D JMP 00872918
00872792 NOP
I believe this just impacts on the user interface, so the AI should still be able to buy players.
Stop releasing players on free
Code:
change
00872077: JNE 00872165
to
JMP 00872165
Basque-only restriction
Code:
0053D7EF 90 NOP
0053D7F0 /$ 8B4C24 04 MOV ECX,DWORD PTR SS:[ESP+4]
0053D7F4 |. 85C9 TEST ECX,ECX
0053D7F6 |. 0F84 F9000000 JE cm0102.0053D8F5
0053D7FC |. 8B41 53 MOV EAX,DWORD PTR DS:[ECX+53] = (83, get nation id of club)
0053D7FF |. 85C0 TEST EAX,EAX check if it is -1 (none), I think.
0053D801 |. 0F84 EE000000 JE cm0102.0053D8F5
0053D807 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] get the id of the club
0053D809 |. 8B15 88F49C00 MOV EDX,DWORD PTR DS:[9CF488] = Spain
0053D80F |. 3BC2 CMP EAX,EDX tests if club is spanish
0053D811 |. 0F85 DE000000 JNZ cm0102.0053D8F5 skip next section if not spanish
0053D817 |. 8B01 MOV EAX,DWORD PTR DS:[ECX]
0053D819 |. 8B0D 20019D00 MOV ECX,DWORD PTR DS:[9D0120] = Athletic Bilbao
0053D81F |. 3BC1 CMP EAX,ECX
0053D821 |. 0F84 C8000000 JE cm0102.0053D8EF
0053D827 |. 3B05 34019D00 CMP EAX,DWORD PTR DS:[9D0134] = Athletic Bilbao B
0053D82D |. 0F84 BC000000 JE cm0102.0053D8EF
0053D833 |. 3B05 E4029D00 CMP EAX,DWORD PTR DS:[9D02E4] = SD Eibar
0053D839 |. 0F84 B0000000 JE cm0102.0053D8EF
0053D83F |. 3B05 E8029D00 CMP EAX,DWORD PTR DS:[9D02E8] = Amurrio CF
0053D845 |. 0F84 A4000000 JE cm0102.0053D8EF
0053D84B |. 3B05 EC029D00 CMP EAX,DWORD PTR DS:[9D02EC] = CD Aurrera Vitoria
0053D851 |. 0F84 98000000 JE cm0102.0053D8EF
0053D857 |. 3B05 F0029D00 CMP EAX,DWORD PTR DS:[9D02F0] = Barakaldo
0053D85D |. 0F84 8C000000 JE cm0102.0053D8EF
0053D863 |. 3B05 F4029D00 CMP EAX,DWORD PTR DS:[9D02F4] = SD Beasain
0053D869 |. 0F84 80000000 JE cm0102.0053D8EF
0053D86F |. 3B05 F8029D00 CMP EAX,DWORD PTR DS:[9D02F8] = Berneo Club
0053D875 |. 74 78 JE SHORT cm0102.0053D8EF
0053D877 |. 3B05 FC029D00 CMP EAX,DWORD PTR DS:[9D02FC] = Gernika Club
0053D87D |. 74 70 JE SHORT cm0102.0053D8EF
0053D87F |. 3B05 04039D00 CMP EAX,DWORD PTR DS:[9D0304] = SD Lemona
0053D885 |. 74 68 JE SHORT cm0102.0053D8EF
0053D887 |. 3B05 08039D00 CMP EAX,DWORD PTR DS:[9D0308] = Elgoibar CD
0053D88D |. 74 60 JE SHORT cm0102.0053D8EF
0053D88F |. 3B05 0C039D00 CMP EAX,DWORD PTR DS:[9D030C] = Hernani CD
0053D895 |. 74 58 JE SHORT cm0102.0053D8EF
0053D897 |. 3B05 10039D00 CMP EAX,DWORD PTR DS:[9D0310] = Zalla UC
0053D89D |. 74 50 JE SHORT cm0102.0053D8EF
0053D89F |. 3B05 14039D00 CMP EAX,DWORD PTR DS:[9D0314] = Cultural Durango
0053D8A5 |. 74 48 JE SHORT cm0102.0053D8EF
0053D8A7 |. 3B05 18039D00 CMP EAX,DWORD PTR DS:[9D0318] = SD Amorebieta
0053D8AD |. 74 40 JE SHORT cm0102.0053D8EF
0053D8AF |. 3B05 1C039D00 CMP EAX,DWORD PTR DS:[9D031C] = Arenas Getxo Bilbao
0053D8B5 |. 74 38 JE SHORT cm0102.0053D8EF
0053D8B7 |. 3B05 20039D00 CMP EAX,DWORD PTR DS:[9D0320] = Aurrera Ondarroa CD
0053D8BD |. 74 30 JE SHORT cm0102.0053D8EF
0053D8BF |. 3B05 24039D00 CMP EAX,DWORD PTR DS:[9D0324] = Baskonia CD
0053D8C5 |. 74 28 JE SHORT cm0102.0053D8EF
0053D8C7 |. 3B05 28039D00 CMP EAX,DWORD PTR DS:[9D0328] = SD Eibar B
0053D8CD |. 74 20 JE SHORT cm0102.0053D8EF
0053D8CF |. 3B05 2C039D00 CMP EAX,DWORD PTR DS:[9D032C] = San Pedro UD
0053D8D5 |. 74 18 JE SHORT cm0102.0053D8EF
0053D8D7 |. 3B05 30039D00 CMP EAX,DWORD PTR DS:[9D0330] = Santurtzi CD
0053D8DD |. 74 10 JE SHORT cm0102.0053D8EF
0053D8DF |. 3B05 34039D00 CMP EAX,DWORD PTR DS:[9D0334] = Sestto River Club
0053D8E5 |. 74 08 JE SHORT cm0102.0053D8EF
0053D8E7 |. 3B05 38039D00 CMP EAX,DWORD PTR DS:[9D0338] = Tolosa CF
0053D8ED |. 75 06 JNZ SHORT cm0102.0053D8F5
0053D8EF |> B8 01000000 MOV EAX,1
0053D8F4 |. C3 RETN
0053D8F5 |> 33C0 XOR EAX,EAX
0053D8F7 \. C3 RETN
I have discovered a new way of understanding the code during decoding the section.
MOV EAX,DWORD PTR DS:[ECX+53] would previously have been a bit of a mystery but I now know that it is accessing the value 83 (53 in hex) bytes into a club - which is the field 'nation id'. I'll post some more examples of this that should help improve our understanding of the code.
Stop applying for jobs
Code:
00482CA9: JNE SHORT 00482D04
Change this to JMP and you won't be able to apply for jobs - you'd have to wait to be offered a job.
Stop referring to players having 'British' passports
Code:
CPU Disasm
Address Hex dump Command Comments
007BC4CD |. 8B15 E4F29C00 MOV EDX,DWORD PTR DS:[9CF2E4]
007BC4D3 |. 8B01 MOV EAX,DWORD PTR DS:[ECX]
007BC4D5 |. 3BC2 CMP EAX,EDX
007BC4D7 |. 74 32 JE SHORT 007BC50B
007BC4D9 |. 3B05 10F59C00 CMP EAX,DWORD PTR DS:[9CF510]
007BC4DF |. 74 2A JE SHORT 007BC50B
007BC4E1 |. 3B05 5CF49C00 CMP EAX,DWORD PTR DS:[9CF45C]
007BC4E7 |. 74 22 JE SHORT 007BC50B
007BC4E9 |. 3B05 E4F39C00 CMP EAX,DWORD PTR DS:[9CF3E4]
007BC4EF |. 74 1A JE SHORT 007BC50B
007BC4F1 |. 6A 15 PUSH 15
007BC4F3 |. 8D9424 B40E0000 LEA EDX,[LOCAL.305]
007BC4FA |. 68 C8000000 PUSH 0C8
007BC4FF |. 52 PUSH EDX
007BC500 |. 51 PUSH ECX
007BC501 |. E8 CABCE5FF CALL 006181D0
007BC506 |. 83C4 10 ADD ESP,10
007BC509 |. EB 1A JMP SHORT 007BC525
007BC50B |> 68 649CAD00 PUSH OFFSET 00AD9C64
007BC510 |. 8D8424 B40E0000 LEA EAX,[LOCAL.305]
007BC517 |. 68 AC12A700 PUSH OFFSET 00A712AC ; ASCII "British<%s - COMMENT - type of passport>"
007BC51C |. 50 PUSH EAX
007BC51D |. E8 BE2FEBFF CALL 0066F4E0
007BC522 |. 83C4 0C ADD ESP,0C
007BC525 |> 8D8C24 B00E0000 LEA ECX,[LOCAL.305]
007BC52C |. 8D9424 200D0000 LEA EDX,[LOCAL.405]
007BC533 |. 51 PUSH ECX
007BC534 |. 52 PUSH EDX
007BC535 |. 6A 64 PUSH 64
007BC537 |. 6A 64 PUSH 64
007BC539 |. 68 2412A700 PUSH OFFSET 00A71224 ; ASCII "
<%s - player name eg Batistuta> would not require a work permit because he holds {an}<%s - nationality name eg Italian>{} passport."
Not tested this but I think if the bold lines are changed to CMP EAX,-1 the game will stop referring to players having 'British' passports, i.e. the game could be made to report that a player holds a Scottish passport - which might come in handy in a few years time.
9CF2E4 = England
9CF510 = Wales
9CF45C = Scotland
9CF3E4 = Northern Ireland
Imposing the basque-only restriction on every club
Code:
0053D7F0: MOV ECX,DWORD PTR SS:[ESP+4]
0053D7F4: TEST ECX,ECX
Change to:
0053D7F0: MOV EAX,1
0053D7F5: RETN
This will impose the basque-only restriction on every club, net result is that only a handful of transfers will happen.
The following changes the nationality that everyone is restricted to and changes it from Basque to -1; as nobody has -1 for a nationality (nationalities start at 0 for Afghanistan) no club will be able to sign anybody, not even free transfers. Clubs will only get the players that come through their youth team.
008CEBB5 A1 24F49C00 MOV EAX,DWORD PTR DS:[9CF424]
Change to:
008CEBB5 B8 FFFFFFFF MOV EAX,-1
Making this change will probably get really boring as I suspect lots of clubs will have squads full of grey players as their players leave and don't get replaced.