Here's some experimental data that was obtained via memory search (by me and Omnigamer).
In the following, when I refer to memory addresses, the indicator ''0x'' for a number corresponding to a memory address was left out for brevity, and most of the memory addresses are listed in order from small to large. Memory addresses are generally refered to them being represented as 1 byte and unsigned unless specified otherwise. I hope from the context it should be clear which numbers are refered to as decimal numbers (any number other than memory addresses) and which as memory addresses (or otherwise hex values which should be indicated with the pre-fix ''0x''). In particular, values of memory addresses are refered to as decimal numbers. I tried to (for the most part) order the addresses by their size and have an empty line between each 2 in the text neighboured statements about memory addresses whenever there exists at least 1 address between the 2 corresponding addresses in these statements.
Any claim of the sorts ''x is (exactly) or behaves as y'' is meant as observation based on experimental sample data.
-----
Memory addresses of the form 7E.... :
007A seems to be a looping countdown for In-Game-Time frames (from 59 to 0).
007B seems to be a looping countdown for In-Game-Time seconds (from 153 to 0).
00AA and 00AB together determine the (complete) RNG value, according to Omnigamer's results during his research from longer ago on the SDA forum (
https://forum.speeddemosarchive.com/post/hagane_snes.html ).
020C, 021B, and 021C each seem to count the current number of ''existing explosion sprites + existing Hagane pickups''.
0508 seems to count the number of stages through which one has progressed and assigns 1 number to every stage:
0 - stage 1-1,
1 - stage 1-2 and 1-3,
2 - stage 1-4,
3 - Musha Mukuro,
4 - stage 2-1,
5 - stage 2-2,
6 - stage 2-3,
7 - En-Mikoshi,
8 - stage 3-1,
9 - stage 3-2,
10 - stage 3-3,
11 - stage 3-4 and Jasei-Jyu,
12 - stage 4-1,
13 - stage 4-2,
14 - stage 4-3,
15 - Jyuso-Dama,
16 - stage 5-1,
17 - stage 5-2,
18 - stage 5-3 and stage 5-4 and 5-5,
19 - Shura-Oh,
20 - Amano-Ikazuchi.
050F seems to determine the currently chosen weapon as follows:
0 - sword,
1 - kunai,
2 - grenade,
3 - grapple hook.
Hagane will attack with if one does an attack (that is normally shown in the HUD). (AB24 to AB2F aswell as AB64 to AB6F seem to be related to the currently chosen weapon in the HUD, too.)
0511 seems to be the current kunai ammunition count.
0512 seems to be the current grenade ammunition count.
0513 seems to be the maximum of health points Hagane currently can carry.
0514 seems to be Hagane's current number of health points.
0515 seems to be the number of Hagane's lifes currently.
0516 seems to be the current ammunition count for ''fullscreen attacks''.
0520 and 051D (and 051A, but only at the end of some stages) seems to indicate the score's last 3 digits (the final digit stays 0, and every multiple of 16 in the address value contributes 100 points, and the remainder contributes 10 points, e.g. 22 = 16+6 would correspond to 160 points).
0521 and 051E (and 051B, but only at the end of some stages) seems to indicate the score's central 2 digits (every multiple of 16 in the address value contributes 10000 points, and the remainder contributes 1000 points, e.g. 22 = 16+6 would correspond to 16000 points).
0522 and 051F (and 051C, but only at the end of some stages) seems to indicate the score's first 2 digits (every multiple of 16 in the address value contributes 1000000 points, and the remainder contributes 100000 points, e.g. 22 = 16+6 would correspond to 1600000 points).
0535 to 053B have fixed values ordered from 1 to 6 (for an unknown purpose).
053C to 0542 have fixed values ordered from 2 to 12 (for an unknown purpose).
0768 seems to be the current screen x-position in pixels.
076A seems to be the current screen y-position in pixels.
- - -
Hagane pose change related addresses:
0901 seems to be an indicator for Hagane being vulnerable, and normally has the value 128 except during Hagane's knockback animation or sometimes during backwards tumbles it has the value 0.
0903 seems to be Hagane's invulnerability timer which is normally 0 but jumps to 96 and then decrements by 1 every (gameplay-)frame as countdown.
0905 seems to be a game mode indicator as follows (0 - during loading times, 8 - when a stage is active).
0904 seems to indicates if Hagane is moving against a wall as follows (0 - otherwise, 1 - Hagane is moving against a wall (outside of a spinjump re-bounce)).
0906 seems to indicate Hagane's sprite state as follows:
0 - standing on ground,
1 - falling during normal jump,
2 - rising during normal jump,
3 - spinjump,
4 - spinjump re-bounce,
14 - crouching,
16 - 1st forwards tumble,
17 2nd forwards tumble,
18 3rd forwards tumble,
19 backwards tumble,
20 - ground-slide,
23 - downkick,
24 - 1st phase ground attack,
25 and 30 - 1st phase air attack,
26 and 30 - 2nd phase ground attack,
27 and 30 - 2nd phase air attack,
28 - 3rd phase ground attack,
29 and 30 and 12 - 3rd phase air attack,
32 - knockback animation,
33 - death animation,
40 - initial automatic 1-1 walking animation.
0908 seems to be Hagane's screen-dependent x-position in subpixels.
0909 seems to be Hagane's current screen-dependent x-position corresponding to the number of tiles.
090A seems to be Hagane's screen-dependent y-position in subpixels.
090B seems to be Hagane's screen-dependent y-position in the number of tiles.
090C seems to be Hagane's current x-movement speed in subpixels and seems to behave as follows:
32 - moving rightwards mid-jump,
64 - Hagane walks to the right,
96 - rightwards ground-slide/spinjump,
160 - leftwards ground-slide/spinjump,
192 - Hagane walks to the left,
224 - moving leftwards mid-jump,
changing values - during spinjump-wall-bonk right-/left-wards.
090D seems to be an indicator for ''trying to make Hagane move leftwards'', by holding left or ground-sliding leftwards with Hagane (during gameplay frames, independent on if it makes Hagane move left) unless while Hagane is doing a downkick or tumbling rightwards or in the spinjump-rebounce animation or ground-sliding rightwards or if one is holding left+right among maybe further cases as follows (0 - otherwise, 255 - Hagane trying to move to the left).
090E seems to be Hagane's current y-movement speed in subpixels. Or it might (in different stages) be an absolute Hagane y-position in subpixels.
090F seems to indicate if Hagane is rising during a jump and seems to behave as follows (0 - otherwise, 255 - Hagane rising).
0910 seems to be another screen-dependent Hagane x-position in pixels.
0912 seems to be another screen-dependent Hagane y-position in pixels.
0918 seems to indicate Hagane's current pose and seems to behave as follows:
0 - spinjump,
1 - crouching/rising during jump/spinjump,
2 - downwards kick/crouched sword slash/forwards tumble,
3 - standing/forwards tumble,
4 - ground-sliding/rising jump kunai/rising jump grapple hook/rising jump grenade,
5 - falling during jump/upwards grapple hook/sword slash/rising during jump/backwards tumble/rising jump sword slash,
6 - standing sword slash/backwards tumble/rising jump sword slash,
7 - backwards tumble,
8 - walking/throwing grenade standing/throwing kunai standing/sideways grapple hook standing/forwards tumble/backwards tumble.
091C seems to behave accordingly to Hagane's actions as follows:
0 - during crouch/jump,
2 - Hagane is standing,
frame-wise incrementing up to 55 and looping back to 0 - while Hagane is walking,
incrementing by 1 and 2 - during spinjumps/downkicks until they end.
091E seems to be some ''attack timer'' that behaves as follows (frame-wise incrementing from 1 to 7 - during sword slash, frame-wise incrementing from 1 to 11 - when a grenade/kunai is thrown, frame-wise incrementing from 1 to 27 - during the duration of any grapple hook shot (if it doesn't hit anything); and resets back to 0 afterwards in all cases).
0920 and 0921 together seem to count the number of frames Hagane is standing on ground (idling) (with 0921's value incrementing each time the value of 0920 loops). These counters reset to 0 when Hagane dies. In 1-1, 0920 also keeps incrementing during the initial automatic walking animation. It appears that these addresses are used for the cycling breathing animation of Hagane which stops if one fixes the values.
0922 seems to behave accordingly to Hagane's actions as follows:
slow loops from 8 to 21 - while Hagane is walking,
incrementing from 44 to 45 - during standing- or midair-horizontal-grapple-hook,
incrementing from 48 to 49 - during crouched grapple hook,
incrementing from 60 to 61 - during standing- or midair-upwards-grapple-hook,
incrementing from 64 to 67 - during standing- or midair-kunai-throw,
incrementing from 72 to 75 - during crouched kunai-throw,
96 - during ground-slide,
oscillating between 100 and 101 - during downkick,
incrementing from 128 to 131 - during standing- and midair-sword-slash,
incrementing from 136 to 139 - during crouched sword slash,
160 - during crouch,
164 - while rising during jump,
166 - while falling during jump,
slow loops from 168 to 171 - during idling standing phase.
0924 seems to behave accordingly to Hagane's actions as follows:
slow loops from 0 to 6 - while Hagane is walking,
7 - during crouch,
104 - during ground-slide,
oscillating between 108 and 109 - during downkick,
165 - during midair kunai throw/sword slash/grapple hook/grenade,
165 - while rising during jump,
167 - while falling during jump,
slow loops from 172 to 175 - during idling standing phase,
for short time adding 1 and 2 to the idling standing pose values - during kunai throw/sword slash/grapple hook/grenade.
0926 seems to be the direction Hagane currently faces as follows (0 - right, 1 - left).
092B seems to behave as follows (oscillating between 32 and 34 - as long as Hagane is blinking from getting hit (so it might be related to drawing the Hagane sprite entirely white), 34 - otherwise).
All addresses from 092C to 0931 have the value 0 as long as Hagane is in the knockback animation (and have mostly other fixed values otherwise).
092C seems to behave as follows:
240 - during ground-slides,
246 - during backwards tumbles,
248 - during forward tumbles and spinjumps,
252 - otherwise.
092E and 092F have the value 0 when Hagane crouches (and have mostly other fixed values otherwise).
0931 seems to indicate some Hagane poses as follows:
0 - any tumble phase attack/knockback animation,
7 - ground-sliding,
15 - spinjump/re-bounce,
20 - forwards tumbles/backwards tumble,
23 - standing/walking/crouching/jumping/falling,
24 - downkick.
0932 seems to indicate Hagane's current attack type as follows:
0 - no attack,
1 - sword slash,
2 - kunai,
3 - grenade,
4 - horizontal grapple hook,
5 - vertical grapple hook.
098C seems to be another Hagane pose indicator.
- - -
Hagane projectiles related addresses:
--
|0A10 seems to be Hagane's 1st kunai slot's screen-dependent x-position in pixels.
|0A11 seems to indicate if Hagane's next projectile is the 1st kunai slot (0 - no, 255 and 1 - yes), and seems to indicate if the projectile is still on screen or offscreen to the left or right.
|0A12 seems to be Hagane's 1st kunai slot's screen-dependent y-position in pixels.
|
|0A14 seems to determine the sprite look of Hagane's 1st kunai.
|
|0A18 seems to count the number of frames for which the 1st kunai exists (and does full loops), and seems to correspond to and drive its dust animation.
|0A19 seems to increment (by 1) every time 0A18 finishes a loop.
--
--
|0A30 seems to be Hagane's 2nd kunai slot's screen-dependent x-position in pixels.
|0A31 seems to indicate if Hagane's next projectile is the 2nd kunai slot (0 - no, 255 and 1 - yes), and seems to indicate if the projectile is still on screen or offscreen to the left or right.
|0A32 seems to be Hagane's 2nd kunai slot's screen-dependent y-position in pixels.
|
|0A34 seems to determine the sprite look of Hagane's 2nd kunai.
|
|0A38 seems to count the number of frames for which the 2nd kunai exists (and does full loops), and seems to correspond to and drive its dust animation.
|0A39 seems to increment (by 1) every time 0A18 finishes a loop.
--
The following 5 collections of memory addresses seem to analogously copy/imitate the above Hagane projectile stats for X=5, X=7, X=9; X=B, and X=D.
--
|0AX0
|0AX1
|0AX2
|
|0AX4
|
|0AX8
|0AX9
--
- - -
Sound related addresses:
0A58, 0A78, 0A98, 0AB8 are similar and seem to indicate attack sounds or are some ground collision noise timers.
0A5C, 0A7C, 0A9C, 0ABC are similar and seem to indicate attack sounds.
0A5F, 0A7F, 0A9F, 0ABF are similar and seem to indicate attack sounds.
- - -
Enemy related addresses:
The data for each enemy seems to range from 1X00 to 1X7F, or 1X80 to 1XFF, with X from 0 to F, for 32 enemy slots in total.
--
|1X03 / 1X83 seems to be an enemy's invulnerability timer.
|1X04 / 1X84 seems to indicate how an enemy moves and its appearance.
|1X06 / 1X86 seems to be an enemy's AI state.
|
|1X08 / 1X88 seems to be an enemy's screen-dependent x-position in subpixels.
|1X09 / 1X89 seems to be an enemy's (or its projectile's) screen-dependent x-position in tiles.
|1X0A / 1X8A seems to be an enemy's screen-dependent y-position in subpixels.
|1X0B / 1X8B seems to be an enemy's screen-dependent y-position in tiles.
|
|1X10 / 1X90 seems to be an enemy's (or its projectile's) far left side's (screen-dependent?) x-position in pixels.
|1X11 / 1X91 seems to indicate if an enemy is on screen, or past its boundary to the right or left.
|1X12 / 1X92 seems to be an enemy's far top's (screen-dependent?) y-position in pixels.
|
|1X15 / 1X95 and 1X25 / 1XA5 seem to indicate if an enemy is blinking (from getting hit).
|
|1X18 / 1X98 seems to be a frame counter for how long an enemy is already active.
|
|1X1C / 1X9C seems to indicate an enemy's current pose.
|
|1X20 / 1XA0 seems to be aswell an enemy's (or its projectile's) far left side's (screen-dependent?) x-position in pixels.
|1X21 / 1XA1 seems to aswell indicate if an enemy currently is on screen, or past its boundary to its right or left.
|1X22 / 1XA2 seems to be aswell an enemy's (screen-dependent?) far top's y-position in pixels.
|
|1X2B / 1XAB seems to determine an enemy's current sprite to some extent.
|
|1X2E / 1XAE seems to be the number of scorepoints that killing an enemy adds.
|1X2F / 1XAF seems to be an enemy's current number of health points (with an enemy dying once the hp goes strictly below 0).
|
|1X40 / 1XC0 seems to be a delay timer (or countdown) for when the enemy starts executing an action.
|
|1X44 / 1XC4 seems to be a timer that determines the progression of the enemy's sprite animation.
|
|1X46 / 1XC6 seems to be another timer that determines the progression of the enemy's action or animation.
|
|1X48 / 1XC8 seems to be a slow timer for when the enemy does an action.
|
|1X64 / 1XE4 seems to be a dying enemy's countdown timer for when its blinking shall start and when it shall disappear.
|
|1X70 / 1XF0 and 1X74 / 1XF4 seem to be an enemy's slow timers that correspond to its animation.
--
Apparently, an enemy can despawn once its y-position reaches 38 in pixels and 49 in subpixels (below the screen), but this might be dependent on the enemy's vertical size.
An enemy apparently can also despawn once its x-position reaches 249 in tiles and 176 in subpixels (to the left of screen).
The very first enemy that appears in 1-1 seems to consist of 2 parts.
2000, 2004, 2008, 200C seem to be screen-dependent x-positions in pixels of enemy projectile sprites, (but not their hitboxes).
Some of the following addresses seem to change depending on Hagane's animation or pose:
--
|2003 seems to update when the direction that Hagane currently faces changes (34 - right, 98 - left)
|09B5 seems to update aswell when the direction that Hagane currently faces changes, but only seems to update for Hagane's turnarounds on ground.
|When Hagane lands from a jump, the values of 2003 and 2007 seem to be increased by 2 for a short time.
|2003, 2007,... (step size of +0x4 for further addresses), up to 201F seem to indicate the direction Hagane currently faces aswell (with the same values for all these addresses), but seem to not update during crouched turnarounds.
|2017, 201B and 201F seem to not update if Hagane turns around midair but seem to update if Hagane turns around while standing on ground.
|2007, 200B, 200F and 2013 seem to keep updating at turnarounds during jumps.
--
- - -
Timers/Counters/Countdowns (candidates):
During the Intro:
000A seems to be a frame counter and countdown.
0011 seems to be a frame countdown with small sized steps.
0013 seems to be a slow intro countdown that does full loops.
0028 seems to be a general frame counter.
007D and 0081 are similar and seem to be frame counters that both do loops.
007E seems to reset at the beginning of every stage to 0 and increment (by 1) every time the address 007D finishes a loop.
0099 seems to be a fast counter with small steps.
0766 and 1212 are similar and seem to be frame counters that do full loops.
1016 and 1036 are similar and seem to be frame counters that do full loops.
1056, 1076, 1096, 10B6, 10D6, 10F6 and 1116 are similar and seem to be frame counters.
110A seems to be a countdown with large sized steps.
1216, 1296 and 1298 are similar and seem to be frame counters.
1298, 12B8, 12D8, 12F8, 1318, 1338 and 1358 are similar and seem to be frame counters that do full loops.
129C seems to be another frame counter.
-----
Addresses of the form 7F.... :
- - -
Further timers:
007E seems to slowly count up (during stage gameplay).
06E2 seems to be a frame counter that does full loops (during stage gameplay).
072D and 07C1 are similar and seem to be frame countdowns that do full loops (during autoscroller gameplay).
07A8, 07C7 and 07D2 seem to be frame countdowns that do full loops (during autoscroller gameplay).
07B4 and 07DE are similar and seem to be slow countdowns, or might be some constantly changing x-positions too (during autoscroller gameplay).
AB50 seems to be some in-game-time seconds countdown timer that runs from 41 to 32 and loops (during stage gameplay).
0C09 seems to be a frame counter that does full loops (during autoscroller gameplay).
1018 and 1398 are similar and seem to be frame counters that do full loops (during gameplay at bosses).
All addresses from D000 to D0FF are similar and seem to be counters with large and small steps and with a pattern of alternating values.
All addresses from D140 to D17F are similar and seem to be counters with large and small steps and with a pattern of alternating values.
D614 seems to be another frame counter.
All addresses from D614 to D61F are similar and seem to be frame countdowns.
- - - - -
Overview of addresses that don't change at all during the entire TAS by Tiger and Heisanevilgenius:
- - -
|7E0000
|...
|7E220E
-
|7E220F
|... (0 changes)
|7E27FF
-
|7E2800
|...
|7FFFFF
-
|s00000
|... (0 changes)
|s1FFFF
-
|i00000
|... (0 changes)
|i020FF
-
|i02100
|...
|i04367
-
|i04368
|... (0 changes)
|i07FFF
- - -
- - -
Most addresses of the form 7E.... that change by messing around at beginning of 1-1 are from 0000 to 0386, 0511 to 0BFF, 1000 to 12C4, 2000 to 204F, 2200 to 2204, and 3001 to 3011; and for the addresses of the form 7F.... from A800 to ADFF, D122 to D13F, D800 to DF2C, i02117 to i02140, and i04202 to i04317.
- - - - -
List of things for which addresses might exist:
- number of killed enemies
- number of currently existing enemies
- number of currently existing projectiles
- game mode
- full screen attack timer
- indicator for grapple hook being attached to something
- enemy pose states
- indicator for when slow auto-scrolling is active
- autoscroller timer
- boss fight start countdown timer
- enemy movement speed
- crumble platform despawn timer
- x- and y-positions for explosions (or other sprite positions)
For primary enemy boxes:
- all enemy body-boxes that hurt Hagane
- all boss body-boxes (where they can be hurt)
For secondary enemy boxes:
- enemy projectile body-boxes
For Hagane:
- Hagane's body-box
- Hagane projectile attack-boxes (including the ''full screen attack'')
For the environment:
- item pickup collection-boxes .