imbued

Keg Damage Flag / Bottled Item Notes

Oct 11th, 2026 (edited)
66
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.91 KB | None | 0 0
  1. WARNING: IN THIS PASTEBIN I MENTION THAT OVERLAYS WORK, BUT IN PRACTICE THEY ACTUALLY DO NOT WORK BECAUSE THE BOULDER DOES A POSITION CHECK, SEE COPY AND PASTED DISCORD MESSAGES FROM EXODUS AT THE BOTTOM WHICH EXPLAINS THIS. I'M TOO LAZY TO REWRITE THINGS. See this youtube video description for some additional details on racetrack boulder: https://youtu.be/jG8JmIB4sH4
  2.  
  3. AI = actor instance
  4. AF = actor file (i.e. overlay; code associated with the actor instance which also takes up space in the heap)
  5.  
  6. Quick Spin (id 0035) AI + 0x15C has 4 bytes corresponding to damage flags. If we have the 0x80000000 bit set, then it counts as powder keg damage
  7. Deku Bubble (id 000F) AI + 0x130 has 4 bytes corresponding to damage flags. If we have the 0x80000000 bit set, then it counts as powder keg damage
  8.  
  9. Spring Water (id 01AF)
  10. Bugs (id 017B)
  11. Fish (id 0017)
  12. Fairy (id 0010)
  13. Thunder (id 0035)
  14.  
  15. Sizes (roughly):
  16. Fish AF: 0x28C0
  17. Bugs AF: 0x37F0
  18. Thunder AI: 0x1D0 -- AF is in irrelevant part of heap
  19.  
  20. If doing a charged spin attack, but 0035 and 007B get allocated, but 0035 gets allocated first, so we can never use the 007B to help with 0035's placement in the heap.
  21.  
  22. Spring Water AI + 0x15C = 0xF7CFFFFF -- static ** Hot Spring Water seems identical to regular Spring Water, same AI and same 0xF7CFFFFF
  23. Spring Water AI + 0x1C0 = OOB, spring water only has a size of about 0x1A0, so it's AI can't be used, but its AF (size roughly 0xDD0) gets allocated first, so we can use this in theory if we set up the heap properly
  24. Spring Water AF + 0x15C = 0xAFB20034 -- static *same for hot spring water
  25. Spring Water AF + 0x1C0 = 0x00000000 -- static *same for hot spring water
  26.  
  27. Bugs AI + 0x15C = dynamic, seems to change every frame, most significant byte seems to be either 0x40 of 0x3F though, so it's never 0x80 (at least with the limited testing I did, idk how these values are determined)
  28. Bugs AI + 0x1C0 = 0x17052643 -- static
  29. Bugs AF + 0x15C = 0x8FBF0024 -- static
  30. Bugs AF + 0x1C0 = 0xAE20034C -- static
  31.  
  32. Fish AI + 0x15C = 0x00000001 -- static
  33. Fish AI + 0x1C0 = 0x3F800000 -- static
  34. Fish AF + 0x15C = 0x44814000 -- static
  35. Fish AF + 0x1C0 = 0x0C03FB9C -- static
  36.  
  37. Fairy AI + 0x15C = dynamic, most significant byte seems to either be 0x00, 0x3F, 0x40, or 0x41
  38. Fairy AI + 0x1C0 = 0x00000000 -- static
  39. Fairy AF will never be in a relevant part of the heap provided we have Tatl.
  40.  
  41. Conclusion (English):
  42. If using quickspin, our options for keg damage are:
  43. - Spring Water AI
  44. - Spring Water AF
  45. - Bugs AF
  46.  
  47. If using deku bubble, our options for keg damage are:
  48. - Bugs AF
  49.  
  50. ---------------
  51. JP 1.1
  52.  
  53. Spring Water AI + 0x15C = 0xF7CFFFFF
  54. Spring Water AI + 0x1C0 = OOB, AI only has size of about 0x1A0
  55. Spring Water AF + 0x15C = 0xAFB20034 -- static
  56. Spring Water AF + 0x1C0 = 0x00000000 -- static
  57. * hot spring water behaves the same as regular spring water, I double checked just to be sure
  58.  
  59. Bugs AI + 0x15C = dynamic, most significant bit is roughly 0x3D, 0x3F, 0x40 (didn't check exhaustively)
  60. Bugs AI + 0x1C0 = 0x17052643 -- static
  61. Bugs AF + 0x15C = 0xAFB50054 -- static
  62. Bugs AF + 0x1C0 = 0x24140091 -- static -- first notable different from English that I've seen
  63.  
  64. Fish AI + 0x15C = 0x00000001 -- static
  65. Fish AI + 0x1C0 = 0x3F800000 -- static
  66. Fish AF + 0x15C = 0x44814000 -- static
  67. Fish AF + 0x1C0 = 0x0C0402B8 -- static
  68.  
  69. Fairy AI + 0x15C = dynamic, most significant byte seems to either be 0x00, 0x3F, 0x40, or 0x41
  70. Fairy AI + 0x1C0 = 0x00000000 -- static
  71.  
  72. Conclusion (JP 1.1):
  73. If using quickspin, our options for keg damage are:
  74. - Spring Water AI
  75. - Spring Water AF
  76. - Bugs AF
  77.  
  78. It seems deku bubble with Bugs AF doesn't work on JP 1.1 as far as I can tell
  79.  
  80.  
  81. --------------------------------------------
  82. Imbued — Yesterday at 11:10 PM
  83. ok there has to be some missing piece of logic though, can we not use overlays? if I quickspin and poke thunder+0x15C to 0xAFB20034, then it breaks the boulder just like I would expect it to because the leading 0xA sets the 0x80000000 bit which corresponds to keg damage. great. but when I drop spring water such that the spring water overlay allocates where the thunder actor instance used to be, exactly the value 0xAFB20034 gets written and the boulder does not break.
  84.  
  85. Does anyone have any idea why this would be the case?
  86. also interested if anyone has any evidence contradicting my claim that we can't read the damage flags from an overlay
  87. Exodus — Yesterday at 11:19 PM
  88. you can use overlay code, but for certain actors, such as powder keg boulder, there is an additional check that can make it not work. it is a distance check, which check's the attack's position to see if it's close enough https://github.com/zeldaret/mm/blob/main/src/overlays/actors/ovl_Obj_Hugebombiwa/z_obj_hugebombiwa.c#L320
  89. GitHub
  90. mm/src/overlays/actors/ovl_Obj_Hugebombiwa/z_obj_hugebombiwa.c at m...
  91. Decompilation of The Legend of Zelda: Majora's Mask - zeldaret/mm
  92. Decompilation of The Legend of Zelda: Majora's Mask - zeldaret/mm
  93. Imbued — Yesterday at 11:20 PM
  94. oh interesting, so i guess the overlay "position" is some garbage somehow that is considered far away?
  95. Exodus — Yesterday at 11:21 PM
  96. yeah you are overwriting the position of the attack with garbage which is considered far away
  97. so for powder keg boulder specifically, yeah you probably cant get it with overlay. for most actors, though, which dont have this position check, you can.
  98. this also applies to other boulders
  99. Imbued — Yesterday at 11:22 PM
  100. so if somehow I got really lucky with bug overlay having like x y z "position" garbage values that end up being computed as close to the boulder i guess it could work
  101. Exodus — Yesterday at 11:22 PM
  102. yeah
  103. Imbued — Yesterday at 11:23 PM
  104. but seems very unlikely
  105. ok cool, thanks a lot for the info
  106. Exodus — Yesterday at 11:28 PM
  107. this check is also why blowing up boulders with bombs is weirdly precise, like the bomb needs to be right next to the boulder when it blows up, or it wont work. the explosion hitbox touching it isnt enough
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment