slinga
Established Member
I've made a little bit of progress understanding the FPS:6MS save format. Basically my strategy is to edit something in a CAW and diff the changes in the save. It appears to be working but it's slow. I've also figured out the checksum. Here are my results so far:
Code:
// 20308 bytes in internal memory
// 31820 bytes in cartridge memory
struct FPS_save{
char magic[8] // FPS_DATA on internal, FPS_EDIT on cart
unsigned char isCAWSlotUsed[16]; // if 1 the slot contains a CAW, if 0 the slot is free. 16 on internal memory, 64 on cart
CAW caw[16]; // array of created wrestlers
?? - some region here contains the renamed promotions and wrestlers
unsigned int checksum; // Sum of all the bytes in the save excluding the checksum
}
// 0x1f0
struct isCAWS
{
unsigned char weightClass; // 1 = hvy, 2 = jr hv, 3 = free
unsigned char nameModifier; // high bit is to toggle first/last name
// low nibble is the seperator betwen the names
// 0 = space
// 1 = centered "."
// 2 = "="
// 3 = no space between first last names
char last_name_sjis[14]; // 14 characters for last name in SJIS. Last two bytes are for NULL terminator??
char first_name_sjis[20]; // how can it be an odd number? likely overlapped with a zero-ed field Last two bytes are for NULL terminator??
char nickname[26]; // how can it be an odd number? likely overlapped with a zero-ed field Last two bytes are for NULL terminator??
// 0x3e
unsigned char ht_in_cms;
unsigned char wt_in_kgs;
// 0x40
unsigned char birthplace; 0-31
unsigned char dob_year_since_1900;
unsigned char dob_month;
unsigned char dob_date;
unsigned char promotion;
unsigned char style;
unsigned char def;
unsigned char res;
// 0x48
unsigned char res_cut;
unsigned char air;
unsigned char air_cut;
unsigned char fcs;
unsigned char fsc_cut;
unsigned char neck;
unsigned char arms;
unsigned char wast;
// 0x50
unsigned char legs;
unsigend char move_speed;
unsigend char ring_climb;
unsigned char can_climb;
unsigned char critical;
unsigned char ring_return; 0-20
unsigned char teamwork; 0-2
unsigned char song;
// 0x58
unsigned char voice1;
unsigned char sound1;
unsigned char voice2;
unsigned char sound2;
0x5d
unsigned char stance; 0-8 strong - ko-budou(old budo)
unsigned char size; 0-2 s, m, l
0x172
RGB colors[34]; 68 bytes of wrestler RGB values
0x1b6
unsigned char finisher_sjis[40];
0x1e1
unsigned char face; 0-0xCB
0x1e2
// BUGBUG don't understand this
unsigned char chest; // this has the size encoded as well, not sure how
0x1e3
unsigned char waist; // not sure how this is encoded
0x1e4
unsigned char upper_arm; // not sure how this is encoded
0x1e5
unsigned char lower_arm; // not sure how this is encoded
0x1e6
unsigned char knee; 0-25; bare legs - kuma
0x1e7
unsigned char thigh; // not sure how this is encoded
0x1e8
unsigned char wrist; 0-2 bare hand - taping
?? also wrist? buttom bits are writst???
0x1e9
unsigned char ankle; 0-14 bare-feet- kuma
}
// 2 byte struct
// each CAW has 34 of these
struct RGB{
unsigned char red:5;
unsigned char green:5;
unsigned char blue:5;
unsigned char unused:1;
}
Last edited: