Well, I use 25 as minimum. Lower is not possible since 0 = 25 in the data files. I use the program below (public domain for you programmers out there) to set all players skills to 100 and vancouver guys to 25. It would be nice though if EA would release the source to the game so that the AI could be improved. Doing these kind of "difficulty" adjustments are not that fun.
#include <stdio.h>
struct player
{
char team;
char jersey;
char position;
char first[16];
char last[16];
unsigned char u;
int addr_1;
int addr_2;
unsigned char uu[8];
};
struct atts
{
unsigned char stickside;
unsigned char speed;
unsigned char agility;
unsigned char weight;
unsigned char shpower;
unsigned char checking;
unsigned char stick;
unsigned char accuracy;
unsigned char u1;
unsigned char passing;
unsigned char offensive;
unsigned char defensive;
unsigned char aggr;
unsigned char endurance;
unsigned char bias;
unsigned char u2;
unsigned char u3;
unsigned char u4;
unsigned char u5;
unsigned char faceoffs;
};
unsigned char attfile[65000];
unsigned char keyfile[65000];
int convert(int x)
{
return 25 + (5 * x);
}
int main(int argc, char *argv[])
{
FILE *fp;
struct player *p;
struct atts *attr;
size_t keysize;
size_t attsize;
int i, j;
int val;
fp = fopen("KEY.DB", "r");
keysize = fread(keyfile, 1, sizeof(keyfile)-1, fp);
fclose(fp);
printf("keysize %d\n", keysize);
fp = fopen("ATT.DB", "r");
attsize = fread(attfile, 1, sizeof(attfile)-1, fp);
fclose(fp);
printf("attsize %d\n", attsize);
for (i = 0; i < keysize; i+=sizeof(struct player))
{
p = (struct player *) &keyfile[i];
printf("%3d %2d %c %-16s %-16s",
p->team, p->jersey, p->position, p->first, p->last, p->addr_1);
attr = (struct atts *) &attfile[p->addr_1];
/*
conversion
25 - 0
30 - 1
35 - 2
40 - 3
45 - 4
50 - 5
55 - 6
60 - 7
65 - 8
70 - 9
75 - 10
80 - 11
85 - 12
90 - 13
95 - 14
100 - 15 (0x0f)
*/
if ( attr->stickside == 1 )
printf(" L");
else if ( attr->stickside == 0 )
printf(" R");
printf(" %3d", convert(attr->speed));
printf(" %3d", convert(attr->agility));
printf(" %3d", convert(attr->weight));
printf(" %3d", convert(attr->shpower));
printf(" %3d", convert(attr->checking));
printf(" %3d", convert(attr->stick));
printf(" %3d", convert(attr->accuracy));
printf(" %3d", convert(attr->passing));
printf(" %3d", convert(attr->offensive));
printf(" %3d", convert(attr->defensive));
printf(" %3d", convert(attr->aggr));
printf(" %3d", convert(attr->endurance));
printf(" %3d", convert(attr->bias));
printf(" %3d", convert(attr->faceoffs));
puts("");
// mess up the vancouver team
if ( p->team == 21 )
{
val = 0;
attr->aggr = 15;
}
else
{
val = 15;
attr->aggr = 0;
}
attr->speed = val;
attr->agility = val;
attr->weight = val;
attr->shpower = val;
attr->checking = val;
attr->stick = val;
attr->accuracy = val;
attr->passing = val;
attr->offensive = val;
attr->defensive = val;
attr->endurance = val;
attr->bias = val;
attr->faceoffs = val;
}
fp = fopen("ATT.DB", "w");
fwrite(attfile, 1, attsize, fp);
fclose(fp);
return 0;
}