Last active
February 6, 2022 09:07
-
-
Save gnalvesteffer/3400c9de86b853301f22dc2d5f2edff9 to your computer and use it in GitHub Desktop.
Exanima Mod | Adds more items to the practice arena
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void Main() | |
{ | |
// Get process. | |
var gameProcess = Process.GetProcessesByName("Exanima").First(); | |
var externalMemory = new ExternalMemory(gameProcess); | |
var textSectionBaseAddress = 0x401000; // Exanima.exe.text | |
// Arsenal info. | |
var totalItemsToLoad = ArsenalItemIds.Length; | |
// Reload character customization items when navigating in UI. | |
externalMemory.WriteRaw((IntPtr)textSectionBaseAddress + 0xFFAC0, new byte[] { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }); | |
// Set total items to load. | |
externalMemory.Write((IntPtr)0x60BF0C, totalItemsToLoad); | |
// Generate array of items to load in novice practice arena. Item size is 0x13. | |
var newItemArrayAddress = externalMemory.Allocate(totalItemsToLoad * 0x13); | |
newItemArrayAddress.ToString("x").Dump(); | |
var newItemArrayAddressBytes = BitConverter.GetBytes(newItemArrayAddress.ToInt32()); | |
if (!BitConverter.IsLittleEndian) | |
{ | |
newItemArrayAddressBytes.Reverse(); | |
} | |
newItemArrayAddressBytes.Dump(); | |
for (var itemIndex = 0; itemIndex < totalItemsToLoad; ++itemIndex) | |
{ | |
var itemId = ArsenalItemIds[itemIndex]; | |
var itemAddress = newItemArrayAddress + 0x13 * itemIndex; | |
externalMemory.Write(itemAddress, itemId); // Item ID | |
for (var offset = 0x5; offset <= 0x12; ++offset) | |
{ | |
externalMemory.Write(itemAddress + offset, (byte)new Random(Guid.NewGuid().GetHashCode()).Next(0, 255)); | |
} | |
//externalMemory.Write(itemAddress + 0x0F, (byte)33); // Color Index 1 | |
} | |
// Point to new item array. | |
externalMemory.WriteRaw((IntPtr)textSectionBaseAddress + 0xFFB4C, newItemArrayAddressBytes.Prepend<byte>(0xBD).ToArray()); | |
// Suppress invalid item errors. | |
externalMemory.WriteRaw((IntPtr)textSectionBaseAddress + 0x177794, new byte[] { 0xC3 }); | |
} | |
// Sourced from item spreadsheet, filtered to Apparel, Shields, Weapons | |
int[] ArsenalItemIds = new int[] { | |
0x1, | |
0x2, | |
0x3, | |
0x4, | |
0x6, | |
0x7, | |
0x8, | |
0xA, | |
0xC, | |
0xD, | |
0xE, | |
0xF, | |
0x13, | |
0x14, | |
0x15, | |
0x16, | |
0x17, | |
0x18, | |
0x19, | |
0x1A, | |
0x1E, | |
0x1F, | |
0x20, | |
0x21, | |
0x22, | |
0x23, | |
0x24, | |
0x25, | |
0x26, | |
0x27, | |
0x28, | |
0x29, | |
0x2B, | |
0x2D, | |
0x2E, | |
0x2F, | |
0x35, | |
0x36, | |
0x37, | |
0x39, | |
0x3B, | |
0x3C, | |
0x3D, | |
0x3E, | |
0x3F, | |
0x40, | |
0x41, | |
0x42, | |
0x43, | |
0x44, | |
0x45, | |
0x4D, | |
0x4E, | |
0x4F, | |
0x50, | |
0x51, | |
0x52, | |
0x53, | |
0x55, | |
0x56, | |
0x59, | |
0x5D, | |
0x61, | |
0x69, | |
0x6B, | |
0x6F, | |
0x76, | |
0x77, | |
0x79, | |
0x7D, | |
0x7E, | |
0x7F, | |
0x80, | |
0x81, | |
0x8B, | |
0x8D, | |
0x8E, | |
0x8F, | |
0x90, | |
0x91, | |
0x93, | |
0x94, | |
0x95, | |
0x96, | |
0x97, | |
0x98, | |
0x99, | |
0x9A, | |
0x9B, | |
0x9E, | |
0x9F, | |
0xA0, | |
0xA6, | |
0xAD, | |
0xB7, | |
0xB9, | |
0xBA, | |
0xBC, | |
0xBF, | |
0xC0, | |
0xC3, | |
0xC4, | |
0xC5, | |
0xC7, | |
0xCB, | |
0xCE, | |
0xCF, | |
0xD2, | |
0xD4, | |
0xD5, | |
0xD8, | |
0xD9, | |
0xDE, | |
0xDF, | |
0xE0, | |
0xE1, | |
0xE2, | |
0xE3, | |
0xE4, | |
0xE5, | |
0xE6, | |
0xE7, | |
0xE8, | |
0xEA, | |
0xEB, | |
0xEC, | |
0xED, | |
0xEE, | |
0xEF, | |
0xF0, | |
0xF1, | |
0xF2, | |
0xF3, | |
0xF4, | |
0xF5, | |
0xF6, | |
0xF7, | |
0xF8, | |
0xF9, | |
0xFA, | |
0xFB, | |
0xFC, | |
0xFD, | |
0x106, | |
0x107, | |
0x109, | |
0x10E, | |
0x10F, | |
0x117, | |
0x118, | |
0x119, | |
0x11A, | |
0x11B, | |
0x11C, | |
0x11D, | |
0x11E, | |
0x11F, | |
0x120, | |
0x121, | |
0x122, | |
0x123, | |
0x124, | |
0x125, | |
0x126, | |
0x127, | |
0x128, | |
0x13D, | |
0x13E, | |
0x13F, | |
0x140, | |
0x141, | |
0x142, | |
0x143, | |
0x144, | |
0x14C, | |
0x14D, | |
0x14E, | |
0x14F, | |
0x150, | |
0x151, | |
0x152, | |
0x153, | |
0x154, | |
0x155, | |
0x156, | |
0x157, | |
0x15F, | |
0x162, | |
0x163, | |
0x16C, | |
0x16D, | |
0x16E, | |
0x16F, | |
0x170, | |
0x171, | |
0x172, | |
0x173, | |
0x174, | |
0x175, | |
0x176, | |
0x177, | |
0x17C, | |
0x17D, | |
0x17E, | |
0x17F, | |
0x184, | |
0x185, | |
0x186, | |
0x187, | |
0x188, | |
0x189, | |
0x18A, | |
0x18B, | |
0x18C, | |
0x18E, | |
0x18F, | |
0x190, | |
0x191, | |
0x192, | |
0x196, | |
0x197, | |
0x198, | |
0x199, | |
0x19A, | |
0x19B, | |
0x19C, | |
0x19D, | |
0x19E, | |
0x19F, | |
0x1A0, | |
0x1A1, | |
0x1A3, | |
0x1A4, | |
0x1A5, | |
0x1A6, | |
0x1A7, | |
0x1A8, | |
0x1A9, | |
0x1AA, | |
0x1AB, | |
0x1AC, | |
0x1AD, | |
0x1AE, | |
0x1B3, | |
0x1B4, | |
0x1B5, | |
0x1B6, | |
0x1B7, | |
0x1B8, | |
0x1B9, | |
0x1BA, | |
0x1BB, | |
0x1BC, | |
0x1BD, | |
0x1BE, | |
0x1BF, | |
0x1C0, | |
0x1C1, | |
0x1C2, | |
0x1C8, | |
0x1CA, | |
0x1CB, | |
0x1D0, | |
0x1D1, | |
0x1D2, | |
0x1D3, | |
0x1D4, | |
0x1D5, | |
0x1D6, | |
0x1D8, | |
0x1D9, | |
0x1E0, | |
0x1F1, | |
0x1F2, | |
0x1F5, | |
0x1F6, | |
0x1F7, | |
0x1F8, | |
0x1F9, | |
0x1FA, | |
0x1FB, | |
0x1FC, | |
0x1FD, | |
0x1FE, | |
0x1FF, | |
0x200, | |
0x201, | |
0x202, | |
0x203, | |
0x204, | |
0x205, | |
0x206, | |
0x207, | |
0x208, | |
0x209, | |
0x20A, | |
0x20B, | |
0x20C, | |
0x20D, | |
0x20E, | |
0x20F, | |
0x210, | |
0x211, | |
0x212, | |
0x213, | |
0x214, | |
0x215, | |
0x216, | |
0x217, | |
0x218, | |
0x219, | |
0x21A, | |
0x21B, | |
0x21C, | |
0x21D, | |
0x21E, | |
0x21F, | |
0x220, | |
0x221, | |
0x23C, | |
0x23D, | |
0x23E, | |
0x23F, | |
0x240, | |
0x241, | |
0x242, | |
0x243, | |
0x244, | |
0x245, | |
0x246, | |
0x247, | |
0x248, | |
0x24A, | |
0x24E, | |
0x24F, | |
0x250, | |
0x252, | |
0x253, | |
0x254, | |
0x255, | |
0x256, | |
0x265, | |
0x266, | |
0x267, | |
0x268, | |
0x269, | |
0x26A, | |
0x26C, | |
0x26D, | |
0x26E, | |
0x26F, | |
0x270, | |
0x271, | |
0x272, | |
0x273, | |
0x274, | |
0x275, | |
0x276, | |
0x277, | |
0x278, | |
0x279, | |
0x27A, | |
0x27B, | |
0x27C, | |
0x27D, | |
0x27E, | |
0x27F, | |
0x280, | |
0x281, | |
0x282, | |
0x283, | |
0x284, | |
0x285, | |
0x286, | |
0x287, | |
0x288, | |
0x289, | |
0x28A, | |
0x28B, | |
0x28C, | |
0x28D, | |
0x28E, | |
0x28F, | |
0x290, | |
0x291, | |
0x292, | |
0x293, | |
0x294, | |
0x295, | |
0x296, | |
0x297, | |
0x298, | |
0x29C, | |
0x29D, | |
0x29F, | |
0x2A0, | |
0x2AB, | |
0x2AC, | |
0x2AD, | |
0x2AE, | |
0x2AF, | |
0x2B0, | |
0x2B1, | |
0x2B2, | |
0x2B3, | |
0x2B4, | |
0x2B5, | |
0x2B6, | |
0x2B7, | |
0x2B8, | |
0x2B9, | |
0x2BA, | |
0x2BB, | |
0x2BC, | |
0x2BD, | |
0x2BE, | |
0x2C8, | |
0x2CF, | |
0x2D0, | |
0x2D1, | |
0x2D9, | |
0x2EF, | |
0x315, | |
0x316, | |
0x317, | |
0x318, | |
0x319, | |
0x31A, | |
0x31B, | |
0x31C, | |
0x31D, | |
0x31E, | |
0x31F, | |
0x320, | |
0x321, | |
0x322, | |
0x323, | |
0x324, | |
0x325, | |
0x326, | |
0x327, | |
0x328, | |
0x329, | |
0x32A, | |
0x32B, | |
0x32C, | |
0x32D, | |
0x32E, | |
0x32F, | |
0x330, | |
0x331, | |
0x332, | |
0x333, | |
0x334, | |
0x335, | |
0x336, | |
0x337, | |
0x338, | |
0x339, | |
0x33A, | |
0x33B, | |
0x341, | |
0x343, | |
0x34E, | |
0x350, | |
0x360, | |
0x361, | |
0x362, | |
0x363, | |
0x36E, | |
0x37A, | |
0x37B, | |
0x37C, | |
0x37D, | |
0x37E, | |
0x37F, | |
0x380, | |
0x381, | |
0x382, | |
0x383, | |
0x384, | |
0x385, | |
0x386, | |
0x388, | |
0x38D, | |
0x395, | |
0x396, | |
0x3B8, | |
0x3B9, | |
0x3BA, | |
0x3C1, | |
0x3E7, | |
0x3E8, | |
0x3E9, | |
0x3EA, | |
0x3EE, | |
0x3F0, | |
0x3F1, | |
0x3F2, | |
0x3FE, | |
0x401, | |
0x409, | |
0x411, | |
0x412, | |
0x41C, | |
0x41D, | |
0x41F, | |
0x420, | |
0x421, | |
0x422, | |
0x423, | |
0x424, | |
0x425, | |
0x426, | |
0x427, | |
0x428, | |
0x429, | |
0x42A, | |
0x42B, | |
0x42C, | |
0x42D, | |
0x42E, | |
0x42F, | |
0x430, | |
0x431, | |
0x432, | |
0x433, | |
0x43C, | |
0x43D, | |
0x44B, | |
0x44C, | |
0x489, | |
0x48A, | |
0x48B, | |
0x48D, | |
0x48E, | |
0x48F, | |
0x490, | |
0x491, | |
0x492, | |
0x493, | |
0x494, | |
0x495, | |
0x496, | |
0x497, | |
0x498, | |
0x499, | |
0x49A, | |
0x49B, | |
0x49C, | |
0x49D, | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment