#include "../copyright" #ifndef _CHEATS_H_ #define _CHEATS_H_ #ifdef WANT_CHEATS #define MAX_SFCCHEAT_NAME 48 #define MAX_CHEATS_T 800 typedef struct { uint32_t address; uint8_t byte; uint8_t saved_byte; bool enabled; bool saved; char name[MAX_SFCCHEAT_NAME]; } SCheat; typedef struct { SCheat c [MAX_CHEATS_T]; uint32_t num_cheats; uint8_t CWRAM [0x20000]; uint8_t CSRAM [0x10000]; uint8_t CIRAM [0x2000]; uint8_t* RAM; uint8_t* FillRAM; uint8_t* SRAM; uint32_t WRAM_BITS [0x20000 >> 3]; uint32_t SRAM_BITS [0x10000 >> 3]; uint32_t IRAM_BITS [0x2000 >> 3]; } SCheatData; typedef enum { S9X_LESS_THAN, S9X_GREATER_THAN, S9X_LESS_THAN_OR_EQUAL, S9X_GREATER_THAN_OR_EQUAL, S9X_EQUAL, S9X_NOT_EQUAL } S9xCheatComparisonType; typedef enum { S9X_8_BITS, S9X_16_BITS, S9X_24_BITS, S9X_32_BITS } S9xCheatDataSize; void S9xInitCheatData (); const char *S9xGameGenieToRaw (const char *code, uint32_t *address, uint8_t *byte); const char *S9xProActionReplayToRaw (const char *code, uint32_t *address, uint8_t *byte); const char *S9xGoldFingerToRaw (const char *code, uint32_t *address, bool *sram, uint8_t *num_bytes, uint8_t bytes[3]); void S9xApplyCheats(void); void S9xApplyCheat (uint32_t which1); void S9xRemoveCheats (); void S9xRemoveCheat (uint32_t which1); void S9xEnableCheat (uint32_t which1); void S9xDisableCheat (uint32_t which1); void S9xDisableAllCheat(void); void S9xAddCheat (bool enable, bool save_current_value, uint32_t address, uint8_t byte); void S9xDeleteCheats(void); void S9xDeleteCheat (uint32_t which1); bool S9xLoadCheatFile (const char *filename); bool S9xSaveCheatFile (const char *filename); void S9xStartCheatSearch (SCheatData *cheats); void S9xSearchForChange (SCheatData *cheats, S9xCheatComparisonType cmp, S9xCheatDataSize size, bool is_signed, bool update); void S9xSearchForValue (SCheatData *cheats, S9xCheatComparisonType cmp, S9xCheatDataSize size, uint32_t value, bool is_signed, bool update); void S9xOutputCheatSearchResults (SCheatData *cheats); #endif #endif