Resources for memory editing - muhopensores/dmc4_hook GitHub Wiki

static constexpr std::array<Room, 83> room_items = {
    Room {503, "Berial"},
    Room {504, "Bael"},
    Room {505, "Echidna"},
    Room {506, "Agnus"},
    Room {507, "Credo"},
    Room {700, "Dante"},
    Room {0,   "Opera House"},
    Room {1,   "Opera House Plaza"},
    Room {2,   "Storehouse"},
    Room {3,   "Cathedral"},
    Room {4,   "Terrace / Business District"},
    Room {5,   "Residential District"},
    Room {6,   "Port Caerula"},
    Room {7,   "Customs House"},
    Room {8,   "First Mining Area"},
    Room {9,   "Ferrum Hills"},
    Room {10,  "M17 Opera House"},
    Room {11,  "M17 Opera House Plaza"},
    Room {12,  "Business District / Terrace"},
    Room {13,  "M20 Opera House Plaza"},
    Room {100, "Second Mining Area"},
    Room {105, "Fortuna Castle Gate"},
    Room {200, "Grand Hall - Fortuna Castle"},
    Room {201, "Large Hall"},
    Room {202, "Dining Room"},
    Room {203, "Torture Chamber"},
    Room {204, "Central Courtyard"},
    Room {205, "Foris Falls - Bridge Area"},
    Room {206, "Gallery"},
    Room {207, "Library"},
    Room {209, "Soldier's Graveyard"},
    Room {210, "Master's Chamber"},
    Room {211, "Spiral Well"},
    Room {212, "Underground Laboratory"},
    Room {213, "R&D Access"},
    Room {214, "Game Room"},
    Room {215, "Containment Room"},
    Room {216, "Angel Creation"},
    Room {217, "Foris Falls - Detour Area"},
    Room {300, "Forest Entrance"},
    Room {301, "Windswept Valley"},
    Room {302, "Ruined Church"},
    Room {303, "Ruined Valley"},
    Room {304, "Ancient Training Ground"},
    Room {305, "Lapis River"},
    Room {306, "Ancient Plaza"},
    Room {307, "Den of the She-Viper"},
    Room {308, "Forgotten Ruins"},
    Room {309, "Hidden Pit"},
    Room {310, "Ruined Lowlands"},
    Room {311, "Lost Woods"},
    Room {400, "Gran Album Bridge"},
    Room {401, "Grand Hall - Order of the Sword HQ"},
    Room {402, "Key Chamber"},
    Room {403, "The Gauntlet"},
    Room {404, "Agnus' Room"},
    Room {405, "Security Corridor"},
    Room {406, "Experiment Disposal"},
    Room {407, "Meeting Room"},
    Room {408, "Ascension Chamber"},
    Room {409, "Advent Chamber"},
    Room {500, "Machina Ex Deus"},
    Room {501, "Stairway to Heaven"},
    Room {502, "Sacred Heart"},
    Room {510, "M18"},
    Room {512, "Sky Above Fortuna"},
    Room {800, "Secret Mission 1"},
    Room {801, "Secret Mission 2"},
    Room {802, "Secret Mission 3"},
    Room {803, "Secret Mission 4"},
    Room {804, "Secret Mission 5"},
    Room {805, "Secret Mission 6"},
    Room {806, "Secret Mission 7"},
    Room {807, "Secret Mission 8"},
    Room {808, "Secret Mission 9"},
    Room {809, "Secret Mission 10"},
    Room {810, "Secret Mission 11"},
    Room {811, "Secret Mission 12"},
    Room {705, "Bloody Palace 1-19"},
    Room {704, "Bloody Palace 21-39"},
    Room {703, "Bloody Palace 41-59"},
    Room {701, "Bloody Palace 61-79"},
    Room {702, "Bloody Palace 81-99"}
};
enum class GameDifficulty : uint32_t {
    HUMAN                 = 0,
    DEVIL_HUNTER          = 1,
    SON_OF_SPARDA_HOH_HAH = 2,
    DANTE_MUST_DIE        = 3,
    LEGENDARY_DARK_KNIGHT = 4,
};
enum ENEMY_ID : int {
  SCARECROW_LEG = 0,
  SCARECROW_ARM = 1,
  EM002 = 2,
  SCARECROW_MEGA = 3,
  EM004 = 4,
  ANGELO_BIANCO = 5,
  ANGELO_ALTO = 6,
  EM007 = 7,
  MEPHISTO = 8,
  FAUST = 9,
  FROST = 10,
  ASSAULT = 11,
  BLITZ = 12,
  CHIMERA = 13,
  EM014 = 14,
  CUTLASS = 15,
  GLADIUS = 16,
  BASILISK = 17,
  BERIAL = 18,
  BAEL = 19,
  EM020 = 20,
  ECHIDNA = 21,
  CREDO = 22,
  AGNUS = 23,
  EM024 = 24,
  SAVIOR = 25,
  EM026 = 26,
  EM027 = 27,
  EM028 = 28,
  SANCTUS_M11 = 29,
  SANCTUS_M20 = 30,
};
enum class GameMode : uint32_t {
    DEFAULT        = 0,
    HEAVEN_OR_HELL = 1,
    HELL_AND_HELL  = 2,
};
static const char* dante_attack_names[109] = {
    "",                                      // 0x00 /   0 
    "Rebellion Combo A1",                   // 0x01 /   1  ATCK_ID_RV_COMBO0
    "Rebellion Combo A2",                   // 0x02 /   2  ATCK_ID_RV_COMBO1
    "Rebellion Combo A3",                   // 0x03 /   3  ATCK_ID_RV_COMBO2
    "Rebellion Combo B1",                   // 0x04 /   4  ATCK_ID_RV_DELAY_COMBO0
    "Rebellion Combo B2",                   // 0x05 /   5  ATCK_ID_RV_DELAY_COMBO1
    "Million Stab",                         // 0x06 /   6  ATCK_ID_RV_HYAKURETSU
    "Helm Breaker",                         // 0x07 /   7  ATCK_ID_RV_KABUTO
    "Stinger Level 1",                      // 0x08 /   8  ATCK_ID_RV_STINGER_LV1
    "Stinger Level 2",                      // 0x09 /   9  ATCK_ID_RV_STINGER_LV2
    "Stinger DT",                           // 0x0A /  10  ATCK_ID_RV_DT_STINGER
    "High Time (Ground)",                   // 0x0B /  11  ATCK_ID_RV_HITIME
    "High Time (Air)",                      // 0x0C /  12  ATCK_ID_RV_HITIMEJUMP
    "Round Trip",                           // 0x0D /  13  ATCK_ID_RV_ROUND_TRIP
    "Round Trip (Call Back Ground)",        // 0x0E /  14  ATCK_ID_RV_RETURN
    "Round Trip (Call Back Air)",           // 0x0F /  15  ATCK_ID_RV_RETURN_AIR
    "Prop",                                 // 0x10 /  16  ATCK_ID_SRV_ROLLING
    "Shredder",                             // 0x11 /  17  ATCK_ID_SRV_ROLLING_SERIES
    "Aerial Rave 1",                        // 0x12 /  18  ATCK_ID_SRV_AIR_COMBO0
    "Aerial Rave 2",                        // 0x13 /  19  ATCK_ID_SRV_AIR_COMBO1
    "Aerial Rave 3",                        // 0x14 /  20  ATCK_ID_SRV_AIR_COMBO2
    "Aerial Rave 4",                        // 0x15 /  21  ATCK_ID_SRV_AIR_COMBO3
    "Dance Macabre",                        // 0x16 /  22  ATCK_ID_SRV_DANCE
    "Drive",                                // 0x17 /  23  ATCK_ID_SRV_DRIVE
    "Overdrive",                            // 0x18 /  24  ATCK_ID_SRV_DRIVE_SERIES
    "Quick Drive",                          // 0x19 /  25  ATCK_ID_SRV_COMBO0_DRIVE
    "Gilgamesh Combo A1",                   // 0x1A /  26  ATCK_ID_GM_L_STRAIGHT
    "Gilgamesh Combo A2",                   // 0x1B /  27  ATCK_ID_GM_R_BODY
    "Gilgamesh Combo A3",                   // 0x1C /  28  ATCK_ID_GM_HI_KICK
    "Gilgamesh Combo A4",                   // 0x1D /  29  ATCK_ID_GM_HEEL
    "Gilgamesh Combo B1",                   // 0x1E /  30  ATCK_ID_GM_HYAKURETSU
    "Gilgamesh Combo B2",                   // 0x1F /  31  ATCK_ID_GM_WHIRLWIND
    "Full House",                           // 0x20 /  32  ATCK_ID_GM_DESCENT_KICK
    "Kick 13 (Regular)",                    // 0x21 /  33  ATCK_ID_GM_KICK_13R
    "Draw",                                 // 0x22 /  34  ATCK_ID_GM_SWAYING_BACK
    "Straight",                             // 0x23 /  35  ATCK_ID_GM_STRAIGHT
    "Shock (Ground)",                       // 0x24 /  36  ATCK_ID_SGM_INFERNO
    "Shocking (Air)",                       // 0x25 /  37  ATCK_ID_SGM_AIR_INFERNO
    "Real Impact",                          // 0x26 /  38  ATCK_ID_SGM_REAL_IMPACT
    "Beast Uppercut",                       // 0x27 /  39  ATCK_ID_SGM_MAGMA_DRIVE
    "Rising Dragon",                        // 0x28 /  40  ATCK_ID_SGM_RISING_DRAGON
    "Divine Dragon",                        // 0x29 /  41  ATCK_ID_SGM_DIVINE_DRAGON
    "Lucifer Combo A1",                     // 0x2A /  42  ATCK_ID_LF_WIDE_RANGE_COMBO0
    "Lucifer Combo A2",                     // 0x2B /  43  ATCK_ID_LF_WIDE_RANGE_COMBO1
    "Lucifer Combo A3",                     // 0x2C /  44  ATCK_ID_LF_WIDE_RANGE_COMBO2
    "Lucifer Combo A4",                     // 0x2D /  45  ATCK_ID_LF_WIDE_RANGE_COMBO3
    "Lucifer Combo D1",                     // 0x2E /  46  ATCK_ID_LF_CROSS_THROW
    "Lucifer Combo C1",                     // 0x2F /  47  ATCK_ID_LF_BOISTEROUS
    "Lucifer Combo E1",                     // 0x30 /  48  ATCK_ID_LF_LAUNCH
    "Lucifer Combo B1",                     // 0x31 /  49  ATCK_ID_LF_ROLLING
    "ATCK_ID_LF_ARRANGEMENT_COMBO",         // 0x32 /  50  ATCK_ID_LF_ARRANGEMENT_COMBO
    "Splash",                               // 0x33 /  51  ATCK_ID_LF_AIR_ARRANGEMENT
    "Pin Up (Regular)",                     // 0x34 /  52  ATCK_ID_LF_DIO_KNIFE
    "Pin Up (DT)",                          // 0x35 /  53  ATCK_ID_LF_ADD_DIO_KNIFE
    "Ecstasy (Ground)",                     // 0x36 /  54  ATCK_ID_LF_DETONATE_ALL
    "Ecstasy (Air)",                        // 0x37 /  55  ATCK_ID_LF_AIR_DETONATE_ALL
    "Climax (Ground)",                      // 0x38 /  56  ATCK_ID_SLF_BOM_BARRIER
    "Climax (Air)",                         // 0x39 /  57  ATCK_ID_SLF_AIR_BOM_BARRIER
    "Discipline",                           // 0x3A /  58  ATCK_ID_SLF_FUNNEL
    "Bondage?",                             // 0x3B /  59  ATCK_ID_SLF_CONCENTRATED_LAUNCH
    "Ebony & Ivory Shoot (Ground)",         // 0x3C /  60  ATCK_ID_EI_SHOT
    "Ebony & Ivory Charged Shot Lv1 (G)",   // 0x3D /  61  ATCK_ID_EI_CSHOT_LV1
    "Ebony & Ivory Charged Shot Lv2 (G)",   // 0x3E /  62  ATCK_ID_EI_CSHOT_LV2
    "Ebony & Ivory Charged Shot Lv3 (G)",   // 0x3F /  63  ATCK_ID_EI_CSHOT_LV3
    "Ebony & Ivory Shoot (Air)",            // 0x40 /  64  ATCK_ID_EI_AIR_SHOT
    "Ebony & Ivory Charged Shot Lv1 (A)",   // 0x41 /  65  ATCK_ID_EI_AIR_CSHOT_LV1
    "Ebony & Ivory Charged Shot Lv2 (A)",   // 0x42 /  66  ATCK_ID_EI_AIR_CSHOT_LV2
    "Ebony & Ivory Charged Shot Lv3 (A)",   // 0x43 /  67  ATCK_ID_EI_AIR_CSHOT_LV3
    "Ebony & Ivory Twosome Time",           // 0x44 /  68  ATCK_ID_SEI_TWO_SOMETIME
    "Ebony & Ivory Honeycomb Fire",         // 0x45 /  69  ATCK_ID_SEI_HONEYCOMB
    "Ebony & Ivory Rainstorm",              // 0x46 /  70  ATCK_ID_SEI_RAIN_STORM
    "Coyote Ace Shoot (Ground)",            // 0x47 /  71  ATCK_ID_CA_SHOT
    "Coyote Ace Charged Shot Lv1 (G)",      // 0x48 /  72  ATCK_ID_CA_CSHOT_LV1
    "Coyote Ace Charged Shot Lv2 (G)",      // 0x49 /  73  ATCK_ID_CA_CSHOT_LV2
    "Coyote Ace Charged Shot Lv3 (G)",      // 0x4A /  74  ATCK_ID_CA_CSHOT_LV3
    "Coyote Ace Shoot (Air)",               // 0x4B /  75  ATCK_ID_CA_AIR_SHOT
    "Coyote Ace Charged Shot Lv1 (A)",      // 0x4C /  76  ATCK_ID_CA_AIR_CSHOT_LV1
    "Coyote Ace Charged Shot Lv2 (A)",      // 0x4D /  77  ATCK_ID_CA_AIR_CSHOT_LV2
    "Coyote Ace Charged Shot Lv3 (A)",      // 0x4E /  78  ATCK_ID_CA_AIR_CSHOT_LV3
    "Coyote Ace Fireworks (Ground)",        // 0x4F /  79  ATCK_ID_SCA_NUNCHAKU
    "Coyote Ace Fireworks (Air)",           // 0x50 /  80  ATCK_ID_SCA_AIR_NUNCHAKU
    "Coyote Ace Backslide",                 // 0x51 /  81  ATCK_ID_SCA_BACK_SHOT
    "Coyote Ace Gun Stinger",               // 0x52 /  82  ATCK_ID_SCA_STINGER
    "PF013: Epidemic",                      // 0x53 /  83  ATCK_ID_PD_LAUNCHER
    "PF124: Hatred",                        // 0x54 /  84  ATCK_ID_PD_LAUNCHER2
    "PF398: Revenge",                       // 0x55 /  85  ATCK_ID_PD_LAUNCHER3
    "PF262: Jealousy",                      // 0x56 /  86  ATCK_ID_PD_AIR_MACHINE_GUN
    "ATCK_ID_SPD_BATTERY",                  // 0x57 /  87  ATCK_ID_SPD_BATTERY
    "PF594: Argument",                      // 0x58 /  88  ATCK_ID_SPD_METEOR
    "PF422: Grief",                         // 0x59 /  89  ATCK_ID_SPD_BOOMERANG
    "PF666: Omen",                          // 0x5A /  90  ATCK_ID_SPD_PANDORA_BOX
    "Trickster Dash",                       // 0x5B /  91  ATCK_ID_TS_DASH
    "Sky Star",                             // 0x5C /  92  ATCK_ID_TS_AIR_DASH
    "Air Trick",                            // 0x5D /  93  ATCK_ID_TS_AIRTRICK
    "Flipper?",                             // 0x5E /  94  ATCK_ID_TS_BACK_WARP
    "Release (Bronze No Target)",           // 0x5F /  95  ATCK_ID_RG_RELEASE
    "Release (Silver Missed)",              // 0x60 /  96  ATCK_ID_RG_GUARD_RELEASE
    "Release (Gold Just)",                  // 0x61 /  97  ATCK_ID_RG_JUST_RELEASE
    "Release Air (Bronze)",                 // 0x62 /  98  ATCK_ID_RG_AIR_RELEASE
    "Release Air (Silver)",                 // 0x63 /  99  ATCK_ID_RG_AIR_GUARD_RELEASE
    "Release Air (Gold)",                   // 0x64 / 100  ATCK_ID_RG_AIR_JUST_RELEASE
    "Dreadnaught",                          // 0x65 / 101  ATCK_ID_RG_INVINCIBLE
    "Yamato Combo A1",                      // 0x66 / 102  ATCK_ID_YT_COMBO0
    "Yamato Combo A2",                      // 0x67 / 103  ATCK_ID_YT_COMBO1
    "Yamato Combo A3",                      // 0x68 / 104  ATCK_ID_YT_COMBO2
    "Aerial Rave V1",                       // 0x69 / 105  ATCK_ID_YT_AIR_COMBO0
    "Aerial Rave V2",                       // 0x6A / 106  ATCK_ID_YT_AIR_COMBO1
    "Slash Dimension (Far)",                // 0x6B / 107  ATCK_ID_YT_SPACE
    "Slash Dimension (Close)",              // 0x6C / 108  ATCK_ID_YT_SPACE2
};
static const std::vector<std::pair<uint16_t, const char*>> buttonPairs = {
    {0x0000, "None"},
    {0x0001, "Back"},
    {0x0002, "L3"},
    {0x0004, "R3"},
    {0x0008, "Start"},
    {0x0010, "Dpad Up"},
    {0x0020, "Dpad Right"},
    {0x0040, "Dpad Down"},
    {0x0080, "Dpad Left"},
    {0x0100, "L1"},
    {0x0200, "R1"},
    {0x0400, "L2"},
    {0x0800, "R2"},
    {0x1000, "Y"},
    {0x2000, "B"},
    {0x4000, "A"},
    {0x8000, "X"}
};
⚠️ **GitHub.com Fallback** ⚠️