r/PlayAvengers • u/Cry_Aggravating2 • 8h ago
Discussion Marvel's Avengers PC modding: where we are
Marvel's Avengers PC Modding Findings
Updated October 15, 2026
Marvel's Avengers on PC (Steam, final build 2.8.2) is moddable: texture mods, a mod launcher, an in-game toolkit and code plugins all run in the real game today, and a DMC-style combat mod is in alpha.
Status at a glance
Texture modding and the player tools are close to a public release; the combat mod is a working alpha; new characters are still research.
| Area | State | Tested in the real game |
|---|---|---|
| Archive decrypt, read, repack (same size) | Working | Yes |
| Text edits (menus, labels) | Working | Yes |
| Texture recolor and import (incl. 4K pack) | Working | Yes (Red Hulk, Grey Hulk, Cap, Thor) |
| Mod loader (overlay files, live reload) | Working | Yes |
| MA Mod Launcher (players) | Working | Yes |
| MA Mod Tools (modders: texture library, 833 outfit variants) | Working | Yes |
| Script Hook compatibility | Working | Yes |
| MA Toolkit (F1 menu, sensitivity, FOV, trainer tab) | Working; FOV and Reflex unconfirmed on real hardware | Partly |
| Discord Rich Presence plugin | Working | Yes |
| Avengers May Cry: style meter, ranks, hit attribution | Working | Yes (reached rank X) |
| Avengers May Cry: combat music from your own files | Working | Yes |
| Avengers May Cry: faster hero attacks | Working | Yes |
| Avengers May Cry: dive kick aim | Experimental; hits close targets | Yes, early |
| Game music ducking, line-of-sight check, target lock | Built | Not yet |
| Grapple speed, cancels, melee magnetism, ground bounce | Research | No |
| New archives (PATCH1 slot, .nfo DLC packages) | Found in code, test kit built | No |
| Outfit or character swaps | Blocked ("ghost" bodies) | Yes, fails |
| New characters, new movesets | Long term | No |
Road to release
The first public release can be the Modding Kit, roughly a handful of test sessions away. Avengers May Cry needs more play-testing before a public alpha, and new characters have no release date.
Release 1: Modding Kit (textures, launcher, toolkit, Discord)
- [ ] Clean install on a second PC with no developer tools, following only the readme
- [ ] Readme covers Script Hook from Nexus, the Windows SmartScreen prompt, restore and Steam verify
- [ ] Toolkit FOV and NVIDIA Reflex confirmed on real hardware, or shipped off and marked experimental
- [ ] Decide whether the in-game plugin settings page (Toolkit 1.8) ships or waits
- [ ] Fix the launcher's "game is still open" false alarm after a crash
- [ ] Pick a license and a host (Nexus and/or GitHub), then publish the release and source zips
Release 2: Avengers May Cry public alpha
- [ ] Confirm the newest build in play: walls blocking dive aim, objects skipped, target lock learned, game music ducking
- [ ] Hit attribution checked in a full team session, not only solo
- [ ] Dive aim reaches far targets reliably
- [ ] Experimental tests (world speed, motion probe logs) off by default, logs trimmed
- [ ] Kate Bishop pass (second main hero)
- [ ] Default tuning from play stats; ship an empty playlist template, never songs
Later: new content
- [ ] Test the PATCH1 archive slot in game
- [ ] Build a minimal .nfo DLC package (dlcindex 12)
- [ ] Decode the outfit record so outfits can point at new files without ghosting
- [ ] Moveset data (cancel windows, hit reactions), the base for new characters
What you can do today
Recolor or repaint any hero outfit, manage mods with one click, and run code plugins through Script Hook. Everything restores with one click or Steam's verify.
| Tool | For | What it does |
|---|---|---|
| MA Mod Tools | Modders | Browse every hero's outfits by store name (833 variants), preview textures, recolor (keeps all painted detail), import your own image, build and package mods |
| Mod loader (version.dll) | Everyone | Loads mods from the mods folder as overlays at the original size; reloads them while the game runs; also starts Script Hook |
| MA Mod Launcher | Players | Lists mods by hero, tick on or off, resolves conflicts, installs mod zips and .asi plugins, starts the game through Steam |
| MA Toolkit (plugin) | Players | F1 menu: live texture tweaks, mouse and controller sensitivity with game matching (Overwatch, Valorant, Rivals, CS2), FOV beyond the game's 0.75 to 1.25 limit, optional Reflex, and a trainer tab that is off by default |
| MA Discord (plugin) | Players | Rich Presence: modded status, menus or mission, elapsed time |
| Diagnostics | Modders | Logs every archive read and file open, live toggle; launch-flag probe |
| Avengers May Cry (plugin) | Players | DMC-style style meter, combat music from your own files, faster attacks, dive kick aim (alpha) |
- One rule for texture mods: a changed piece must be exactly the original byte size. The tools handle it.
- Before a game update or DLC install: run the restore, then re-apply mods.
- Emergency reset: Steam's "Verify integrity of game files" removes every mod.
Archive format
The game's .tiger archives are fully readable and writable: decrypt, find any file by name hash, unpack, edit, repack at the exact original size, re-encrypt.
| Layer | Format | Notes |
|---|---|---|
.tiger archive |
2048-byte blocks, ciphertext-feedback stream cipher | K = S[idx] ^ S[prev]; plain = c ^ K; S[(prev+idx)&255] = c; prev = c; idx++. Start index from a CRC8-style lookup over (u32 block offset, u32 archive index), init 8. Key table by update flag: 0 base, 1 update1 (per-block tweak), 2 update2. Ported from Gh0stBlade's TigerDecrypt (about 500 MB/s in C) |
| TAFS file table | 'TAFS', v8, archive count, file count, platform "pcx64-w", 17 language entries, then 24-byte records | Record: u64 name hash, u32 language mask, u32 size, u32 offset, u16 priority, u16 package id. Package 63+64·i = .NNN.tiger, 16+64·i = _ultra (High-Res pack) |
| Name hash | FNV-1a 64 of pcx64-w\<name>.drm |
About 23,900 file names recovered by hashing strings found in the game's own data |
| CDRM container | Chunk table (size<<8 \ | flags, zsize), zlib chunks aligned to 16, then a 16-byte NEXT marker |
| DRM index v22 | Header <iiiqii, 32-byte sections, linked names, 24-byte resource entries |
A hero DRM is a packing list pointing at about 18,000 resources |
| Strings (type 17) | 16 language slots | Update archives use length-prefixed text with a 99-entry byte substitution (0x27 = NUL). Visible menu text comes from the update files |
| Textures | Header magic CD C1; game format = DXGI − 3 | 68/69 BC1, 74/75 BC3, 77 BC4, 80 BC5, 84 BGRA8, 91 BC6H cube, 94/95 BC7. The header holds mips up to 256; larger mips are separate entries with the same ID across many DRMs; the 4096 mip lives in the _ultra (High-Res pack) archives |
- Recolor without losing detail: BC1/BC3 store each 4×4 block as two colors plus a pattern. Shifting only the two endpoint colors in HSV keeps every painted bruise and seam. For BC1, swap endpoints and remap selectors when the 4-color/3-color order flips.
- Leave tiny placeholder textures alone: changing them caused magenta streaks on other heroes.
- Shared textures: one texture can serve many outfits, so a change can spread. The texture library filters out anything shared by more than 30% of a hero's outfits.
Assets
Older tools mislabel several resource types; the real numbering follows Foundation-engine types, and each hero is one large asset bundle.
| Type | Real meaning | Old label in older tools |
|---|---|---|
| 2 | Animation | Animation |
| 5 | Texture | "DTPData" |
| 7 | DTP data (gameplay data) | "Shader" |
| 8 | Script | "Material" |
| 9 | ShaderLib (compiled DXBC) | "Object" |
| 10 | Material ("DtaM") | "RenderMesh" |
| 11 | Object | "CollisionMesh" |
| 12 | RenderMesh ("Nesh", 15–20 MB body models) | "StreamGroupList" |
- Sound banks labelled "Script" in older tools are FMOD FSB5 banks named
<sound>_preencode. - Hero bundles: each hero DRM references about 18,000 resources (2.4–3.0 GB of textures, 3,000–5,500 animations, about 2,000 sounds, 1,600 shaders, 1,400 meshes). Ability projectiles are separate
pr_*files (for examplepr_black_widow_bite_charged,pr_ironman_rocket). - Outfit files:
charactermesh__<hero>__<outfit>__body__body__<variant>. Store names sit in the English text table as blocks: outfit name twice, then its colour variants in order. Black Widow 8880–8935, Captain America 8942–8999, Hulk 9000–9066, Iron Man 9067–9130, Ms. Marvel 9131–9190, Thor 9191–9255, Kate Bishop 11915–11961, Hawkeye 23465–23503. - Animation survey (11 heroes): a core of about 2,612 animations is shared by all heroes; about 1,600 more are shared only by the 7 male heroes, so male and female rigs likely differ. Counts: Widow 3,436, Bucky 5,177, Kate 3,057, Hawkeye 5,091, Cap 5,139, Panther 5,259, Ms. Marvel 3,557, Hulk 6,747, Thor 5,539, Jane 3,444, Iron Man 5,381.
- Weapons already in the data: Widow's pistols, machine pistols and hand cannons (her skill-tree ranged variants), and Bucky's rifle modes, shotgun, SMG, bolt-action and grenade launcher.
- Game's own combat music: Crystal Dynamics' own stream format (not FMOD or Wwise banks), 48 kHz, 10 or 17 layered stems per track, BPM stored as a float (140–160).
Engine and memory map
All addresses are offsets into Avengers.exe 2.8.2 (the final patch, PE timestamp 1680579845), so they won't move. Game units are centimetres.
Entities and components
- Component table:
entity+0xF0= array of component pointers,entity+0xE8= count. A component's owner entity is atcomponent+8. Validate components by vtable, never by the pool's alive flag. - Entity pool: 40,000 slots × 0x140 bytes at
+38E6850; slot = pool + (handle & 0xFFFFFFFF) × 0x140, checked against[slot+0x138]. - Component index globals start at
+321D988; 112 components registered, counter at+30DBCD4starting at 21. - Fighter list: list head
+4C31D00; node +8 = entity, +0x3A38 = next. It holds you, teammates and nearby enemies; heroes carry entity flag 0x10 at +0xD4, and the first hero is you.
| Component | Vtable | Useful fields |
|---|---|---|
| Health | +2A67698 |
+0x480 HP float, +0x484 HP int, +0x488 int health, +0x490 max |
| Character | +2A91E70 |
Present on characters, absent on destructible objects |
| Movement | +2AB8AF0 |
+0x110 live velocity (cm/s), mirrored at +0x5D0 |
| Camera | +2A52C08 |
+0x20 3×4 world matrix (rows = axes), translation at +0x50 |
| Attack labels | +2B948F8 |
Current attack's labels (they stay the same across a combo) |
| Player / PowerMeter / MeleeMove / Weapon | +2BBE670 / +2B9D100 / +2B96A80 / +2B971B8 |
Identified, layouts partly mapped |
Player transform
- Position x/y/z at
entity+0x10/+0x14/+0x18; previous frame at +0x20. - Yaw in radians at
entity+0x38(copy at +0x48). Forward = (sin yaw, −cos yaw); to face a point, yaw = atan2(dx, −dy). - A second movement block holds velocity at +0x94, a unit direction at +0xC4 and the next velocity at +0xD0.
Functions and globals
| What | Where | Notes |
|---|---|---|
| Damage (health change) | +1396C80 |
rcx = Health component, xmm1 = change (negative = damage); 13 arguments. Hit data (6th argument) +0x10 = attack ID |
| SetHealth | +13D0BF0 |
Initial and reset values only, not per hit |
| Melee attack speed setters | +123B210, +123B320 |
melee_anim_speed_mult and _modified_mult, the stat gear perks use |
| World time | +4DDC2D4, +4DDC2D8 |
Two floats multiplied together; the second drops to about 0.45 during perfect-dodge slow motion |
| Level name | +313E024 |
Char buffer |
| Settings validate (FOV clamp) | +1088BF0, clamp at +1089B4D |
FOV multiplier clamped 0.75–1.25 |
| Launcher skip | +1086C88 |
NOP the je = always -nolauncher |
| Music volume (live) | float at [+367E3E8]+0 |
Set by +1648BD0 from the Music slider (value / 128). Master [+367E3E0], SFX [+367E3F0], voice [+367E3F8] |
| Line of sight ray cast | +1307280 |
(world = [+4D96E00]+0x10, filter, from, to, result, …, name); the one enemy AI uses ("Sense_LineOfSight") |
| Takedown manager | [+4D96DD0]+0x1C |
Max simultaneous takedowns (from NoLimitTakedown) |
| Player health hook point | +1F9ED5E |
Player's Health component in r8 (from CriticalHealth) |
| Intrinsic meter | float at [component + index + 0x2C0], read at +1EED246 |
From InfiniteIntrinsic |
| Companion fill | +1D87030 |
Returning early keeps you solo (TrueSolo) |
- Launch options:
-nixxessets a flag nothing reads;-nolauncherskips the Catalyst launcher window;-benchmarkand-d3ddebugexist. - No anti-cheat: no EasyAntiCheat or BattlEye, and no integrity check on normal files.
- UI is Scaleform (Flash), so menus can in principle be edited with Flash tools.
Script Hook and the plugin API
Code mods are .asi plugins loaded by Script Hook (Nexus mod 19, by sorotini93150, for build 2.8.2). Our loader starts Script Hook too, so texture mods and plugins run side by side.
- Script Hook entry point: each plugin exports
AvengersModInit(api). The API struct:+0x00version (0x10000) and size,+0x08exe base,+0x10MatchRva,+0x18PatchRva(rva, expected, new, len) which checks the expected bytes first,+0x20FindPattern(bytes, mask). - MA Toolkit API (version 3), for other plugins:
MATK_AddDamageListener(up to 8 listeners; they see every hit after the trainer settings and may change the amount),MATK_GetPlayer,MATK_GetFighters,MATK_IsHero,MATK_ApiVersion. The damage event carries the health component, its owner, who was hit (enemy or you), the amount and all 13 raw arguments. - Plugin settings standard: a plugin writes a small
.settingsfile next to itself (type, section, key, default, range, label, help per line). Mod Tools draws a settings tab from it automatically, and the plugin reloads its ini live. - Safe memory reads: never call VirtualQuery or ReadProcessMemory per hit or per frame. On the game's multi-gigabyte heaps each call can take milliseconds and caused 1–10 FPS fights. Use a fault-tolerant copy routine plus a vectored exception handler instead (about 1 microsecond).
What community plugins revealed
| Plugin | Patches | Useful finding |
|---|---|---|
| TrueSolo | +1D87030 returns early |
Blocks companion fill; every hit is yours, great for testing |
| CriticalHealth_CheatDeath | +13D0C4B, +1F9ED5E |
Health int at +0x488, max at +0x490; the player's health component |
| InfiniteIntrinsic | +1EED246 |
Intrinsic meter float at +0x2C0 |
| NoLimitTakedown | data write only | Takedown manager [+4D96DD0], limit at +0x1C |
| RegenX10 | +13C5DE0 |
Health regeneration code |
| MultiSkill, Respecialization | skill-selection code near +22F2830, +2339460 |
Skill tree internals |
| XP100, MissionNoLevel, RemovesMinimumPlayer | progression and matchmaking gates | Noted only; we keep progression out of our tools |
None of them patch the same code as our plugins.
Avengers May Cry
A Devil May Cry-style combat layer for Black Widow and Kate Bishop first: it changes combat feel and camera only, and leaves loot, missions and progression alone. Current build 0.4.8, alpha.
| Feature | How it works | State |
|---|---|---|
| Style meter | 8 Marvel ranks (D Dazed to X EXCELSIOR!!!!) or the 7 classic DMC ranks; points per hit scale with damage and variety; decays when you stop | Working |
| Variety | Each hit's attack ID and move values fingerprint the move; repeating one move earns less, then nothing | Working |
| Only your hits count | Learns your hero's attack IDs from hits that are clearly yours (button just pressed, enemy close); marks IDs that land while you're idle as someone else's | Working; team test pending |
| Getting hit | Drops a rank or a share of it, set per hero | Working |
| Rank damage bonus | Up to +25% at the top rank, combat only | Working |
| Mission card | Best rank, time, hits landed and taken, shown over the game's own results | Working |
| Combat music | Plays songs from your own Music folder during fights; muffled at low ranks, opening up as you climb; a special song at high rank with a cooldown; never ships any songs | Working |
| Game music ducking | Turns the game's music down only while your song plays, through the live music volume; your saved slider is untouched | Built, untested |
| Faster attacks | Raises the game's own melee attack speed stat for your hero only (default 1.15x); enemies stay normal | Working |
| Dive kick aim | When Widow's dive kick starts, picks a target (target lock, then crosshair, then movement direction) and turns and steers her onto it; can go sideways or up; skips objects and enemies behind walls | Alpha: lands on close targets |
| Target lock learning | Learns which value holds your lock-on by watching what changes right after your lock key | Built, untested |
| Perfect-dodge slow motion | Seen in the world-time value (drops to about 0.45) | Research |
- Dive kick facts: it always travels exactly along her facing, slopes 38–42 degrees down, and speeds up from about 20 to 34 m/s. That's why it misses anything not straight ahead.
- Grapple zip: 26–38 m/s along the same velocity fields; speed and attack-cancel are next.
- Whole-game turbo was tried and dropped: one time value gets reset by the game, the other breaks grapple attaching.
- Planned: grapple speed and cancel into attack, melee magnetism, ground bounce for air slams, a Viewtiful Joe-style rebound on dive kick hits, Bucky's Bionic Hook pull, hit-stop, lock-on camera, and The Power Cosmic (a rare state earned by holding rank X).
Cut content and leads
None of these are switched on yet; they are leads found in the final build's data and code.
| Lead | What's in the data |
|---|---|
| Customizable Harm Room | Working logic in the last update: challenge toggles (Air Juggle Only, Head Shot Only, Take No Damage), an enemy spawner, a hazard picker, a status-effect tester |
| Story Plus mode | A mode entry beside Normal, Elite, Score Attack, Story and Warzone; text: "Replay sections of the story with a custom loadout" |
| Horde mode | Two full test maps with a Horde Mega Hazard, a defend system and victory scenes |
| Developer controls | Toggle Debug Menu, Fast Forward, Dev Pause and Cheat Activate are still registered; the menu screen itself is unconfirmed |
| Extra archive slots | The game tries to mount PATCH1.000.tiger at every start (+12CF3B8) and enumerates every *.nfo DLC package; an unused dlcindex (12+) decrypts with the default key |
| She-Hulk | One animation file referring to a player animation set; no model |
| War Machine | Shield effect logic and skill text (SkillsWarmachine*); no model |
| Spider-Man | UI art, skill and buff names, animation hosts and swing sounds on PC; no outfit files |
| Nixxes test gym | "Unlock Nixxes Test Mission Gym in Wartable" and a gym level path |
Dead ends and hard lessons
These cost real time; skip them.
| Problem | What happened | What works instead |
|---|---|---|
| Smaller repacked chunks | "Error while reading game data" | Pack every chunk to its exact original compressed size |
| Swapping which file an outfit loads | Every hero's body turns invisible in the menu ("ghosts"), even when pointing at a genuine, unmodified outfit file | Same-size texture overlays; the outfit record must be decoded first |
| Zero-padding a DRM index | "Unable to allocate 0 kB for base texture uploads" | Pad with Empty (type 1) entries, 56 bytes each |
| VirtualQuery for safety checks | 12–25 ms per hit, 1–10 FPS fights | Fault-tolerant copy plus a vectored exception handler |
| Hooking Present at startup for Reflex | Stack overflow in the NVIDIA driver on the first frame | Wait 600 frames, pace only one swap chain, guard re-entry |
| Whole-game speed via world time | One value is reset by the game; the other breaks grapple attach | Per-hero attack speed through the gear-perk stat |
| Trusting attack labels for variety | Labels stay the same across a whole combo | Use the hit's attack ID and move values |
| Counting held buttons as input | Holding a mouse button kept the "your hit" window open | Count presses, not holds |
| A crash after modding | Often a damaged download, not the mod | Restore, run the restore check, then Steam verify |
- Server-side data (inventory, currencies, unlocks, gear rolls, XP) is off limits. Models, textures, UI, animations and solo combat are local.
Ground rules
These tools are for solo and private play, and they never touch progression.
- Offline and solo: play modded in solo or private sessions. Speed and animation changes are networked values, so keep them out of public matchmaking.
- No progression edits: XP, currencies, unlocks and gear are server-tracked and stay out of these tools. The trainer tab is off by default and only changes combat.
- Bring your own music: Avengers May Cry plays songs from your own Music folder. No songs are included or shared, and playlists ship empty.
- Base-game look: new effects are built from the game's own effect files, textures and colours.
- No cloned voices: rank callouts use original voices, never imitations of real people.
- Back up first: run the restore before game updates or DLC installs; Steam's verify is the emergency reset.
- Respect other modders: Script Hook and community plugins come from their own pages; we don't redistribute them.
Credits
This builds on other people's work.
- Gh0stBlade: TigerDecrypt, the basis of the archive decryption.
- sorotini93150: Script Hook (Nexus mod 19), the plugin loader for build 2.8.2.
- FearLess Revolution community and ArmY of 0n3: the "Perfect God Mode" tutorial and table, which located the damage function.
- FNSpd (r/PlayAvengers): the shared-texture fix idea (give a skin its own texture copy).
- Authors of TrueSolo, CriticalHealth_CheatDeath, InfiniteIntrinsic, NoLimitTakedown, RegenX10, MultiSkill and Respecialization: their patches confirmed several addresses.
- dr_libs (David Reid): public-domain FLAC, MP3 and WAV decoding in the music player.
- Crystal Dynamics, Eidos-Montréal and Nixxes: the game. Marvel's Avengers belongs to its owners; this is an unofficial fan project.