Advertisement
authorblues

Untitled

May 28th, 2019
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var __LM_EXTRA_HI =
  2. {
  3.     get: function( ){ return (this.extra & 0xF0) >> 4; },
  4.     set: function(x){ this.extra = (this.extra & 0x0F) | ((x & 0x0F) << 4); },
  5. };
  6.  
  7. var __LM_EXTRA_HI_PLUS1 =
  8. {
  9.     get: function( ){ return 1 + ((this.extra & 0xF0) >> 4); },
  10.     set: function(x){ --x; this.extra = (this.extra & 0x0F) | ((x & 0x0F) << 4); },
  11. };
  12.  
  13. var __LM_EXTRA_LO =
  14. {
  15.     get: function( ){ return this.extra & 0x0F; },
  16.     set: function(x){ this.extra = (this.extra & 0xF0) | (x & 0x0F); },
  17. };
  18.  
  19. var __LM_EXTRA_LO_PLUS1 =
  20. {
  21.     get: function( ){ return 1 + (this.extra & 0x0F); },
  22.     set: function(x){ --x; this.extra = (this.extra & 0xF0) | (x & 0x0F); },
  23. };
  24.  
  25. var __LM_EXTRA_BYTE_PLUS1 =
  26. {
  27.     get: function( ){ return 1 + (this.extra & 0xFF); },
  28.     set: function(x){ --x; this.extra = x & 0xFF; },
  29. };
  30.  
  31. var __LUNAR_MAGIC_STANDARD = new Map(
  32. [
  33.     [0x01, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Water Tiles 1" }],
  34.     [0x02, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Invisible Coin Blocks" }],
  35.     [0x03, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Invisible Note Blocks" }],
  36.     [0x04, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Invisible POW Coins" }],
  37.     [0x05, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Coins" }],
  38.     [0x06, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Non-Solid Dirt" }],
  39.     [0x07, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Water Tiles 2" }],
  40.     [0x08, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Note Blocks" }],
  41.     [0x09, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Turn Blocks" }],
  42.     [0x0A, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Coin Blocks" }],
  43.     [0x0B, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Throw Blocks" }],
  44.     [0x0C, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Munchers" }],
  45.     [0x0D, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Grey Cement Blocks" }],
  46.     [0x0E, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Used (Brown) Blocks" }],
  47.     [0x0F, { w: 2, h: __LM_EXTRA_HI_PLUS1, other: __LM_EXTRA_LO, name: "Vertical Pipe" }],
  48.     [0x10, { w: __LM_EXTRA_LO_PLUS1, h: 2, other: __LM_EXTRA_HI, name: "Horizontal Pipe" }],
  49.     [0x11, { w: 1, h: __LM_EXTRA_HI_PLUS1, other: __LM_EXTRA_LO, name: "Bullet Shooter" }],
  50.     [0x13, { w: 1, h: __LM_EXTRA_HI_PLUS1, other: __LM_EXTRA_LO, name: "Wall/Vine" }],
  51.     [0x14, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Ledge" }],
  52.     [0x15, { w: 3, h: __LM_EXTRA_HI_PLUS1, other: __LM_EXTRA_LO, name: "Goal/Midway Point" }],
  53.     [0x16, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Purple Coins" }],
  54.     [0x17, { w: __LM_EXTRA_LO_PLUS1, h: 1, other: __LM_EXTRA_HI, name: "Rope/Clouds" }],
  55.     [0x18, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Water with Animated Surface" }],
  56.     [0x19, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Water with Normal Surface" }],
  57.     [0x1A, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Mud/Lava with Animated Surface" }],
  58.     [0x1B, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Fence with Top" }],
  59.     [0x1C, { w: __LM_EXTRA_LO_PLUS1, h: 2, name: "Donut Bridge" }],
  60.     [0x1D, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Fence with Bottom" }],
  61.     [0x1E, { w: 1, h: __LM_EXTRA_HI_PLUS1, other: __LM_EXTRA_LO, name: "Fence Side (Snap)" }],
  62.     [0x1F, { w: 1, h: __LM_EXTRA_HI_PLUS1, name: "Skinny Vertical Pipe/Bone/Log" }],
  63.     [0x20, { w: __LM_EXTRA_LO_PLUS1, h: 1, name: "Skinny Horizontal Pipe/Bone/Log" }],
  64.     [0x21, { w: __LM_EXTRA_BYTE_PLUS1, h: 3, name: "Wide-scale Ground Ledge" }],
  65.  
  66.     [0x12,
  67.     {
  68.         w: {
  69.             get: function( )
  70.             {
  71.                 let size = (this.extra & 0xF0) >> 4;
  72.                 switch (this.other)
  73.                 {
  74.                     case 0: return 2*(1+size); break;
  75.                     case 1: return 1*(1+size); break;
  76.                     case 2: return 4*(1+size); break;
  77.                     default: throw new Exception("Unexpected slope type.");
  78.                 }
  79.             },
  80.             set: function(x){ throw new Exception("Cannot set slope width."); },
  81.         },
  82.         h: __LM_EXTRA_HI_PLUS1, other: __LM_EXTRA_LO, name: "Sloped Ground"
  83.     }],
  84. ]);
  85.  
  86. // 0 - 0,7,C, example level: 105 - YI1 (normal/cloud/forest)
  87. var __LUNAR_MAGIC_TILESET_SPECIFIC_0 = new Map(
  88. [
  89.     [0x30, { w: 2, h: __LM_EXTRA_HI_PLUS1, name: "Ice Blue Vertical Pipe" }],
  90.     [0x31, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Ice Blue Turn Blocks" }],
  91.     [0x32, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Blue Switch Blocks" }],
  92.     [0x34, { w: 1, h: __LM_EXTRA_HI_PLUS1, other: __LM_EXTRA_LO, name: "Wall (Forest)" }],
  93.     [0x35, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Ledge (Forest)" }],
  94.     [0x36, { w: 2, h: __LM_EXTRA_HI_PLUS1, name: "Large Tree Trunk (Forest)" }],
  95.     [0x37, { w: 1, h: __LM_EXTRA_HI_PLUS1, other: __LM_EXTRA_LO, name: "Small Tree Trunk (Forest)" }],
  96.     [0x38, { w: __LM_EXTRA_HI_PLUS1, h: __LM_EXTRA_LO_PLUS1, name: "Red Switch Blocks" }],
  97.  
  98.     [0x33,
  99.     {
  100.         w: {
  101.             get: function( ){ return 16*(1+(this.extra & 0xFF)); },
  102.             set: function(x){ this.extra = (x >> 4) - 1; },
  103.         },
  104.         h: 6, name: "Forest Tree Top"
  105.     }],
  106. ]);
  107.  
  108. // 1 - 1, example level: 10D - bowser's castle (castle)
  109. var __LUNAR_MAGIC_TILESET_SPECIFIC_1 = new Map(
  110. [
  111. ]);
  112.  
  113. // 2 - 2,6,8, example level: 113 - vob3 (rope)
  114. var __LUNAR_MAGIC_TILESET_SPECIFIC_2 = new Map(
  115. [
  116. ]);
  117.  
  118. // 3 - 3,9,A,B,E, example level: 115 - vob2 (underground/switch/castle)
  119. var __LUNAR_MAGIC_TILESET_SPECIFIC_3 = new Map(
  120. [
  121. ]);
  122.  
  123. // 4 - 4,5,D, example level: 114 - valley ghost (switch/ghost)
  124. var __LUNAR_MAGIC_TILESET_SPECIFIC_4 = new Map(
  125. [
  126. ]);
  127.  
  128. var __LUNAR_MAGIC_TILESET_LOOKUP =
  129. [
  130.     __LUNAR_MAGIC_TILESET_SPECIFIC_0, // 0
  131.     __LUNAR_MAGIC_TILESET_SPECIFIC_1, // 1
  132.     __LUNAR_MAGIC_TILESET_SPECIFIC_2, // 2
  133.     __LUNAR_MAGIC_TILESET_SPECIFIC_3, // 3
  134.     __LUNAR_MAGIC_TILESET_SPECIFIC_4, // 4
  135.     __LUNAR_MAGIC_TILESET_SPECIFIC_4, // 5
  136.     __LUNAR_MAGIC_TILESET_SPECIFIC_2, // 6
  137.     __LUNAR_MAGIC_TILESET_SPECIFIC_0, // 7
  138.     __LUNAR_MAGIC_TILESET_SPECIFIC_2, // 8
  139.     __LUNAR_MAGIC_TILESET_SPECIFIC_3, // 9
  140.     __LUNAR_MAGIC_TILESET_SPECIFIC_3, // A
  141.     __LUNAR_MAGIC_TILESET_SPECIFIC_3, // B
  142.     __LUNAR_MAGIC_TILESET_SPECIFIC_0, // C
  143.     __LUNAR_MAGIC_TILESET_SPECIFIC_4, // D
  144.     __LUNAR_MAGIC_TILESET_SPECIFIC_3, // E
  145.     null, // F - unused
  146. ];
  147.  
  148. var __LUNAR_MAGIC_EXTENDED = new Map(
  149. [
  150. ]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement