Ah OK that potentially makes life easier- on boot it assigns a different address means you have a pointer code and for now I will treat that as a sorted problem for the most part. Your pointer code itself might technically be off as well- it probably has a whole bunch of variables and if it assigns but again I will assume it is good.
"Slightly off" from said value but still close the pointer could mean a few things, much of this is probably easier if you understand C programming up to pointers and maybe a bit of assembly too (
youtube lecture series that will eventually catch you up here). You can muddle through it without such knowledge though.
Those few things are
1) Pointer arithmetic
2) Function calls
3) Arrays
1) Pointer arithmetic then.
Short version (and very crude) is pointers well point to things but in C when you add to the pointer it does not necessarily treat it quite as a number as you might expect but will jump so many pointer values ahead. Kind of related is 3) which can do much the same.
2) Function calls- in some ways it might be a hallmark of a bad programmer that coded the game originally if they have called a full level function from within another function and created a new bit of data from the originals you were trying to handle. "Slightly off" means this is less likely to have happened. Alternatively it might be that the storage value the pointer looks at on boot is harder to work with and it was expanded for the purposes of running the game but let us not go there right now- the basic example would be if I have 4 weapons and each can hold 15 ammo I can say FFFF with each number being the ammo for the gun which is great for storage but a nightmare for logic (sub 1 from this value becomes do a bunch of maths), if it is something like this it could be troublesome but I must stay away from theory coding right now as it is not really fair to you to have to read my waffle.
Fortunately the DS cheat engines have things to help account for this (it is part of the reason for "+offset" in the technical definitions of the codes and in the case of AR codes the Incrementive Write having stuff also handling the offset values as they work).
You now get to test what happens. You need to know if it is always the same amount away from the pointer (maybe give or take differences in loadout if you say have a pistol on one and a pistol and a machine gun on another but only a machine gun on another) or if it is near but random. A nice list of boot pointer location and then resulting ammo location and break it down by mission if you want will help figure this out.