home *** CD-ROM | disk | FTP | other *** search
- import java.applet.AudioClip;
- import java.io.ByteArrayOutputStream;
- import java.io.DataOutputStream;
- import java.io.IOException;
- import sun.audio.AudioPlayer;
-
- final class Sound implements AudioClip {
- // $FF: renamed from: Ə int
- private int field_0;
- // $FF: renamed from: Ɛ int
- private int field_1;
- // $FF: renamed from: Ƒ int
- private int field_2;
- // $FF: renamed from: ƒ byte[]
- private byte[] field_3;
- // $FF: renamed from: Ɠ int
- private int field_4;
- // $FF: renamed from: Ɣ int
- private int field_5;
- // $FF: renamed from: ƕ boolean
- private boolean field_6;
- // $FF: renamed from: Ɩ boolean
- private boolean field_7;
- // $FF: renamed from: Ɨ byte[]
- private byte[] field_8;
- // $FF: renamed from: À Sound
- Sound field_9;
- // $FF: renamed from: ╞ÿ int
- int field_10;
- // $FF: renamed from: ƙ int[]
- static final int[] field_11 = new int[]{11025, 22050, 44100, 88200};
- // $FF: renamed from: ƚ int[]
- static final int[] field_12 = new int[]{3, 2, 1, 0};
- // $FF: renamed from: ƛ SoundMixer
- private SoundMixer field_13;
- // $FF: renamed from: Ɯ byte[]
- private static byte[] field_14;
- // $FF: renamed from: Ɲ int
- int field_15;
- // $FF: renamed from: ƞ int
- int field_16;
- // $FF: renamed from: Ɵ int
- int field_17;
- // $FF: renamed from: Ơ int
- int field_18;
- // $FF: renamed from: ơ int[]
- int[] field_19 = new int[2];
- // $FF: renamed from: ─⌐ int[]
- int[] field_20 = new int[2];
- // $FF: renamed from: Ƣ int[]
- static final int[] field_21 = new int[]{-1, 2};
- // $FF: renamed from: ƣ int[]
- static final int[] field_22 = new int[]{-1, -1, 2, 4};
- // $FF: renamed from: Ƥ int[]
- static final int[] field_23 = new int[]{-1, -1, -1, -1, 2, 4, 6, 8};
- // $FF: renamed from: ƥ int[]
- static final int[] field_24 = new int[]{-1, -1, -1, -1, -1, -1, -1, -1, 1, 2, 4, 6, 8, 10, 13, 16};
- // $FF: renamed from: Ʀ int[][]
- static final int[][] field_25;
- // $FF: renamed from: Ƨ int[]
- static final int[] field_26;
-
- // $FF: renamed from: Ə () int
- int method_0() {
- return this.field_0 & 240;
- }
-
- Sound(int var1, int var2, byte[] var3, int var4) {
- this.field_0 = var1;
- this.field_1 = var2;
- this.field_3 = var3;
- this.field_4 = this.field_5 = var4;
- this.field_6 = (this.field_0 & 1) != 0;
- this.method_6();
- switch (field_11[this.field_0 >> 2 & 3]) {
- case 11025:
- this.field_2 = (int)(((long)var2 * 16000L + 11024L) / 11025L);
- return;
- case 22050:
- this.field_2 = (int)(((long)var2 * 16000L + 22049L) / 22050L);
- return;
- case 44100:
- this.field_2 = (int)(((long)var2 * 16000L + 44099L) / 44100L);
- return;
- case 88200:
- this.field_2 = (int)(((long)var2 * 16000L + 88199L) / 88200L);
- return;
- default:
- }
- }
-
- public synchronized void play(int var1) {
- this.stop();
- if (this.field_8 != null) {
- this.field_13 = new SoundMixer(this.field_8, var1);
- AudioPlayer.player.start(this.field_13);
- }
-
- }
-
- public synchronized void play() {
- this.play(1);
- }
-
- // $FF: renamed from: Ɛ (int) void
- synchronized void method_1(int var1) {
- if (this.field_8 != null) {
- this.field_13 = new SoundMixer(this.field_8, var1);
- AudioPlayer.player.start(this.field_13);
- }
-
- }
-
- // $FF: renamed from: Ɛ () void
- synchronized void method_2() {
- this.method_1(1);
- }
-
- // $FF: renamed from: Ƒ (int) void
- synchronized void method_3(int var1) {
- if (this.field_13 == null || this.field_13.available() <= 0) {
- this.stop();
- if (this.field_8 != null) {
- this.field_13 = new SoundMixer(this.field_8, var1);
- AudioPlayer.player.start(this.field_13);
- }
-
- }
- }
-
- // $FF: renamed from: Ƒ () void
- synchronized void method_4() {
- this.method_1(1);
- }
-
- public synchronized void loop() {
- this.stop();
- if (this.field_8 != null) {
- this.field_13 = new SoundMixer(this.field_8, -1);
- AudioPlayer.player.start(this.field_13);
- }
-
- }
-
- public synchronized void stop() {
- if (this.field_13 != null) {
- AudioPlayer.player.stop(this.field_13);
-
- try {
- this.field_13.close();
- } catch (IOException var1) {
- }
-
- this.field_13 = null;
- }
-
- }
-
- // $FF: renamed from: ƒ () boolean
- synchronized boolean method_5() {
- if (this.field_7) {
- return true;
- } else if ((this.field_8 = this.method_8()) == null) {
- return false;
- } else {
- ByteArrayOutputStream var1 = new ByteArrayOutputStream(0);
- DataOutputStream var2 = new DataOutputStream(var1);
-
- try {
- var2.writeInt(779316836);
- var2.writeInt(0);
- var2.writeInt(this.field_2);
- var2.writeInt(1);
- var2.writeInt(8000);
- var2.writeInt(1);
- var2.writeInt(0);
- } catch (IOException var5) {
- return false;
- }
-
- byte[] var3 = var1.toByteArray();
-
- for(int var4 = 0; var4 < 0; ++var4) {
- this.field_8[var4] = var3[var4];
- }
-
- this.field_7 = true;
- return true;
- }
- }
-
- // $FF: renamed from: Ɠ () void
- void method_6() {
- if (field_14 == null) {
- field_14 = new byte[256];
-
- for(int var1 = 0; var1 < 8; ++var1) {
- int var2 = 1 << var1;
-
- for(int var3 = var2; var2 > 0; --var2) {
- field_14[var3] = (byte)var1;
- ++var3;
- }
- }
-
- field_14[0] = 0;
- }
-
- }
-
- // $FF: renamed from: Ɣ (int) byte
- private static byte method_7(int var0) {
- short var1;
- if (var0 < 0) {
- var1 = 128;
- var0 = -var0;
- } else {
- var1 = 0;
- }
-
- int var2 = var0 + 132;
- if (var2 > 32767) {
- var2 = 32767;
- }
-
- byte var3 = field_14[var2 >> 7];
- int var4 = var2 >> var3 + 3 & 15;
- int var5 = ~(var1 | var3 << 4 | var4);
- if (var5 == 0) {
- var5 = 2;
- }
-
- return (byte)var5;
- }
-
- // $FF: renamed from: ƕ () byte[]
- private byte[] method_8() {
- int var1 = 0;
- int var2 = 0;
- int var3 = 0;
- int var4 = 0;
- int var7 = this.field_2;
- switch (field_11[this.field_0 >> 2 & 3]) {
- case 11025:
- var1 = 45158;
- break;
- case 22050:
- var1 = 90316;
- break;
- case 44100:
- var1 = 180633;
- break;
- case 88200:
- var1 = 361267;
- }
-
- this.field_5 = this.field_4;
- byte[] var5;
- if ((var5 = new byte[2048]) == null) {
- return null;
- } else {
- this.method_13(0);
- byte[] var6;
- if ((var6 = new byte[this.field_2]) == null) {
- return null;
- } else {
- for(int var8 = this.field_1; var8 > 0; var8 -= 2048) {
- if (var8 > 2048) {
- this.method_14(var5, 2048);
- var2 = 134217728;
- } else {
- this.method_14(var5, var8);
- var2 = var8 - 1 << 16;
- }
-
- while(var3 < var2 && var4 < var7) {
- var6[var4++] = var5[var3 >> 16];
- var3 += var1;
- }
-
- if (var8 <= 2048) {
- var6[this.field_2 - 1] = var5[var8 - 1];
- } else {
- var3 -= 134217728;
- }
- }
-
- return var6;
- }
- }
- }
-
- // $FF: renamed from: Ɩ () void
- private void method_9() {
- while(this.field_16 <= 24) {
- this.field_15 = this.field_15 << 8 | 255 & this.field_3[this.field_5++];
- this.field_16 += 8;
- }
-
- }
-
- // $FF: renamed from: Ɨ (int) int
- private int method_10(int var1) {
- if (this.field_16 < var1) {
- this.method_9();
- }
-
- int var2 = this.field_15 << 32 - this.field_16 >>> 32 - var1;
- this.field_16 -= var1;
- return var2;
- }
-
- // $FF: renamed from: ╞ÿ (int) int
- private int method_11(int var1) {
- if (this.field_16 < var1) {
- this.method_9();
- }
-
- int var2 = this.field_15 << 32 - this.field_16 >> 32 - var1;
- this.field_16 -= var1;
- return var2;
- }
-
- // $FF: renamed from: ƙ (int) void
- private void method_12(int var1) {
- if (var1 > 32) {
- var1 -= this.field_16;
- this.field_16 = 0;
- int var4 = var1 / 8;
- this.field_5 += var4;
- this.method_10(var1 & 7);
- } else {
- while(var1 > 0) {
- int var2 = Math.min(16, var1);
- this.method_10(var2);
- var1 -= var2;
- }
-
- }
- }
-
- // $FF: renamed from: ƚ (int) void
- private void method_13(int var1) {
- if (this.field_17 == 0) {
- this.field_17 = this.method_10(2) + 2;
- }
-
- int var2 = this.field_18 & -4096;
- if (var2 > 0 && var1 > var2 + this.field_18) {
- this.field_18 += var2;
- var1 -= var2;
- int var3 = var2 * this.field_17;
- if (this.field_6) {
- var3 *= 2;
- }
-
- this.method_12(var3);
- }
-
- int var9 = var1 >> 12;
- int var4 = var9 * (22 + this.field_17 * 4095);
- if (this.field_6) {
- var4 *= 2;
- }
-
- this.method_12(var4);
- var1 &= 4095;
- byte[] var5 = new byte[2048];
-
- int var7;
- for(int var6 = this.field_6 ? 512 : 1024; var1 > 0; var1 -= var7) {
- var7 = Math.min(var6, var1);
- this.method_14(var5, var7 + var7);
- }
-
- }
-
- // $FF: renamed from: ƛ (byte[], int) void
- private void method_14(byte[] var1, int var2) {
- int var3 = 0;
- if (this.field_17 == 0) {
- this.field_17 = this.method_10(2) + 2;
- }
-
- int[] var4 = field_25[this.field_17 - 2];
- int var5 = 1 << this.field_17 - 2;
- int var6 = 1 << this.field_17 - 1;
- if (!this.field_6) {
- int var16 = this.field_19[0];
- int var18 = this.field_20[0];
- int var19 = this.field_18;
-
- while(var2-- > 0) {
- ++var19;
- if ((var19 & 4095) == 1) {
- var16 = this.method_11(16);
- var1[var3++] = method_7(var16);
- var18 = this.method_10(6);
- } else {
- int var20 = this.method_10(this.field_17);
- int var22 = field_26[var18];
- int var23 = 0;
- int var13 = var5;
-
- do {
- if ((var20 & var13) != 0) {
- var23 += var22;
- }
-
- var22 >>= 1;
- var13 >>= 1;
- } while(var13 != 0);
-
- var23 += var22;
- if ((var20 & var6) != 0) {
- var16 -= var23;
- } else {
- var16 += var23;
- }
-
- var18 += var4[var20 & ~var6];
- if (var18 < 0) {
- var18 = 0;
- } else if (var18 > 88) {
- var18 = 88;
- }
-
- if (var16 != (short)var16) {
- var16 = var16 < 0 ? Short.MIN_VALUE : 32767;
- }
-
- var1[var3++] = method_7(var16);
- }
- }
-
- this.field_19[0] = var16;
- this.field_20[0] = var18;
- this.field_18 = var19;
- } else {
- int var7 = 0;
-
- while(var2-- > 0) {
- ++this.field_18;
- if ((this.field_18 & 4095) == 1) {
- for(int var17 = 0; var17 < 2; ++var17) {
- this.field_19[var17] = this.method_11(16);
- if (var17 == 0) {
- var7 = this.field_19[var17];
- } else {
- int var15 = var7 + this.field_19[var17];
- var7 = var15 >> 1;
- var1[var3++] = method_7(var7);
- }
-
- this.field_20[var17] = this.method_10(6);
- }
- } else {
- for(int var8 = 0; var8 < 2; ++var8) {
- int var9 = this.method_10(this.field_17);
- int var10 = field_26[this.field_20[var8]];
- int var11 = 0;
- int var12 = var5;
-
- do {
- if ((var9 & var12) != 0) {
- var11 += var10;
- }
-
- var10 >>= 1;
- var12 >>= 1;
- } while(var12 != 0);
-
- var11 += var10;
- if ((var9 & var6) != 0) {
- int[] var25 = this.field_19;
- var25[var8] -= var11;
- } else {
- int[] var26 = this.field_19;
- var26[var8] += var11;
- }
-
- int[] var27 = this.field_20;
- var27[var8] += var4[var9 & ~var6];
- if (this.field_20[var8] < 0) {
- this.field_20[var8] = 0;
- } else if (this.field_20[var8] > 88) {
- this.field_20[var8] = 88;
- }
-
- if (this.field_19[var8] != (short)this.field_19[var8]) {
- this.field_19[var8] = this.field_19[var8] < 0 ? Short.MIN_VALUE : 32767;
- }
-
- if (var8 == 0) {
- var7 = this.field_19[var8];
- } else {
- int var14 = var7 + this.field_19[var8];
- var7 = var14 >> 1;
- var1[var3++] = method_7(var7);
- }
- }
- }
- }
-
- }
- }
-
- static {
- field_25 = new int[][]{field_21, field_22, field_23, field_24};
- field_26 = new int[]{7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767};
- }
- }
-