Files
runelite/runescape-client/src/main/java/MidiFileReader.java
2022-05-11 21:14:59 +10:00

263 lines
6.9 KiB
Java

import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("je")
@Implements("MidiFileReader")
public class MidiFileReader {
@ObfuscatedName("v")
static final byte[] field3280;
@ObfuscatedName("o")
@ObfuscatedSignature(
descriptor = "Lpx;"
)
@Export("buffer")
Buffer buffer;
@ObfuscatedName("q")
@Export("division")
int division;
@ObfuscatedName("l")
@Export("trackStarts")
int[] trackStarts;
@ObfuscatedName("k")
@Export("trackPositions")
int[] trackPositions;
@ObfuscatedName("a")
@Export("trackLengths")
int[] trackLengths;
@ObfuscatedName("m")
int[] field3276;
@ObfuscatedName("p")
int field3281;
@ObfuscatedName("r")
long field3279;
static {
field3280 = new byte[]{2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // L: 17
}
MidiFileReader(byte[] var1) {
this.buffer = new Buffer((byte[])null);
this.parse(var1); // L: 26
} // L: 27
MidiFileReader() {
this.buffer = new Buffer((byte[])null); // L: 8
} // L: 23
@ObfuscatedName("o")
@Export("parse")
void parse(byte[] var1) {
this.buffer.array = var1; // L: 30
this.buffer.offset = 10; // L: 33
int var2 = this.buffer.readUnsignedShort(); // L: 34
this.division = this.buffer.readUnsignedShort(); // L: 36
this.field3281 = 500000; // L: 37
this.trackStarts = new int[var2]; // L: 38
Buffer var10000;
int var3;
int var5;
for (var3 = 0; var3 < var2; var10000.offset += var5) { // L: 39
int var4 = this.buffer.readInt(); // L: 40
var5 = this.buffer.readInt(); // L: 41
if (var4 == 1297379947) { // L: 42
this.trackStarts[var3] = this.buffer.offset; // L: 43
++var3; // L: 44
}
var10000 = this.buffer; // L: 46
}
this.field3279 = 0L; // L: 48
this.trackPositions = new int[var2]; // L: 49
for (var3 = 0; var3 < var2; ++var3) { // L: 50
this.trackPositions[var3] = this.trackStarts[var3];
}
this.trackLengths = new int[var2]; // L: 51
this.field3276 = new int[var2]; // L: 52
} // L: 53
@ObfuscatedName("q")
@Export("clear")
void clear() {
this.buffer.array = null; // L: 56
this.trackStarts = null; // L: 57
this.trackPositions = null; // L: 58
this.trackLengths = null; // L: 59
this.field3276 = null; // L: 60
} // L: 61
@ObfuscatedName("l")
@Export("isReady")
boolean isReady() {
return this.buffer.array != null; // L: 64
}
@ObfuscatedName("k")
@Export("trackCount")
int trackCount() {
return this.trackPositions.length; // L: 68
}
@ObfuscatedName("a")
@Export("gotoTrack")
void gotoTrack(int var1) {
this.buffer.offset = this.trackPositions[var1]; // L: 72
} // L: 73
@ObfuscatedName("m")
@Export("markTrackPosition")
void markTrackPosition(int var1) {
this.trackPositions[var1] = this.buffer.offset; // L: 76
} // L: 77
@ObfuscatedName("p")
@Export("setTrackDone")
void setTrackDone() {
this.buffer.offset = -1; // L: 80
} // L: 81
@ObfuscatedName("s")
@Export("readTrackLength")
void readTrackLength(int var1) {
int var2 = this.buffer.readVarInt(); // L: 84
int[] var10000 = this.trackLengths;
var10000[var1] += var2; // L: 85
} // L: 86
@ObfuscatedName("r")
@Export("readMessage")
int readMessage(int var1) {
int var2 = this.readMessage0(var1); // L: 89
return var2; // L: 90
}
@ObfuscatedName("v")
@Export("readMessage0")
int readMessage0(int var1) {
byte var2 = this.buffer.array[this.buffer.offset]; // L: 94
int var5;
if (var2 < 0) { // L: 95
var5 = var2 & 255; // L: 96
this.field3276[var1] = var5; // L: 97
++this.buffer.offset; // L: 98
} else {
var5 = this.field3276[var1]; // L: 101
}
if (var5 != 240 && var5 != 247) { // L: 103
return this.method5221(var1, var5); // L: 116
} else {
int var3 = this.buffer.readVarInt(); // L: 104
if (var5 == 247 && var3 > 0) { // L: 105
int var4 = this.buffer.array[this.buffer.offset] & 255; // L: 106
if (var4 >= 241 && var4 <= 243 || var4 == 246 || var4 == 248 || var4 >= 250 && var4 <= 252 || var4 == 254) { // L: 107
++this.buffer.offset; // L: 108
this.field3276[var1] = var4; // L: 109
return this.method5221(var1, var4); // L: 110
}
}
Buffer var10000 = this.buffer; // L: 113
var10000.offset += var3;
return 0; // L: 114
}
}
@ObfuscatedName("y")
int method5221(int var1, int var2) {
int var4;
if (var2 == 255) { // L: 120
int var7 = this.buffer.readUnsignedByte(); // L: 121
var4 = this.buffer.readVarInt(); // L: 122
Buffer var10000;
if (var7 == 47) { // L: 123
var10000 = this.buffer; // L: 124
var10000.offset += var4;
return 1; // L: 125
} else if (var7 == 81) { // L: 127
int var5 = this.buffer.readMedium(); // L: 128
var4 -= 3; // L: 129
int var6 = this.trackLengths[var1]; // L: 130
this.field3279 += (long)var6 * (long)(this.field3281 - var5); // L: 131
this.field3281 = var5; // L: 132
var10000 = this.buffer; // L: 133
var10000.offset += var4;
return 2; // L: 134
} else {
var10000 = this.buffer; // L: 136
var10000.offset += var4;
return 3; // L: 137
}
} else {
byte var3 = field3280[var2 - 128]; // L: 139
var4 = var2; // L: 140
if (var3 >= 1) { // L: 141
var4 = var2 | this.buffer.readUnsignedByte() << 8;
}
if (var3 >= 2) { // L: 142
var4 |= this.buffer.readUnsignedByte() << 16;
}
return var4; // L: 143
}
}
@ObfuscatedName("c")
long method5227(int var1) {
return this.field3279 + (long)var1 * (long)this.field3281; // L: 147
}
@ObfuscatedName("w")
@Export("getPrioritizedTrack")
int getPrioritizedTrack() {
int var1 = this.trackPositions.length; // L: 151
int var2 = -1; // L: 152
int var3 = Integer.MAX_VALUE; // L: 153
for (int var4 = 0; var4 < var1; ++var4) { // L: 154
if (this.trackPositions[var4] >= 0 && this.trackLengths[var4] < var3) { // L: 155 156
var2 = var4; // L: 157
var3 = this.trackLengths[var4]; // L: 158
}
}
return var2; // L: 161
}
@ObfuscatedName("b")
@Export("isDone")
boolean isDone() {
int var1 = this.trackPositions.length; // L: 165
for (int var2 = 0; var2 < var1; ++var2) { // L: 166
if (this.trackPositions[var2] >= 0) {
return false;
}
}
return true; // L: 167
}
@ObfuscatedName("t")
@Export("reset")
void reset(long var1) {
this.field3279 = var1; // L: 171
int var3 = this.trackPositions.length; // L: 172
for (int var4 = 0; var4 < var3; ++var4) { // L: 173
this.trackLengths[var4] = 0; // L: 174
this.field3276[var4] = 0; // L: 175
this.buffer.offset = this.trackStarts[var4]; // L: 176
this.readTrackLength(var4); // L: 177
this.trackPositions[var4] = this.buffer.offset; // L: 178
}
} // L: 180
}