633 lines
18 KiB
Java
633 lines
18 KiB
Java
import net.runelite.mapping.Export;
|
|
import net.runelite.mapping.Implements;
|
|
import net.runelite.mapping.ObfuscatedName;
|
|
import net.runelite.mapping.ObfuscatedSignature;
|
|
|
|
@ObfuscatedName("cd")
|
|
@Implements("MusicSample")
|
|
public class MusicSample extends Node {
|
|
@ObfuscatedName("g")
|
|
static byte[] field603;
|
|
@ObfuscatedName("l")
|
|
static int field604;
|
|
@ObfuscatedName("e")
|
|
static int field605;
|
|
@ObfuscatedName("x")
|
|
static int field606;
|
|
@ObfuscatedName("d")
|
|
static int field607;
|
|
@ObfuscatedName("k")
|
|
@ObfuscatedSignature(
|
|
signature = "[Lcc;"
|
|
)
|
|
static class98[] field1323;
|
|
@ObfuscatedName("n")
|
|
@ObfuscatedSignature(
|
|
signature = "[Lca;"
|
|
)
|
|
static class102[] field1324;
|
|
@ObfuscatedName("i")
|
|
@ObfuscatedSignature(
|
|
signature = "[Lda;"
|
|
)
|
|
static class109[] field1344;
|
|
@ObfuscatedName("a")
|
|
@ObfuscatedSignature(
|
|
signature = "[Ldg;"
|
|
)
|
|
static class114[] field1326;
|
|
@ObfuscatedName("z")
|
|
static boolean[] field608;
|
|
@ObfuscatedName("j")
|
|
static int[] field609;
|
|
@ObfuscatedName("s")
|
|
static boolean field610;
|
|
@ObfuscatedName("c")
|
|
static float[] field611;
|
|
@ObfuscatedName("r")
|
|
static float[] field612;
|
|
@ObfuscatedName("p")
|
|
static float[] field613;
|
|
@ObfuscatedName("v")
|
|
static float[] field614;
|
|
@ObfuscatedName("ag")
|
|
static float[] field615;
|
|
@ObfuscatedName("aq")
|
|
static float[] field616;
|
|
@ObfuscatedName("aj")
|
|
static float[] field617;
|
|
@ObfuscatedName("av")
|
|
static int[] field618;
|
|
@ObfuscatedName("ar")
|
|
static int[] field619;
|
|
@ObfuscatedName("m")
|
|
byte[][] field620;
|
|
@ObfuscatedName("f")
|
|
@Export("sampleRate")
|
|
int sampleRate;
|
|
@ObfuscatedName("q")
|
|
@Export("sampleCount")
|
|
int sampleCount;
|
|
@ObfuscatedName("w")
|
|
@Export("start")
|
|
int start;
|
|
@ObfuscatedName("o")
|
|
@Export("end")
|
|
int end;
|
|
@ObfuscatedName("u")
|
|
boolean field621;
|
|
@ObfuscatedName("t")
|
|
float[] field622;
|
|
@ObfuscatedName("y")
|
|
int field623;
|
|
@ObfuscatedName("h")
|
|
int field624;
|
|
@ObfuscatedName("b")
|
|
boolean field625;
|
|
@ObfuscatedName("ac")
|
|
@Export("samples")
|
|
byte[] samples;
|
|
@ObfuscatedName("ay")
|
|
int field626;
|
|
@ObfuscatedName("ah")
|
|
int field627;
|
|
|
|
MusicSample(byte[] var1) {
|
|
this.read(var1);
|
|
}
|
|
|
|
@ObfuscatedName("o")
|
|
@Export("read")
|
|
void read(byte[] var1) {
|
|
Buffer var2 = new Buffer(var1);
|
|
this.sampleRate = var2.readInt();
|
|
this.sampleCount = var2.readInt();
|
|
this.start = var2.readInt();
|
|
this.end = var2.readInt();
|
|
if (this.end < 0) {
|
|
this.end = ~this.end;
|
|
this.field621 = true;
|
|
}
|
|
|
|
int var3 = var2.readInt();
|
|
this.field620 = new byte[var3][];
|
|
|
|
for (int var4 = 0; var4 < var3; ++var4) {
|
|
int var5 = 0;
|
|
|
|
int var6;
|
|
do {
|
|
var6 = var2.readUnsignedByte();
|
|
var5 += var6;
|
|
} while(var6 >= 255);
|
|
|
|
byte[] var7 = new byte[var5];
|
|
var2.method46(var7, 0, var5);
|
|
this.field620[var4] = var7;
|
|
}
|
|
|
|
}
|
|
|
|
@ObfuscatedName("g")
|
|
float[] method225(int var1) {
|
|
method2337(this.field620[var1], 0);
|
|
method2338();
|
|
int var2 = method2352(WorldMapCacheName.method634(field609.length - 1));
|
|
boolean var3 = field608[var2];
|
|
int var4 = var3 ? field607 : field606;
|
|
boolean var5 = false;
|
|
boolean var6 = false;
|
|
if (var3) {
|
|
var5 = method2338() != 0;
|
|
var6 = method2338() != 0;
|
|
}
|
|
|
|
int var7 = var4 >> 1;
|
|
int var8;
|
|
int var9;
|
|
int var10;
|
|
if (var3 && !var5) {
|
|
var8 = (var4 >> 2) - (field606 >> 2);
|
|
var9 = (field606 >> 2) + (var4 >> 2);
|
|
var10 = field606 >> 1;
|
|
} else {
|
|
var8 = 0;
|
|
var9 = var7;
|
|
var10 = var4 >> 1;
|
|
}
|
|
|
|
int var11;
|
|
int var12;
|
|
int var13;
|
|
if (var3 && !var6) {
|
|
var11 = var4 - (var4 >> 2) - (field606 >> 2);
|
|
var12 = (field606 >> 2) + (var4 - (var4 >> 2));
|
|
var13 = field606 >> 1;
|
|
} else {
|
|
var11 = var7;
|
|
var12 = var4;
|
|
var13 = var4 >> 1;
|
|
}
|
|
|
|
class114 var14 = field1326[field609[var2]];
|
|
int var15 = var14.field1454;
|
|
int var16 = var14.field1452[var15];
|
|
boolean var17 = !field1324[var16].method2367();
|
|
boolean var18 = var17;
|
|
|
|
for (var16 = 0; var16 < var14.field1453; ++var16) {
|
|
class109 var19 = field1344[var14.field1455[var16]];
|
|
float[] var20 = field611;
|
|
var19.method2473(var20, var4 >> 1, var18);
|
|
}
|
|
|
|
int var48;
|
|
if (!var17) {
|
|
var16 = var14.field1454;
|
|
var48 = var14.field1452[var16];
|
|
field1324[var48].method2375(field611, var4 >> 1);
|
|
}
|
|
|
|
float[] var21;
|
|
int var22;
|
|
int var49;
|
|
if (var17) {
|
|
for (var16 = var4 >> 1; var16 < var4; ++var16) {
|
|
field611[var16] = 0.0F;
|
|
}
|
|
} else {
|
|
var16 = var4 >> 1;
|
|
var48 = var4 >> 2;
|
|
var49 = var4 >> 3;
|
|
var21 = field611;
|
|
|
|
for (var22 = 0; var22 < var16; ++var22) {
|
|
var21[var22] *= 0.5F;
|
|
}
|
|
|
|
for (var22 = var16; var22 < var4; ++var22) {
|
|
var21[var22] = -var21[var4 - var22 - 1];
|
|
}
|
|
|
|
float[] var23 = var3 ? field615 : field612;
|
|
float[] var24 = var3 ? field616 : field613;
|
|
float[] var25 = var3 ? field617 : field614;
|
|
int[] var26 = var3 ? field619 : field618;
|
|
|
|
int var27;
|
|
float var28;
|
|
float var29;
|
|
float var30;
|
|
float var31;
|
|
for (var27 = 0; var27 < var48; ++var27) {
|
|
var28 = var21[var27 * 4] - var21[var4 - var27 * 4 - 1];
|
|
var29 = var21[var27 * 4 + 2] - var21[var4 - var27 * 4 - 3];
|
|
var30 = var23[var27 * 2];
|
|
var31 = var23[var27 * 2 + 1];
|
|
var21[var4 - var27 * 4 - 1] = var28 * var30 - var29 * var31;
|
|
var21[var4 - var27 * 4 - 3] = var28 * var31 + var29 * var30;
|
|
}
|
|
|
|
float var32;
|
|
float var33;
|
|
for (var27 = 0; var27 < var49; ++var27) {
|
|
var28 = var21[var16 + var27 * 4 + 3];
|
|
var29 = var21[var16 + var27 * 4 + 1];
|
|
var30 = var21[var27 * 4 + 3];
|
|
var31 = var21[var27 * 4 + 1];
|
|
var21[var16 + var27 * 4 + 3] = var28 + var30;
|
|
var21[var16 + var27 * 4 + 1] = var29 + var31;
|
|
var32 = var23[var16 - 4 - var27 * 4];
|
|
var33 = var23[var16 - 3 - var27 * 4];
|
|
var21[var27 * 4 + 3] = (var28 - var30) * var32 - (var29 - var31) * var33;
|
|
var21[var27 * 4 + 1] = (var29 - var31) * var32 + (var28 - var30) * var33;
|
|
}
|
|
|
|
var27 = WorldMapCacheName.method634(var4 - 1);
|
|
|
|
int var34;
|
|
int var35;
|
|
int var36;
|
|
int var37;
|
|
for (var34 = 0; var34 < var27 - 3; ++var34) {
|
|
var35 = var4 >> var34 + 2;
|
|
var36 = 8 << var34;
|
|
|
|
for (var37 = 0; var37 < 2 << var34; ++var37) {
|
|
int var38 = var4 - var35 * var37 * 2;
|
|
int var39 = var4 - var35 * (var37 * 2 + 1);
|
|
|
|
for (int var40 = 0; var40 < var4 >> var34 + 4; ++var40) {
|
|
int var41 = var40 * 4;
|
|
float var42 = var21[var38 - 1 - var41];
|
|
float var43 = var21[var38 - 3 - var41];
|
|
float var44 = var21[var39 - 1 - var41];
|
|
float var45 = var21[var39 - 3 - var41];
|
|
var21[var38 - 1 - var41] = var42 + var44;
|
|
var21[var38 - 3 - var41] = var43 + var45;
|
|
float var46 = var23[var40 * var36];
|
|
float var47 = var23[var40 * var36 + 1];
|
|
var21[var39 - 1 - var41] = (var42 - var44) * var46 - (var43 - var45) * var47;
|
|
var21[var39 - 3 - var41] = (var43 - var45) * var46 + (var42 - var44) * var47;
|
|
}
|
|
}
|
|
}
|
|
|
|
for (var34 = 1; var34 < var49 - 1; ++var34) {
|
|
var35 = var26[var34];
|
|
if (var34 < var35) {
|
|
var36 = var34 * 8;
|
|
var37 = var35 * 8;
|
|
var32 = var21[var36 + 1];
|
|
var21[var36 + 1] = var21[var37 + 1];
|
|
var21[var37 + 1] = var32;
|
|
var32 = var21[var36 + 3];
|
|
var21[var36 + 3] = var21[var37 + 3];
|
|
var21[var37 + 3] = var32;
|
|
var32 = var21[var36 + 5];
|
|
var21[var36 + 5] = var21[var37 + 5];
|
|
var21[var37 + 5] = var32;
|
|
var32 = var21[var36 + 7];
|
|
var21[var36 + 7] = var21[var37 + 7];
|
|
var21[var37 + 7] = var32;
|
|
}
|
|
}
|
|
|
|
for (var34 = 0; var34 < var16; ++var34) {
|
|
var21[var34] = var21[var34 * 2 + 1];
|
|
}
|
|
|
|
for (var34 = 0; var34 < var49; ++var34) {
|
|
var21[var4 - 1 - var34 * 2] = var21[var34 * 4];
|
|
var21[var4 - 2 - var34 * 2] = var21[var34 * 4 + 1];
|
|
var21[var4 - var48 - 1 - var34 * 2] = var21[var34 * 4 + 2];
|
|
var21[var4 - var48 - 2 - var34 * 2] = var21[var34 * 4 + 3];
|
|
}
|
|
|
|
for (var34 = 0; var34 < var49; ++var34) {
|
|
var29 = var25[var34 * 2];
|
|
var30 = var25[var34 * 2 + 1];
|
|
var31 = var21[var16 + var34 * 2];
|
|
var32 = var21[var16 + var34 * 2 + 1];
|
|
var33 = var21[var4 - 2 - var34 * 2];
|
|
float var51 = var21[var4 - 1 - var34 * 2];
|
|
float var52 = var30 * (var31 - var33) + var29 * (var32 + var51);
|
|
var21[var16 + var34 * 2] = (var31 + var33 + var52) * 0.5F;
|
|
var21[var4 - 2 - var34 * 2] = (var31 + var33 - var52) * 0.5F;
|
|
var52 = var30 * (var32 + var51) - var29 * (var31 - var33);
|
|
var21[var16 + var34 * 2 + 1] = (var32 - var51 + var52) * 0.5F;
|
|
var21[var4 - 1 - var34 * 2] = (-var32 + var51 + var52) * 0.5F;
|
|
}
|
|
|
|
for (var34 = 0; var34 < var48; ++var34) {
|
|
var21[var34] = var21[var16 + var34 * 2] * var24[var34 * 2] + var21[var16 + var34 * 2 + 1] * var24[var34 * 2 + 1];
|
|
var21[var16 - 1 - var34] = var21[var16 + var34 * 2] * var24[var34 * 2 + 1] - var21[var16 + var34 * 2 + 1] * var24[var34 * 2];
|
|
}
|
|
|
|
for (var34 = 0; var34 < var48; ++var34) {
|
|
var21[var34 + (var4 - var48)] = -var21[var34];
|
|
}
|
|
|
|
for (var34 = 0; var34 < var48; ++var34) {
|
|
var21[var34] = var21[var48 + var34];
|
|
}
|
|
|
|
for (var34 = 0; var34 < var48; ++var34) {
|
|
var21[var48 + var34] = -var21[var48 - var34 - 1];
|
|
}
|
|
|
|
for (var34 = 0; var34 < var48; ++var34) {
|
|
var21[var16 + var34] = var21[var4 - var34 - 1];
|
|
}
|
|
|
|
float[] var10000;
|
|
for (var34 = var8; var34 < var9; ++var34) {
|
|
var29 = (float)Math.sin(((double)(var34 - var8) + 0.5D) / (double)var10 * 0.5D * 3.141592653589793D);
|
|
var10000 = field611;
|
|
var10000[var34] *= (float)Math.sin(1.5707963267948966D * (double)var29 * (double)var29);
|
|
}
|
|
|
|
for (var34 = var11; var34 < var12; ++var34) {
|
|
var29 = (float)Math.sin(((double)(var34 - var11) + 0.5D) / (double)var13 * 0.5D * 3.141592653589793D + 1.5707963267948966D);
|
|
var10000 = field611;
|
|
var10000[var34] *= (float)Math.sin(1.5707963267948966D * (double)var29 * (double)var29);
|
|
}
|
|
}
|
|
|
|
var21 = null;
|
|
if (this.field623 > 0) {
|
|
var48 = var4 + this.field623 >> 2;
|
|
var21 = new float[var48];
|
|
if (!this.field625) {
|
|
for (var49 = 0; var49 < this.field624; ++var49) {
|
|
var22 = var49 + (this.field623 >> 1);
|
|
var21[var49] += this.field622[var22];
|
|
}
|
|
}
|
|
|
|
if (!var17) {
|
|
for (var49 = var8; var49 < var4 >> 1; ++var49) {
|
|
var22 = var21.length - (var4 >> 1) + var49;
|
|
var21[var22] += field611[var49];
|
|
}
|
|
}
|
|
}
|
|
|
|
float[] var50 = this.field622;
|
|
this.field622 = field611;
|
|
field611 = var50;
|
|
this.field623 = var4;
|
|
this.field624 = var12 - (var4 >> 1);
|
|
this.field625 = var17;
|
|
return var21;
|
|
}
|
|
|
|
@ObfuscatedName("x")
|
|
@ObfuscatedSignature(
|
|
signature = "([I)Lcx;"
|
|
)
|
|
@Export("toRawSound")
|
|
RawSound toRawSound(int[] var1) {
|
|
if (var1 != null && var1[0] <= 0) {
|
|
return null;
|
|
} else {
|
|
if (this.samples == null) {
|
|
this.field623 = 0;
|
|
this.field622 = new float[field607];
|
|
this.samples = new byte[this.sampleCount];
|
|
this.field626 = 0;
|
|
this.field627 = 0;
|
|
}
|
|
|
|
for (; this.field627 < this.field620.length; ++this.field627) {
|
|
if (var1 != null && var1[0] <= 0) {
|
|
return null;
|
|
}
|
|
|
|
float[] var2 = this.method225(this.field627);
|
|
if (var2 != null) {
|
|
int var3 = this.field626;
|
|
int var4 = var2.length;
|
|
if (var4 > this.sampleCount - var3) {
|
|
var4 = this.sampleCount - var3;
|
|
}
|
|
|
|
for (int var5 = 0; var5 < var4; ++var5) {
|
|
int var6 = (int)(128.0F + var2[var5] * 128.0F);
|
|
if ((var6 & -256) != 0) {
|
|
var6 = ~var6 >> 31;
|
|
}
|
|
|
|
this.samples[var3++] = (byte)(var6 - 128);
|
|
}
|
|
|
|
if (var1 != null) {
|
|
var1[0] -= var3 - this.field626;
|
|
}
|
|
|
|
this.field626 = var3;
|
|
}
|
|
}
|
|
|
|
this.field622 = null;
|
|
byte[] var7 = this.samples;
|
|
this.samples = null;
|
|
return new RawSound(this.sampleRate, var7, this.start, this.end, this.field621);
|
|
}
|
|
}
|
|
|
|
@ObfuscatedName("m")
|
|
static float method2357(int var0) {
|
|
int var1 = var0 & 2097151;
|
|
int var2 = var0 & Integer.MIN_VALUE;
|
|
int var3 = (var0 & 2145386496) >> 21;
|
|
if (var2 != 0) {
|
|
var1 = -var1;
|
|
}
|
|
|
|
return (float)((double)var1 * Math.pow(2.0D, (double)(var3 - 788)));
|
|
}
|
|
|
|
@ObfuscatedName("f")
|
|
static void method2337(byte[] var0, int var1) {
|
|
field603 = var0;
|
|
field604 = var1;
|
|
field605 = 0;
|
|
}
|
|
|
|
@ObfuscatedName("q")
|
|
static int method2338() {
|
|
int var0 = field603[field604] >> field605 & 1;
|
|
++field605;
|
|
field604 += field605 >> 3;
|
|
field605 &= 7;
|
|
return var0;
|
|
}
|
|
|
|
@ObfuscatedName("w")
|
|
static int method2352(int var0) {
|
|
int var1 = 0;
|
|
|
|
int var2;
|
|
int var3;
|
|
for (var2 = 0; var0 >= 8 - field605; var0 -= var3) {
|
|
var3 = 8 - field605;
|
|
int var4 = (1 << var3) - 1;
|
|
var1 += (field603[field604] >> field605 & var4) << var2;
|
|
field605 = 0;
|
|
++field604;
|
|
var2 += var3;
|
|
}
|
|
|
|
if (var0 > 0) {
|
|
var3 = (1 << var0) - 1;
|
|
var1 += (field603[field604] >> field605 & var3) << var2;
|
|
field605 += var0;
|
|
}
|
|
|
|
return var1;
|
|
}
|
|
|
|
@ObfuscatedName("u")
|
|
static void method2341(byte[] var0) {
|
|
method2337(var0, 0);
|
|
field606 = 1 << method2352(4);
|
|
field607 = 1 << method2352(4);
|
|
field611 = new float[field607];
|
|
|
|
int var1;
|
|
int var2;
|
|
int var3;
|
|
int var4;
|
|
int var5;
|
|
for (var1 = 0; var1 < 2; ++var1) {
|
|
var2 = var1 != 0 ? field607 : field606;
|
|
var3 = var2 >> 1;
|
|
var4 = var2 >> 2;
|
|
var5 = var2 >> 3;
|
|
float[] var6 = new float[var3];
|
|
|
|
for (int var7 = 0; var7 < var4; ++var7) {
|
|
var6[var7 * 2] = (float)Math.cos((double)(var7 * 4) * 3.141592653589793D / (double)var2);
|
|
var6[var7 * 2 + 1] = -((float)Math.sin((double)(var7 * 4) * 3.141592653589793D / (double)var2));
|
|
}
|
|
|
|
float[] var13 = new float[var3];
|
|
|
|
for (int var8 = 0; var8 < var4; ++var8) {
|
|
var13[var8 * 2] = (float)Math.cos((double)(var8 * 2 + 1) * 3.141592653589793D / (double)(var2 * 2));
|
|
var13[var8 * 2 + 1] = (float)Math.sin((double)(var8 * 2 + 1) * 3.141592653589793D / (double)(var2 * 2));
|
|
}
|
|
|
|
float[] var14 = new float[var4];
|
|
|
|
for (int var9 = 0; var9 < var5; ++var9) {
|
|
var14[var9 * 2] = (float)Math.cos((double)(var9 * 4 + 2) * 3.141592653589793D / (double)var2);
|
|
var14[var9 * 2 + 1] = -((float)Math.sin((double)(var9 * 4 + 2) * 3.141592653589793D / (double)var2));
|
|
}
|
|
|
|
int[] var15 = new int[var5];
|
|
int var10 = WorldMapCacheName.method634(var5 - 1);
|
|
|
|
for (int var11 = 0; var11 < var5; ++var11) {
|
|
var15[var11] = GrandExchangeEvent.method87(var11, var10);
|
|
}
|
|
|
|
if (var1 != 0) {
|
|
field615 = var6;
|
|
field616 = var13;
|
|
field617 = var14;
|
|
field619 = var15;
|
|
} else {
|
|
field612 = var6;
|
|
field613 = var13;
|
|
field614 = var14;
|
|
field618 = var15;
|
|
}
|
|
}
|
|
|
|
var1 = method2352(8) + 1;
|
|
field1323 = new class98[var1];
|
|
|
|
for (var2 = 0; var2 < var1; ++var2) {
|
|
field1323[var2] = new class98();
|
|
}
|
|
|
|
var2 = method2352(6) + 1;
|
|
|
|
for (var3 = 0; var3 < var2; ++var3) {
|
|
method2352(16);
|
|
}
|
|
|
|
var2 = method2352(6) + 1;
|
|
field1324 = new class102[var2];
|
|
|
|
for (var3 = 0; var3 < var2; ++var3) {
|
|
field1324[var3] = new class102();
|
|
}
|
|
|
|
var3 = method2352(6) + 1;
|
|
field1344 = new class109[var3];
|
|
|
|
for (var4 = 0; var4 < var3; ++var4) {
|
|
field1344[var4] = new class109();
|
|
}
|
|
|
|
var4 = method2352(6) + 1;
|
|
field1326 = new class114[var4];
|
|
|
|
for (var5 = 0; var5 < var4; ++var5) {
|
|
field1326[var5] = new class114();
|
|
}
|
|
|
|
var5 = method2352(6) + 1;
|
|
field608 = new boolean[var5];
|
|
field609 = new int[var5];
|
|
|
|
for (int var12 = 0; var12 < var5; ++var12) {
|
|
field608[var12] = method2338() != 0;
|
|
method2352(16);
|
|
method2352(16);
|
|
field609[var12] = method2352(8);
|
|
}
|
|
|
|
}
|
|
|
|
@ObfuscatedName("l")
|
|
@ObfuscatedSignature(
|
|
signature = "(Lir;)Z"
|
|
)
|
|
static boolean method2343(AbstractIndexCache var0) {
|
|
if (!field610) {
|
|
byte[] var1 = var0.takeRecord(0, 0);
|
|
if (var1 == null) {
|
|
return false;
|
|
}
|
|
|
|
method2341(var1);
|
|
field610 = true;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
@ObfuscatedName("e")
|
|
@ObfuscatedSignature(
|
|
signature = "(Lir;II)Lcd;"
|
|
)
|
|
@Export("readMusicSample")
|
|
static MusicSample readMusicSample(AbstractIndexCache var0, int var1, int var2) {
|
|
if (!method2343(var0)) {
|
|
var0.tryLoadRecord(var1, var2);
|
|
return null;
|
|
} else {
|
|
byte[] var3 = var0.takeRecord(var1, var2);
|
|
return var3 == null ? null : new MusicSample(var3);
|
|
}
|
|
}
|
|
|
|
static {
|
|
field610 = false;
|
|
}
|
|
}
|