mirror of https://github.com/mgba-emu/mgba.git
GBA Serialize: Add support for Vast Fame state
This commit is contained in:
parent
122128eae5
commit
bdb0057fb3
|
@ -446,6 +446,12 @@ struct GBASerializedState {
|
||||||
uint32_t settleNextEvent;
|
uint32_t settleNextEvent;
|
||||||
GBASerializedMulticartFlags flags;
|
GBASerializedMulticartFlags flags;
|
||||||
} multicart;
|
} multicart;
|
||||||
|
struct {
|
||||||
|
int16_t sramMode;
|
||||||
|
int16_t romMode;
|
||||||
|
int8_t writeSequence[5];
|
||||||
|
bool acceptingModeChange;
|
||||||
|
} vfame;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
|
|
@ -22,6 +22,9 @@ enum GBMulticartCfgOffset {
|
||||||
GBA_MULTICART_CFG_UNK = 0x6,
|
GBA_MULTICART_CFG_UNK = 0x6,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static_assert(sizeof(((struct GBASerializedState*)(NULL))->vfame.writeSequence) ==
|
||||||
|
sizeof(((struct GBAVFameCart*)(NULL))->writeSequence), "GBA savestate vfame writeSequence size mismatch");
|
||||||
|
|
||||||
static void _multicartSettle(struct mTiming* timing, void* context, uint32_t cyclesLate);
|
static void _multicartSettle(struct mTiming* timing, void* context, uint32_t cyclesLate);
|
||||||
|
|
||||||
void GBAUnlCartInit(struct GBA* gba) {
|
void GBAUnlCartInit(struct GBA* gba) {
|
||||||
|
@ -165,7 +168,10 @@ void GBAUnlCartSerialize(const struct GBA* gba, struct GBASerializedState* state
|
||||||
case GBA_UNL_CART_VFAME:
|
case GBA_UNL_CART_VFAME:
|
||||||
flags = GBASerializedUnlCartFlagsSetType(flags, GBA_UNL_CART_VFAME);
|
flags = GBASerializedUnlCartFlagsSetType(flags, GBA_UNL_CART_VFAME);
|
||||||
flags = GBASerializedUnlCartFlagsSetSubtype(flags, unl->vfame.cartType);
|
flags = GBASerializedUnlCartFlagsSetSubtype(flags, unl->vfame.cartType);
|
||||||
mLOG(GBA_MEM, STUB, "Vast Fame save states are not yet implemented");
|
STORE_16(unl->vfame.sramMode, 0, &state->vfame.sramMode);
|
||||||
|
STORE_16(unl->vfame.romMode, 0, &state->vfame.romMode);
|
||||||
|
memcpy(state->vfame.writeSequence, unl->vfame.writeSequence, sizeof(state->vfame.writeSequence));
|
||||||
|
state->vfame.acceptingModeChange = unl->vfame.acceptingModeChange;
|
||||||
break;
|
break;
|
||||||
case GBA_UNL_CART_MULTICART:
|
case GBA_UNL_CART_MULTICART:
|
||||||
flags = GBASerializedUnlCartFlagsSetType(0, GBA_UNL_CART_MULTICART);
|
flags = GBASerializedUnlCartFlagsSetType(0, GBA_UNL_CART_MULTICART);
|
||||||
|
@ -205,7 +211,10 @@ void GBAUnlCartDeserialize(struct GBA* gba, const struct GBASerializedState* sta
|
||||||
case GBA_UNL_CART_NONE:
|
case GBA_UNL_CART_NONE:
|
||||||
return;
|
return;
|
||||||
case GBA_UNL_CART_VFAME:
|
case GBA_UNL_CART_VFAME:
|
||||||
mLOG(GBA_MEM, STUB, "Vast Fame save states are not yet implemented");
|
LOAD_16(unl->vfame.sramMode, 0, &state->vfame.sramMode);
|
||||||
|
LOAD_16(unl->vfame.romMode, 0, &state->vfame.romMode);
|
||||||
|
memcpy(unl->vfame.writeSequence, state->vfame.writeSequence, sizeof(state->vfame.writeSequence));
|
||||||
|
unl->vfame.acceptingModeChange = state->vfame.acceptingModeChange;
|
||||||
return;
|
return;
|
||||||
case GBA_UNL_CART_MULTICART:
|
case GBA_UNL_CART_MULTICART:
|
||||||
unl->multi.bank = state->multicart.bank;
|
unl->multi.bank = state->multicart.bank;
|
||||||
|
|
Loading…
Reference in New Issue