Hi, DsPet -- I'm a little new here, but I was doing some digging on Animal Crossing and your posts kept showing up in Google a lot.
Sorry to resurrect a thread, but this might be the best place to ask
Do you have any information to share on the NPC format stored in the ISO?
In general, it seems to look something like...
Code:
struct npc_record {
uint16_t index; // Ordered NPC Index No.
char header[32]; // 32 Bytes of ????
char name[8][18]; // Name in UTF16 in 8 regions
char phrase[10][22]; // Phrase in UTF16 in 10 languages
uint8_t race; // Race ENUM, 0 = cat, etc.
uint8_t month; // Birth month, Jan = 0x01, etc.
uint8_t day; // Birth day.
char footer[5]; // five unknown bytes
uint8_t personality : 4; // Personality enum
uint8_t unk_nibble : 4; // Unknown nibble: always 0x5, 0x6, 0x9 or 0xA.
char unknown; // Always 0x00 or 0x80.
} __attribute__ ((packed));
I was wondering if you had any information on the unknown (to me) portions of the struct --
In particular, the 32 bytes in the header, the 5 bytes after the birthday, the byte at the end, and the nibble after the personality.
Observations:
footer[0] is a number 0x00 - 0x27, excluding 0x15.
footer[1] and footer[2] are always 0x00 through 0x09.
footer[3] is 0x01 through 0x0e
footer[4] is 0x00 through 0x0b.
unk_nibble is always 0x5, 0x6, 0x9 or 0xA.
unknown byte is always 0x00 or 0x80. Is this a binary flag on the high bit for something?
I don't have any particular end goal, I just decided on a whim to start browsing through AC:CF files to see what I could learn in case any decrypted dump of AC:NL ever existed ...
(Maybe this would be good practice. I've never reverse engineered anything before.)