Random Memory Addresses - MoonlitDeath/Link-Evolution-Editing-Guide GitHub Wiki

Note This page is gonna be a complete mess and is only useful for people that want to poke around and look in memory or hex edit the exe to mess around or try different things through editing and things like that. You can get to these memory addresses from Cheat Engine or a debugging program like IDA or x64 (which is probably better to edit things, but far more complicated to use). While I found some of these, credit also goes to Pixeltris and users on the Fearless Revolution site that made cheat tables that I took some of the addresses from. These are for Link Evolution, but I will also post a list at the bottom of the addresses I have found from the first game as well. I haven’t tested a lot of these yet, so if you see any errors or find out anything new, feel free to let me know and I will update this page with new info or fix any errors.

Exe Values-
B8 05 00 00 00 BA 40
Should determine the starting cards that are drawn, with the 05 value being how many cards you start with.

FF 44 08 58 8B 54 08 4C
This is something for swords of revealing light? Changing the first 4 bytes to 90 90 90 90 supposedly removes the 3 turn limit (not tested)

LE memory addresses-
ydcDecksAddress 0×14275AC50;
chardataBinAddress 0×142913470;
dueldataBinAddress 0×142919DA0;
deckdataBinAddress 0×1428FC080;
cardPropsBinAddress 0×142847E50;
packDefDataBinAddress 0×1429241C0;
cardDataListStartAddress 0×14275AB10;
cardGenreBinAddress cardDataListStartAddress + 128;
duelLoadingScreenDelayAddress 0×140A73858;
coreDuelDataAddress 0×14278EE68;
duelPlayerInfoAddress 0×143497C40;
playerTurnAddress (0×14349B3B4 + 4);
turnCountAddress 0×14349B3C0;
modeMatchDuelAddress 0×140C8D35C;
modeTagDuelAddress 0×140C8D35D;
modeTestOptionAddress 0×140C8D360;
modeNetworkedGameAddress 0×140C8D1E6;
modeNetworkedGameIsCreatorAddress 0×140C8D1E7;
modeNetworkedGameRankedAddress 0×140C8D1E8;
modeInstantStartDuelAddress 0×140C8D1E9;
modePlayerControllerAddress 0×140C8D218;
modeAIModeAddress 0×140C8D39C; (changing this byte to 01 should make you play as the red duelist/give the opponent your deck, a value of 02 is AI vs AI)
modeStartingLifePointsAddress 0×140C8D370;
modeStartingPlayerAddress 0×140C8D384;
modeTurnTimeLimitEnabledAddress 0×140C8D364;
modeTurnTimeLimitAddress 0×140C8D368;
modeTutorialDuelAddress 0×140C8D1EA;
modeTutorialDuelIndexAddress 0×140C8D1EC;
modeCampaignDuelAddress 0×140C8D1D8;
modeCampaignDuelIndexAddress 0×140C8D1E0;
modeCampaignDuelDeckIndexAddress 0×140C8D1F4;
modeBattlePackDuelAddress 0×140C8D1D0;
modeBattlePackIndexAddress 0×140C8D1D4;
modeChallengeDuelAddress 0×140C8D1E5;
modeMasterRules 0×140C8D1C9; (seems to have a value of 01 01, changing one or both to 00 should set the rules back to the 2019 rules?)
handSizeLimitAddress 0×14005D1A2; (Is 6 by default, can change this to other numbers to alter the max limit of cards in a hand)
popcornCoreDataAddress 0×1429275D8;
duelArenaAddress 0×140C8D1F0;
playerAvatarIdAddress 0×140C8D1F8;
playerDeckIdAddress 0×140C8D208;
saveDataAddress1 0×142924010;
saveDataAddress2 0×142924148;
defaultStructureDeckCardsAddress 0×140A6C818;
cardShopAddress 0×1433280D0;
queryPerformanceCounterAddress 0×1409F9028;
getTickCount64Address 0×1409F9078;
getTickCountAddress 0;
timeGetTimeAddress 0;
windowFocusPauseAddress 0×14083C9F8;

popcornCoreDataAddress 0×1429275D8
popcornCoreOffset 496
screenStateFunctionAddress 0×1408087A0
coreDuelDataAddress 0×14278EE68
loadDuelFunctionAddress 0×140773220
setCardCollectionFunctionAddress 0×14088C490
deckEditDeckListSelectFunctionAddress 0×140868860
deckEditDeckListUpdateFunctionAddress 0×140896950
deckEditSelectedDeckUpdateFunctionAddress 0×140839B30
deckEditBaseOffset 584
deckEditUserDecksOffset 6208 + 392
deckEditUserDecksListOffset 232
deckEditUpdateUIFunctionAddress 0×14083A6C0
deckEditTrunkPanelOffset 704
deckEditRightPanelOffset 656
deckEditTrunkOffset 9984 + 720
cardShopAddress 0×1433280D0
cardShopSetStateFunctionAddress 0×14085D790
cardShopCardListOffset 0
cardShopRefreshDuelPointsFunctionAddress 0×1408C1070
cardShopRefreshDuelPointsOffset 656
resizeStdVectorFunctionAddress 0×140754C00
playAudioFunctionAddress 0×14086C280
stopAudioFunctionAddress 0×14087A3C0
audioSnippetsAddress 0×143329748
loadBattlePackYdcFunctionAddress 0×1407BD130
loadBattlePackYdc_original { 0×48, 0×8B, 0xC4, 0×57, 0×48, 0×81, 0xEC, 0×60, 0×01, 0×00, 0×00, 0×48, 0xC7, 0×44 }
duelInitDeckHandLPFunctionAddress 0×14005FD90
duelInitDeckHandLP_original { 0×40, 0×53, 0×48, 0×83, 0xEC, 0×20, 0×8B, 0×0D, 0×48, 0xB6, 0×43, 0×03, 0xB8, 0×05 }
speedDuelAddress 0×14349B3E4 (setting this byte to 2 should trigger the duel to be in Rush Duel format)
duelPlayerDataAddress 0×143497C40 *(this is a chunk of data that is used to determine a bunch of things like cards on the field, etc, will need to check more to see what else is there)

duelPlayerDataSize 3476
duelPlayerDataNumCardsInHandOffset 12
actionHandlerFunctionAddress 0×14000F400
actionHandler_original { 0×48, 0×89, 0×5C, 0×24, 0×10, 0×48, 0×89, 0×6C, 0×24, 0×18, 0×48, 0×89, 0×74, 0×24 }
animationHandlerFunctionAddress 0×1407C1450
animationHandler_original { 0×40, 0×53, 0×55, 0×56, 0×57, 0×41, 0×56, 0×48, 0×83, 0xEC, 0×60, 0×48, 0×8B, 0×05 }
duelThreadCriticalSectionAddress 0×1427CFDC0
currentActionAddress 0×14332FA40
actionQueueAddress 0×14332FA40
hasActiveActionAddress 0×14349B4D0
numQueuedActionsAddress 0×143330250
currentActionState1Address 0×143330254
currentActionState2Address 0×143330258
drawCardFunctionAddress 0×140126750

Card values when on the field-
Monster1 = 0,
Monster2 = 1,
Monster3 = 2,
Monster4 = 3,
Monster5 = 4,

Spell1 = 5,
Spell2 = 6,
Spell3 = 7,
Spell4 = 8,
Spell5 = 9,

LeftPendulum = 10,
RightPendulum = 11,

FieldSpell = 12,

Hand = 13,
ExtraDeck = 14,
Deck = 15,
Graveyard = 16,
Banished = 17

Sfx values?-
system_deck = 0,
system_result = 1,
duel_normal_2_t = 2,
unused = 3,
duel_1_r = 4,
duel_2_y = 5,
duel_2_r = 6,
mus_vs01 = 7,
mus_tutorial = 8,
mus_title = 9,
mus_duel_03 = 10,
mus_duel_01 = 11,
cursor = 12,
decide = 13,
cancel = 14,
unable = 15,
menu = 16,
page = 17,
info = 18,
tab = 19,
card_araware = 20,
card_crash = 21,
card_oki = 22,
disk_card_in = 23,
field_card_up = 24,
field_mon_deru = 25,
turnex = 26,
phlogo = 27,
card_move_1 = 28,
card_move_3 = 29,
card_move_4 = 30,
arrow = 31,
chain = 32,
num_red = 33,
num_green = 34,
fusion = 35,
coin = 36,
field_change = 37,
duel_end = 38,
card_disappear = 39,
spark = 40,
dice_1 = 41,
dice_2 = 42,
dice_3 = 43,
dice_4 = 44,
arcana_1 = 45,
arcana_2 = 46,
d_draw = 47,
rq_fx1 = 48,
rq_fx2 = 4

Screen state values (this doesn’t seem to have the same set addresses every time but you can find the values by changing screens and searching for ID’s)
LogoBlank = 1,
DeveloperLogo = 2,
LogoRating = 3,
PublisherLogo = 4,
GameLogo = 5,
SignIn = 6,
CommonBg = 7,
MainMenu = 8,
DuelLoadingScreen = 9,
GameBegin = 10,
SeriesSelection = 10,
Duel = 11,//ExGameDuel
HelpAndOptions = 12,
Settings = 13,
VideoSettings = 14,
Credits = 15,
Controls = 16,
HowToPlay = 17,
Statistics = 18,
PlayersList = 19,
Pause = 20,
DuelistChallenges = 21,
CampaignDialog = 22,
DeckSelection = 23,
Tutorial = 24,
DeckEdit = 25,
MatchDuelEditDeck = 26,
MatchDuelRoundResults = 27,
DuelResult = 28,
CardShop = 29,
BattlePack = 30,
BattlePackDraft = 31,
BattlePackEdit = 32,
MultiplayerPlayerMatch = 33,
MultiplayerCreateMatch = 34,
MultiplayerLobby = 35,
MultiplayerLobby2 = 36,
LiveLoading = 37,
MultiplayerLeaderboars = 38,
MultiplayerJoin = 39,
SafetyZone = 40,
SeriesSelection = 41,
CampaignDuelSelection = 42,
ScoreReview = 43

Untested random info-
change-
db 41 C7 81 94 0E 00 00 03 00 00 00 C3 41 C7 81 94 0E 00 00 02 00 00 00 C3 41 C7 81 94 0E 00 00 01 00 00 00
to
db 41 C7 81 94 0E 00 00 01 00 00 00 C3 41 C7 81 94 0E 00 00 01 00 00 00 C3 41 C7 81 94 0E 00 00 01 00 00 00

Is something with the rock paper scissors to always win?

Original Legacy addresses (not checked)-
popcornCoreDataAddress 0×140EA2148
popcornCoreOffset 472
screenStateFunctionAddress 0×14062D140
coreDuelDataAddress 0×1410CF430
loadDuelFunctionAddress 0×140894220
setCardCollectionFunctionAddress 0×1406576B0
deckEditDeckListSelectFunctionAddress 0×1406BBD10
deckEditDeckListUpdateFunctionAddress 0×14065EB10
deckEditSelectedDeckUpdateFunctionAddress 0×14064DA30
deckEditBaseOffset 608
deckEditUserDecksOffset 5424 + 376
deckEditUserDecksListOffset 232
deckEditUpdateUIFunctionAddress 0×14064E6D0
deckEditTrunkPanelOffset 680
deckEditRightPanelOffset 632
deckEditTrunkOffset 9040 + 728
cardShopAddress (Int64)0×140EA21A0
cardShopSetStateFunctionAddress 0×140653910
cardShopCardListOffset 2144
cardShopRefreshDuelPointsFunctionAddress 0×140685C20
cardShopRefreshDuelPointsOffset 632
resizeStdVectorFunctionAddress 0×1405DE010
playAudioFunctionAddress 0×1405EEF70
stopAudioFunctionAddress 0×1408F94D0
audioSnippetsAddress 0×140E8B140
loadBattlePackYdcFunctionAddress 0×14088E9E0
loadBattlePackYdc_original { 0×48, 0×8b, 0xc4, 0×57, 0×48, 0×81, 0xec, 0×60, 0×01, 0×00, 0×00, 0×48, 0xc7, 0×44 }
duelInitDeckHandLPFunctionAddress 0×140080A80
duelInitDeckHandLP_original { 0×40, 0×53, 0×48, 0×83, 0xec, 0×20, 0×83, 0×3d, 0×7f, 0×00, 0×10, 0×01, 0×00, 0xb8 }
speedDuelAddress 0×141180B0C
duelPlayerDataAddress 0×14117D580
duelPlayerDataSize 3472
duelPlayerDataNumCardsInHandOffset 12
actionHandlerFunctionAddress 0×1401012D0
actionHandler_original { 0×40, 0×53, 0×48, 0×83, 0xec, 0×30, 0×0f, 0xb7, 0×0d, 0xe3, 0×6c, 0xfd, 0×00, 0×41 }
animationHandlerFunctionAddress 0×140881DB0
animationHandler_original { 0×48, 0×89, 0×5c, 0×24, 0×08, 0×48, 0×89, 0×6c, 0×24, 0×10, 0×48, 0×89, 0×74, 0×24 }
duelThreadCriticalSectionAddress 0×1410D4C70
currentActionAddress 0×1410D7FC0
actionQueueAddress 0×1410D7FC8
hasActiveActionAddress 0×141180BF8
numQueuedActionsAddress 0×1410D87C8
currentActionState1Address 0×1410D87CC
currentActionState2Address 0×1410D87D0
drawCardFunctionAddress 0×14049BA30

⚠️ **GitHub.com Fallback** ⚠️