SavvyManager/include/savedata.h
2024-08-13 17:27:06 -06:00

223 lines
7.0 KiB
C

#ifndef SAVEDATA_H
#define SAVEDATA_H
#ifdef __cplusplus
extern "C" {
#endif
#include <3ds.h>
#define ss2SavePath "ss2:/record_card.bin"
#define ss3SavePath "ss3:/savedata.dat"
#define ss4SavePath "/savedata.dat"
typedef struct ss2character {
u8 gender; // Gender (01=Female, 02=Male)
u8 poseSet; // Pose set (01=Active, 02=Cute, 03=Cool)
u8 height; // Height (00=Character is invisible)
u8 skinColor;
u8 faceShape; // Face shape (03=Left, 01=Mid, 02=Right)
u8 eyes;
u8 eyebrows;
u8 mouthShape;
u8 facialHair; // Facial hair (Male)
u8 hairStyle;
u8 hairColorMain;
u8 hairColorHighlights;
u16 eyelinerColor;
u16 contactColor;
u16 eyeShadowColor;
u16 eyeColor;
u16 lipColor;
u16 blush;
u8 mascaraLength;
u8 blushPosition;
u16 inner;
u16 top;
u16 outer;
u16 scarf;
u16 gloves;
u16 necklace;
u16 socks; // Socks/Leggings/Tights
u16 pants;
u16 skirt;
u16 shoes;
u16 legWarmers;
u16 hat;
u16 glasses;
u16 dress; // Dress/Jumpsuit
u16 bag;
} ss2character;
typedef struct ss3to4character {
u8 gender; // Gender (01=Female, 02=Male)
u8 height; // Height (00=Character is invisible)
u8 poseSet; // Pose set (01=Active, 02=Cute, 03=Cool)
u8 skinColor;
u8 faceShape; // Face shape (03=LeftF, 01=MidF, 02=RightF, 04=LeftM, 05=MidM, 06=RightM)
u8 eyes;
u8 mouthShape;
u8 eyebrows;
u8 facialHair; // Facial hair (Male)
u8 faceMole; // Face mole (Female)
u8 lipstickColor;
u8 mascaraColor;
u8 eyeshadowColor;
u8 eyelinerColor;
u8 contactColor;
u8 blusherColor;
u8 mascaraLength;
u8 blusherPosition;
u8 lipShine;
u8 eyeColor;
u8 eyebrowOverlay;
u8 hairStyle;
u8 hairFringe;
u8 hairColorMain;
u8 hairColorHighlights;
u8 freckles;
u8 nailColor; // Fashion Forward: Facial expression (00=Default), Styling Star: Nail color
u8 eyeliner; // Fashion Forward: 01 = No facial expressions, Styling Star: Eyeliner (00=Normal, 01=Double)
u8 unknown1C;
u8 eyebrowColor; // Fashion Forward: Eyebrow color, Styling Star: Unknown
u16 inner;
u16 top; // Top/Dress/Yukatas (Female), Yukatas/Dungarees (Male)
u16 outer;
u16 necklaceScarfHeadphones; // Fashion Forward: Necklace/Scarf, Styling Star: Scarf/Headphones
u16 gloves;
u16 socks; // Socks/Leggings/Tights
u16 skirtPants; // Skirt/Pants
u16 shoes;
u16 legWarmers;
u16 hat;
u16 glasses; // Also Earrings in Fashion Forward
u16 bag;
u16 necklace; // Styling Star
u16 watch; // Styling Star
u16 earrings; // Styling Star
u8 bowPosition; // Styling Star
u8 unknown3D;
} ss3to4character;
typedef struct ss3to4emblem {
u32 palLine;
u8 sprite[0x800];
} ss3to4emblem;
extern u8 saveRegion[4];
//extern ss3to4character ss4CharacterData;
extern ss3to4emblem emblemData;
extern const char* ss1SavePath;
extern char ss2PlayerName[10];
extern char ss3PlayerName[10];
extern char ss4PlayerName[10];
extern Handle handle4;
extern FS_Archive archive4;
extern void commitSaveData(void);
extern void readSS2Save(void);
extern void writeSS2Save(void);
extern void readSS3Save(void);
extern void writeSS3Save(void);
extern bool foundSS4Save(void);
extern void readSS4Save(void);
extern void writeSS4Save(void);
extern void readSS2Character(void);
extern void writeSS2Character(void);
extern void readSS3Character(u16 id);
extern void readSS4CharacterToSS3(u16 id);
extern void writeSS3Character(u16 id);
extern void readSS4Character(u16 id);
extern void readSS3CharacterToSS4(u16 id);
extern void writeSS4Character(u16 id);
extern void toggleSS3Character(u16 id, bool enable);
extern bool existsSS3Character(u16 id);
extern void removeSS3CharacterBag(u16 id);
extern bool existsSS4Character(u16 id);
extern void readSS2CharacterFile(const char* filename);
extern void writeSS2CharacterFile(const char* filename);
extern void writeSS2CharacterToSave(void);
extern void readSS3CharacterFile(u16 id, const char* filename);
extern void writeSS3CharacterFile(u16 id, const char* filename);
extern void writeSS3CharacterToSave(u16 id);
extern void readSS4CharacterFile(u16 id, const char* filename);
extern void writeSS4CharacterFile(u16 id, const char* filename);
extern void writeSS4CharacterToSave(u16 id);
extern void writeSS4AssistantCharacterToSave(void);
extern void writeSS4MewtubeCharacter(int video, int slot);
extern void writeSS4MewtubeCharacterToSave(int video, int slot);
extern void revertSS4MewtubeCharacter(int video, int slot);
extern void backupSS3DLCharacters(const char* filename);
extern void restoreSS3DLCharacters(const char* filename);
extern bool getSS2CharacterGender(void);
extern bool getSS2CharacterGenderNoExceptions(void);
extern bool getSS3CharacterGender(u16 id);
extern bool getSS3CharacterGenderNoExceptions(u16 id);
extern bool getSS4CharacterGender(u16 id);
extern bool getSS4CharacterGenderNoExceptions(u16 id);
extern void changeSS4CharacterGender(u16 id);
extern u16 getSS4AssistantCharacterId(void);
extern void writeSS4AssistantCharacterId(u16 id);
extern u16 getSS4MewtubeCharacterId(int video, int slot);
extern void writeSS4MewtubeCharacterId(u16 id, int video, int slot);
extern u8 readSS2CharacterHeight(void);
extern void writeSS2CharacterHeight(u8 height);
extern u8 readSS3CharacterHeight(u16 id);
extern void writeSS3CharacterHeight(u16 id, u8 height);
extern u8 readSS4CharacterHeight(u16 id);
extern void writeSS4CharacterHeight(u16 id, u8 height);
extern u8 readSS2CharacterPoseSet(void);
extern void writeSS2CharacterPoseSet(u8 poseSet);
extern u8 readSS3CharacterPoseSet(u16 id);
extern void writeSS3CharacterPoseSet(u16 id, u8 poseSet);
extern u8 readSS4CharacterPoseSet(u16 id);
extern void writeSS4CharacterPoseSet(u16 id, u8 poseSet);
extern const char* readSS3ProfileName(u16 id);
extern void readSS3ProfileFile(u16 id, const char* filename);
extern void writeSS3ProfileFile(u16 id, const char* filename);
extern const char* readSS4ProfileName(u16 id);
extern void readSS3Emblem(void);
extern void writeSS3Emblem(void);
extern void writeSS3EmblemToSave(void);
extern void readSS4Emblem(int id);
extern void writeSS4Emblem(int id);
extern void writeSS4EmblemToSave(int id);
void readSS3EmblemFile(const char* filename);
void writeSS3EmblemFile(const char* filename);
void readSS4EmblemFile(int id, const char* filename);
void writeSS4EmblemFile(int id, const char* filename);
void readTempEmblemFile(const char* filename);
extern u16 readSS3FashionOwnFlag(int id);
extern void writeSS3FashionOwnFlag(int id, u16 flag);
extern u8 readSS3FashionOwnWardFlag(int id);
extern void writeSS3FashionOwnWardFlag(int id, u8 flag);
extern void writeSS3FashionOwnFlagsToSave(void);
extern u16 readSS4FashionOwnFlag(int id);
extern void writeSS4FashionOwnFlag(int id, u16 flag);
extern u8 readSS4FashionOwnWardFlag(int id);
extern void writeSS4FashionOwnWardFlag(int id, u8 flag);
extern void writeSS4FashionOwnFlagsToSave(void);
#ifdef __cplusplus
}
#endif
#endif // SAVEDATA_H