diff --git a/client/src/main/java/rt4/ArrayUtils.java b/client/src/main/java/rt4/ArrayUtils.java index c15ffe8..f1dade1 100644 --- a/client/src/main/java/rt4/ArrayUtils.java +++ b/client/src/main/java/rt4/ArrayUtils.java @@ -233,58 +233,58 @@ public final class ArrayUtils { } @OriginalMember(owner = "client!kg", name = "a", descriptor = "([III)V") - public static void clear(@OriginalArg(0) int[] arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2) { - @Pc(5) int local5 = arg2 - 7; - while (arg1 < local5) { - arg0[arg1++] = 0; - arg0[arg1++] = 0; - arg0[arg1++] = 0; - arg0[arg1++] = 0; - arg0[arg1++] = 0; - arg0[arg1++] = 0; - arg0[arg1++] = 0; - arg0[arg1++] = 0; + public static void clear(@OriginalArg(0) int[] dest, @OriginalArg(1) int off, @OriginalArg(2) int length) { + @Pc(5) int len = length - 7; + while (off < len) { + dest[off++] = 0; + dest[off++] = 0; + dest[off++] = 0; + dest[off++] = 0; + dest[off++] = 0; + dest[off++] = 0; + dest[off++] = 0; + dest[off++] = 0; } - local5 += 7; - while (arg1 < local5) { - arg0[arg1++] = 0; + len += 7; + while (off < len) { + dest[off++] = 0; } } @OriginalMember(owner = "client!nk", name = "a", descriptor = "(Z[J[I)V") public static void sort(@OriginalArg(1) long[] arg0, @OriginalArg(2) int[] arg1) { - method436(arg0, 0, arg0.length - 1, arg1); + sort(arg0, 0, arg0.length - 1, arg1); } @OriginalMember(owner = "client!gj", name = "a", descriptor = "([JII[II)V") - public static void method436(@OriginalArg(0) long[] arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int[] arg3) { - if (arg1 >= arg2) { + public static void sort(@OriginalArg(0) long[] keys, @OriginalArg(1) int lo, @OriginalArg(2) int hi, @OriginalArg(3) int[] values) { + if (lo >= hi) { return; } - @Pc(20) int local20 = arg1; - @Pc(26) int local26 = (arg2 + arg1) / 2; - @Pc(30) long local30 = arg0[local26]; - arg0[local26] = arg0[arg2]; - arg0[arg2] = local30; - @Pc(44) int local44 = arg3[local26]; - arg3[local26] = arg3[arg2]; - arg3[arg2] = local44; - for (@Pc(56) int local56 = arg1; local56 < arg2; local56++) { - if (arg0[local56] < local30 + (long) (local56 & 0x1)) { - @Pc(76) long local76 = arg0[local56]; - arg0[local56] = arg0[local20]; - arg0[local20] = local76; - @Pc(90) int local90 = arg3[local56]; - arg3[local56] = arg3[local20]; - arg3[local20++] = local90; + @Pc(20) int i = lo; + @Pc(26) int mid = (hi + lo) / 2; + @Pc(30) long pivotKey = keys[mid]; + keys[mid] = keys[hi]; + keys[hi] = pivotKey; + @Pc(44) int pivotValue = values[mid]; + values[mid] = values[hi]; + values[hi] = pivotValue; + for (@Pc(56) int j = lo; j < hi; j++) { + if (keys[j] < pivotKey + (long) (j & 0x1)) { + @Pc(76) long key = keys[j]; + keys[j] = keys[i]; + keys[i] = key; + @Pc(90) int value = values[j]; + values[j] = values[i]; + values[i++] = value; } } - arg0[arg2] = arg0[local20]; - arg0[local20] = local30; - arg3[arg2] = arg3[local20]; - arg3[local20] = local44; - method436(arg0, arg1, local20 - 1, arg3); - method436(arg0, local20 + 1, arg2, arg3); + keys[hi] = keys[i]; + keys[i] = pivotKey; + values[hi] = values[i]; + values[i] = pivotValue; + sort(keys, lo, i - 1, values); + sort(keys, i + 1, hi, values); } @OriginalMember(owner = "client!ja", name = "a", descriptor = "([II)[I") @@ -351,4 +351,107 @@ public final class ArrayUtils { arg0[arg1] = arg3; } } + + @OriginalMember(owner = "client!ec", name = "a", descriptor = "([Ljava/lang/Object;I[III)V") + public static void sort(@OriginalArg(0) Object[] values, @OriginalArg(1) int hi, @OriginalArg(2) int[] keys, @OriginalArg(4) int lo) { + if (lo >= hi) { + return; + } + @Pc(11) int mid = (lo + hi) / 2; + @Pc(15) int pivotKey = keys[mid]; + @Pc(17) int i = lo; + keys[mid] = keys[hi]; + keys[hi] = pivotKey; + @Pc(31) Object pivotValue = values[mid]; + values[mid] = values[hi]; + values[hi] = pivotValue; + for (@Pc(43) int j = lo; j < hi; j++) { + if ((j & 0x1) + pivotKey > keys[j]) { + @Pc(67) int key = keys[j]; + keys[j] = keys[i]; + keys[i] = key; + @Pc(81) Object value = values[j]; + values[j] = values[i]; + values[i++] = value; + } + } + keys[hi] = keys[i]; + keys[i] = pivotKey; + values[hi] = values[i]; + values[i] = pivotValue; + sort(values, i - 1, keys, lo); + sort(values, hi, keys, i + 1); + } + + @OriginalMember(owner = "client!oi", name = "a", descriptor = "(I[I[Ljava/lang/Object;)V") + public static void sort(@OriginalArg(1) int[] arg0, @OriginalArg(2) Object[] arg1) { + sort(arg1, arg0.length - 1, arg0, 0); + } + + @OriginalMember(owner = "client!nj", name = "a", descriptor = "(IIZ[I[I)V") + public static void sort(@OriginalArg(0) int lo, @OriginalArg(1) int hi, @OriginalArg(3) int[] keys, @OriginalArg(4) int[] values) { + if (lo >= hi) { + return; + } + @Pc(22) int mid = (hi + lo) / 2; + @Pc(24) int i = lo; + @Pc(28) int pivotKey = keys[mid]; + keys[mid] = keys[hi]; + keys[hi] = pivotKey; + @Pc(42) int pivotValue = values[mid]; + values[mid] = values[hi]; + values[hi] = pivotValue; + for (@Pc(54) int j = lo; j < hi; j++) { + if (keys[j] > (j & 0x1) + pivotKey) { + @Pc(79) int key = keys[j]; + keys[j] = keys[i]; + keys[i] = key; + @Pc(93) int value = values[j]; + values[j] = values[i]; + values[i++] = value; + } + } + keys[hi] = keys[i]; + keys[i] = pivotKey; + values[hi] = values[i]; + values[i] = pivotValue; + sort(lo, i - 1, keys, values); + sort(i + 1, hi, keys, values); + } + + @OriginalMember(owner = "client!sh", name = "a", descriptor = "(I[JII[Ljava/lang/Object;)V") + public static void sort(@OriginalArg(0) int hi, @OriginalArg(1) long[] keys, @OriginalArg(3) int lo, @OriginalArg(4) Object[] values) { + if (lo >= hi) { + return; + } + @Pc(16) int i = lo; + @Pc(23) int mid = (lo + hi) / 2; + @Pc(27) long pivotKey = keys[mid]; + keys[mid] = keys[hi]; + keys[hi] = pivotKey; + @Pc(41) Object pivotValue = values[mid]; + values[mid] = values[hi]; + values[hi] = pivotValue; + for (@Pc(53) int j = lo; j < hi; j++) { + if (pivotKey + (long) (j & 0x1) > keys[j]) { + @Pc(72) long key = keys[j]; + keys[j] = keys[i]; + keys[i] = key; + @Pc(86) Object value = values[j]; + values[j] = values[i]; + values[i++] = value; + } + } + keys[hi] = keys[i]; + keys[i] = pivotKey; + values[hi] = values[i]; + values[i] = pivotValue; + sort(i - 1, keys, lo, values); + sort(hi, keys, i + 1, values); + } + + @OriginalMember(owner = "client!ac", name = "a", descriptor = "([J[Ljava/lang/Object;I)V") + public static void sort(@OriginalArg(0) long[] arg0, @OriginalArg(1) Object[] arg1) { + sort(arg0.length - 1, arg0, 0, arg1); + } } diff --git a/client/src/main/java/rt4/ColorUtils.java b/client/src/main/java/rt4/ColorUtils.java index 31513fc..545c8d8 100644 --- a/client/src/main/java/rt4/ColorUtils.java +++ b/client/src/main/java/rt4/ColorUtils.java @@ -121,4 +121,61 @@ public class ColorUtils { return (arg0 & 0xFF80) + arg1; } } + + @OriginalMember(owner = "client!w", name = "f", descriptor = "(I)I") + public static int method4582(@OriginalArg(0) int arg0) { + if (arg0 < 2) { + arg0 = 2; + } else if (arg0 > 126) { + arg0 = 126; + } + return arg0; + } + + @OriginalMember(owner = "client!hf", name = "a", descriptor = "(II)I") + public static int multiplyLightness(@OriginalArg(0) int a, @OriginalArg(1) int b) { + b = b * (a & 0x7F) >> 7; + if (b < 2) { + b = 2; + } else if (b > 126) { + b = 126; + } + return (a & 0xFF80) + b; + } + + @OriginalMember(owner = "client!w", name = "a", descriptor = "(II)I") + public static int multiplyLightness2(@OriginalArg(0) int a, @OriginalArg(1) int b) { + b = b * (a & 0x7F) >> 7; + if (b < 2) { + b = 2; + } else if (b > 126) { + b = 126; + } + return (a & 0xFF80) + b; + } + + @OriginalMember(owner = "client!ri", name = "a", descriptor = "(II)I") + public static int multiplyLightness3(@OriginalArg(0) int a, @OriginalArg(1) int b) { + b = b * (a & 0x7F) >> 7; + if (b < 2) { + b = 2; + } else if (b > 126) { + b = 126; + } + return (a & 0xFF80) + b; + } + + @OriginalMember(owner = "client!ed", name = "a", descriptor = "(IIII)I") + public static int method1309(@OriginalArg(0) int arg0, @OriginalArg(2) int arg1, @OriginalArg(3) int arg2) { + if (arg0 > 243) { + arg1 >>= 0x4; + } else if (arg0 > 217) { + arg1 >>= 0x3; + } else if (arg0 > 192) { + arg1 >>= 0x2; + } else if (arg0 > 179) { + arg1 >>= 0x1; + } + return (arg0 >> 1) + (arg1 >> 5 << 7) + (arg2 >> 2 << 10); + } } diff --git a/client/src/main/java/rt4/Cs1ScriptRunner.java b/client/src/main/java/rt4/Cs1ScriptRunner.java index e59b5e9..1532083 100644 --- a/client/src/main/java/rt4/Cs1ScriptRunner.java +++ b/client/src/main/java/rt4/Cs1ScriptRunner.java @@ -806,8 +806,8 @@ public class Cs1ScriptRunner { if (GlRenderer.enabled) { GlRaster.method1183(local123, local114, component.width + local123, component.height + local114); - @Pc(2274) boolean local2274 = Texture.method3702(sprite.width); - @Pc(2279) boolean local2279 = Texture.method3702(sprite.height); + @Pc(2274) boolean local2274 = IntUtils.isPowerOfTwo(sprite.width); + @Pc(2279) boolean local2279 = IntUtils.isPowerOfTwo(sprite.height); @Pc(2282) GlSprite local2282 = (GlSprite) sprite; if (local2274 && local2279) { if (alpha == 0) { diff --git a/client/src/main/java/rt4/DisplayMode.java b/client/src/main/java/rt4/DisplayMode.java index 92e8482..e892fde 100644 --- a/client/src/main/java/rt4/DisplayMode.java +++ b/client/src/main/java/rt4/DisplayMode.java @@ -267,7 +267,7 @@ public final class DisplayMode { @Pc(122) DisplayMode local122 = aClass114Array1[local114]; local112[local114] = local122.height * local122.width; } - method3346(local112, aClass114Array1); + ArrayUtils.sort(local112, aClass114Array1); } return aClass114Array1; } @@ -331,39 +331,4 @@ public final class DisplayMode { } } - @OriginalMember(owner = "client!oi", name = "a", descriptor = "(I[I[Ljava/lang/Object;)V") - public static void method3346(@OriginalArg(1) int[] arg0, @OriginalArg(2) Object[] arg1) { - method1292(arg1, arg0.length - 1, arg0, 0); - } - - @OriginalMember(owner = "client!ec", name = "a", descriptor = "([Ljava/lang/Object;I[III)V") - public static void method1292(@OriginalArg(0) Object[] arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int[] arg2, @OriginalArg(4) int arg3) { - if (arg3 >= arg1) { - return; - } - @Pc(11) int local11 = (arg3 + arg1) / 2; - @Pc(15) int local15 = arg2[local11]; - @Pc(17) int local17 = arg3; - arg2[local11] = arg2[arg1]; - arg2[arg1] = local15; - @Pc(31) Object local31 = arg0[local11]; - arg0[local11] = arg0[arg1]; - arg0[arg1] = local31; - for (@Pc(43) int local43 = arg3; local43 < arg1; local43++) { - if ((local43 & 0x1) + local15 > arg2[local43]) { - @Pc(67) int local67 = arg2[local43]; - arg2[local43] = arg2[local17]; - arg2[local17] = local67; - @Pc(81) Object local81 = arg0[local43]; - arg0[local43] = arg0[local17]; - arg0[local17++] = local81; - } - } - arg2[arg1] = arg2[local17]; - arg2[local17] = local15; - arg0[arg1] = arg0[local17]; - arg0[local17] = local31; - method1292(arg0, local17 - 1, arg2, arg3); - method1292(arg0, arg1, arg2, local17 + 1); - } } diff --git a/client/src/main/java/rt4/GlModel.java b/client/src/main/java/rt4/GlModel.java index d39e5ab..1f163a0 100644 --- a/client/src/main/java/rt4/GlModel.java +++ b/client/src/main/java/rt4/GlModel.java @@ -713,7 +713,7 @@ public final class GlModel extends Model { @OriginalMember(owner = "client!td", name = "a", descriptor = "(ISIB)I") public static int method4096(@OriginalArg(0) int arg0, @OriginalArg(1) short arg1, @OriginalArg(2) int arg2, @OriginalArg(3) byte arg3) { - @Pc(5) int local5 = Rasteriser.palette[SoftwareModel.method4585(arg0, arg2)]; + @Pc(5) int local5 = Rasteriser.palette[ColorUtils.multiplyLightness2(arg0, arg2)]; if (arg1 != -1) { @Pc(15) int local15 = Rasteriser.textureProvider.method3238(arg1 & 0xFFFF); @Pc(21) int local21; diff --git a/client/src/main/java/rt4/IntUtils.java b/client/src/main/java/rt4/IntUtils.java index 345ac84..9d242a4 100644 --- a/client/src/main/java/rt4/IntUtils.java +++ b/client/src/main/java/rt4/IntUtils.java @@ -63,4 +63,30 @@ public class IntUtils { public static int clamp(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(3) int arg2) { return arg2 > arg1 ? arg2 : arg1 > arg0 ? arg0 : arg1; } + + @OriginalMember(owner = "client!bn", name = "a", descriptor = "(III)I") + public static int bitReverse(@OriginalArg(0) int arg0, @OriginalArg(2) int arg1) { + @Pc(8) int local8 = 0; + while (arg0 > 0) { + local8 = local8 << 1 | arg1 & 0x1; + arg1 >>>= 0x1; + arg0--; + } + return local8; + } + + @OriginalMember(owner = "client!uc", name = "a", descriptor = "(II)I") + public static int bitCountFast(@OriginalArg(0) int v) { + @Pc(9) int a = (v >>> 1 & 0xD5555555) + (v & 0x55555555); + @Pc(19) int b = (a >>> 2 & 0x33333333) + (a & 0x33333333); + @Pc(31) int c = (b >>> 4) + b & 0xF0F0F0F; + @Pc(37) int d = c + (c >>> 8); + @Pc(43) int e = d + (d >>> 16); + return e & 0xFF; + } + + @OriginalMember(owner = "client!ra", name = "a", descriptor = "(BI)Z") + public static boolean isPowerOfTwo(@OriginalArg(1) int v) { + return v == (-v & v); + } } diff --git a/client/src/main/java/rt4/JagString.java b/client/src/main/java/rt4/JagString.java index e5c7b2b..fb8be2d 100644 --- a/client/src/main/java/rt4/JagString.java +++ b/client/src/main/java/rt4/JagString.java @@ -369,7 +369,7 @@ public final class JagString implements StringInterface { } @OriginalMember(owner = "client!na", name = "a", descriptor = "(IILjava/awt/Graphics;B)V") - public final void method3112(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) Graphics arg2) { + public final void drawString(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) Graphics arg2) { @Pc(17) String local17 = new String(this.chars, 0, this.length, StandardCharsets.ISO_8859_1); arg2.drawString(local17, arg1, arg0); } @@ -996,7 +996,7 @@ public final class JagString implements StringInterface { } @OriginalMember(owner = "client!na", name = "a", descriptor = "(ILjava/awt/FontMetrics;)I") - public final int method3155(@OriginalArg(1) FontMetrics arg0) { + public final int stringWidth(@OriginalArg(1) FontMetrics arg0) { @Pc(14) String local14 = new String(this.chars, 0, this.length, StandardCharsets.ISO_8859_1); return arg0.stringWidth(local14); } diff --git a/client/src/main/java/rt4/JavaAudioChannel.java b/client/src/main/java/rt4/JavaAudioChannel.java index 66173ca..4c485ec 100644 --- a/client/src/main/java/rt4/JavaAudioChannel.java +++ b/client/src/main/java/rt4/JavaAudioChannel.java @@ -30,16 +30,6 @@ public final class JavaAudioChannel extends AudioChannel { @OriginalMember(owner = "client!qa", name = "N", descriptor = "Z") private boolean aBoolean230 = false; - @OriginalMember(owner = "client!uc", name = "a", descriptor = "(II)I") - public static int method3289(@OriginalArg(0) int arg0) { - @Pc(9) int local9 = (arg0 >>> 1 & 0xD5555555) + (arg0 & 0x55555555); - @Pc(19) int local19 = (local9 >>> 2 & 0x33333333) + (local9 & 0x33333333); - @Pc(31) int local31 = (local19 >>> 4) + local19 & 0xF0F0F0F; - @Pc(37) int local37 = local31 + (local31 >>> 8); - @Pc(43) int local43 = local37 + (local37 >>> 16); - return local43 & 0xFF; - } - @OriginalMember(owner = "client!qa", name = "d", descriptor = "()V") @Override protected final void flush() { @@ -78,7 +68,7 @@ public final class JavaAudioChannel extends AudioChannel { this.aSourceDataLine1.start(); this.anInt4645 = arg0; } catch (@Pc(36) LineUnavailableException local36) { - if (method3289(arg0) == 1) { + if (IntUtils.bitCountFast(arg0) == 1) { this.aSourceDataLine1 = null; throw local36; } else { diff --git a/client/src/main/java/rt4/LoadingBarAwt.java b/client/src/main/java/rt4/LoadingBarAwt.java index 5a5d0a3..e22862f 100644 --- a/client/src/main/java/rt4/LoadingBarAwt.java +++ b/client/src/main/java/rt4/LoadingBarAwt.java @@ -9,69 +9,71 @@ import java.awt.*; public class LoadingBarAwt { @OriginalMember(owner = "client!tg", name = "a", descriptor = "Ljava/awt/FontMetrics;") - public static FontMetrics aFontMetrics1; + public static FontMetrics fontMetrics; + @OriginalMember(owner = "client!lj", name = "y", descriptor = "Ljava/awt/Image;") - public static Image anImage3; + public static Image loadingBar; + @OriginalMember(owner = "client!sa", name = "R", descriptor = "Ljava/awt/Font;") - public static Font aFont1; + public static Font font; @OriginalMember(owner = "client!bc", name = "a", descriptor = "(Ljava/awt/Color;ZZLclient!na;I)V") - public static void render(@OriginalArg(0) Color arg0, @OriginalArg(2) boolean arg1, @OriginalArg(3) JagString arg2, @OriginalArg(4) int arg3) { + public static void render(@OriginalArg(0) Color color, @OriginalArg(2) boolean redraw, @OriginalArg(3) JagString text, @OriginalArg(4) int arg3) { try { - @Pc(6) Graphics local6 = GameShell.canvas.getGraphics(); - if (aFont1 == null) { - aFont1 = new Font("Helvetica", 1, 13); - aFontMetrics1 = GameShell.canvas.getFontMetrics(aFont1); + @Pc(6) Graphics g = GameShell.canvas.getGraphics(); + if (font == null) { + font = new Font("Helvetica", 1, 13); + fontMetrics = GameShell.canvas.getFontMetrics(font); } - if (arg1) { - local6.setColor(Color.black); - local6.fillRect(0, 0, GameShell.canvasWidth, GameShell.canvasHeight); + if (redraw) { + g.setColor(Color.black); + g.fillRect(0, 0, GameShell.canvasWidth, GameShell.canvasHeight); } - if (arg0 == null) { - arg0 = new Color(140, 17, 17); + if (color == null) { + color = new Color(140, 17, 17); } try { - if (anImage3 == null) { - anImage3 = GameShell.canvas.createImage(304, 34); + if (loadingBar == null) { + loadingBar = GameShell.canvas.createImage(304, 34); } - @Pc(56) Graphics local56 = anImage3.getGraphics(); - local56.setColor(arg0); - local56.drawRect(0, 0, 303, 33); - local56.fillRect(2, 2, arg3 * 3, 30); - local56.setColor(Color.black); - local56.drawRect(1, 1, 301, 31); - local56.fillRect(arg3 * 3 + 2, 2, 300 - arg3 * 3, 30); - local56.setFont(aFont1); - local56.setColor(Color.white); - arg2.method3112(22, (304 - arg2.method3155(aFontMetrics1)) / 2, local56); - local6.drawImage(anImage3, GameShell.canvasWidth / 2 - 152, GameShell.canvasHeight / 2 + -18, null); - } catch (@Pc(134) Exception local134) { - @Pc(140) int local140 = GameShell.canvasWidth / 2 - 152; - @Pc(146) int local146 = GameShell.canvasHeight / 2 - 18; - local6.setColor(arg0); - local6.drawRect(local140, local146, 303, 33); - local6.fillRect(local140 + 2, local146 + 2, arg3 * 3, 30); - local6.setColor(Color.black); - local6.drawRect(local140 + 1, local146 - -1, 301, 31); - local6.fillRect(arg3 * 3 + local140 + 2, local146 + 2, 300 - arg3 * 3, 30); - local6.setFont(aFont1); - local6.setColor(Color.white); - arg2.method3112(local146 + 22, local140 + (-arg2.method3155(aFontMetrics1) + 304) / 2, local6); + @Pc(56) Graphics loadingBarGraphics = loadingBar.getGraphics(); + loadingBarGraphics.setColor(color); + loadingBarGraphics.drawRect(0, 0, 303, 33); + loadingBarGraphics.fillRect(2, 2, arg3 * 3, 30); + loadingBarGraphics.setColor(Color.black); + loadingBarGraphics.drawRect(1, 1, 301, 31); + loadingBarGraphics.fillRect(arg3 * 3 + 2, 2, 300 - arg3 * 3, 30); + loadingBarGraphics.setFont(font); + loadingBarGraphics.setColor(Color.white); + text.drawString(22, (304 - text.stringWidth(fontMetrics)) / 2, loadingBarGraphics); + g.drawImage(loadingBar, GameShell.canvasWidth / 2 - 152, GameShell.canvasHeight / 2 + -18, null); + } catch (@Pc(134) Exception ignored) { + @Pc(140) int x = GameShell.canvasWidth / 2 - 152; + @Pc(146) int y = GameShell.canvasHeight / 2 - 18; + g.setColor(color); + g.drawRect(x, y, 303, 33); + g.fillRect(x + 2, y + 2, arg3 * 3, 30); + g.setColor(Color.black); + g.drawRect(x + 1, y - -1, 301, 31); + g.fillRect(arg3 * 3 + x + 2, y + 2, 300 - arg3 * 3, 30); + g.setFont(font); + g.setColor(Color.white); + text.drawString(y + 22, x + (-text.stringWidth(fontMetrics) + 304) / 2, g); } if (client.mainLoadPrimaryText != null) { - local6.setFont(aFont1); - local6.setColor(Color.white); - client.mainLoadPrimaryText.method3112(GameShell.canvasHeight / 2 - 26, GameShell.canvasWidth / 2 - client.mainLoadPrimaryText.method3155(aFontMetrics1) / 2, local6); + g.setFont(font); + g.setColor(Color.white); + client.mainLoadPrimaryText.drawString(GameShell.canvasHeight / 2 - 26, GameShell.canvasWidth / 2 - client.mainLoadPrimaryText.stringWidth(fontMetrics) / 2, g); } - } catch (@Pc(252) Exception local252) { + } catch (@Pc(252) Exception ignored) { GameShell.canvas.repaint(); } } @OriginalMember(owner = "client!n", name = "a", descriptor = "(B)V") public static void clear() { - aFontMetrics1 = null; - aFont1 = null; - anImage3 = null; + fontMetrics = null; + font = null; + loadingBar = null; } } diff --git a/client/src/main/java/rt4/Loc.java b/client/src/main/java/rt4/Loc.java index a7f6c1e..f72aabb 100644 --- a/client/src/main/java/rt4/Loc.java +++ b/client/src/main/java/rt4/Loc.java @@ -10,8 +10,10 @@ public final class Loc extends Entity { @OriginalMember(owner = "client!kf", name = "h", descriptor = "[I") public static final int[] LAYERS = new int[]{0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3}; + @OriginalMember(owner = "client!ci", name = "q", descriptor = "Lclient!ek;") public static SoftwareIndexedSprite aClass36_Sub1_1 = null; + @OriginalMember(owner = "client!dc", name = "U", descriptor = "Lclient!ga;") private ParticleSystem aClass47_Sub1_2; diff --git a/client/src/main/java/rt4/LoginManager.java b/client/src/main/java/rt4/LoginManager.java index 6a22815..db0d85e 100644 --- a/client/src/main/java/rt4/LoginManager.java +++ b/client/src/main/java/rt4/LoginManager.java @@ -1383,7 +1383,7 @@ public class LoginManager { @Pc(98) int local98 = (local88 / 8 << 8) + local76 / 8; for (@Pc(100) int local100 = 0; local100 < regionBitPacked.length; local100++) { if (regionBitPacked[local100] == local98 && local13[local100] != null) { - method4228(local82, local32 * 8, local21, PathFinder.collisionMaps, local39 * 8, local13[local100], local65, (local76 & 0x7) * 8, (local88 & 0x7) * 8, arg0); + SceneGraph.method4228(local82, local32 * 8, local21, PathFinder.collisionMaps, local39 * 8, local13[local100], local65, (local76 & 0x7) * 8, (local88 & 0x7) * 8, arg0); local54 = true; break; } @@ -1391,7 +1391,7 @@ public class LoginManager { } } if (!local54) { - method645(local21, local39 * 8, local32 * 8, 8, 8); + SceneGraph.method645(local21, local39 * 8, local32 * 8, 8, 8); } } } @@ -1489,227 +1489,11 @@ public class LoginManager { Protocol.anInt4247 = 0; } - @OriginalMember(owner = "client!tm", name = "a", descriptor = "(III[Lclient!mj;IB[BIIIZ)V") - public static void method4228(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) CollisionMap[] arg3, @OriginalArg(4) int arg4, @OriginalArg(6) byte[] arg5, @OriginalArg(7) int arg6, @OriginalArg(8) int arg7, @OriginalArg(9) int arg8, @OriginalArg(10) boolean arg9) { - @Pc(17) int local17; - if (!arg9) { - for (@Pc(10) int local10 = 0; local10 < 8; local10++) { - for (local17 = 0; local17 < 8; local17++) { - if (arg1 + local10 > 0 && local10 + arg1 < 103 && local17 + arg4 > 0 && arg4 + local17 < 103) { - arg3[arg2].flags[local10 + arg1][local17 + arg4] &= 0xFEFFFFFF; - } - } - } - } - @Pc(87) byte local87; - if (arg9) { - local87 = 1; - } else { - local87 = 4; - } - @Pc(96) Buffer local96 = new Buffer(arg5); - @Pc(103) int local103; - @Pc(108) int local108; - for (local17 = 0; local17 < local87; local17++) { - for (local103 = 0; local103 < 64; local103++) { - for (local108 = 0; local108 < 64; local108++) { - if (arg6 == local17 && arg8 <= local103 && arg8 + 8 > local103 && arg7 <= local108 && local108 < arg7 + 8) { - SceneGraph.readTile(0, 0, arg9, local96, method3659(arg0, local103 & 0x7, local108 & 0x7) + arg4, method4360(arg0, local108 & 0x7, local103 & 0x7) + arg1, arg0, arg2); - } else { - SceneGraph.readTile(0, 0, arg9, local96, -1, -1, 0, 0); - } - } - } - } - @Pc(232) int local232; - @Pc(417) int local417; - @Pc(255) int local255; - @Pc(266) int local266; - @Pc(316) int local316; - while (local96.data.length > local96.offset) { - local103 = local96.g1(); - if (local103 != 129) { - local96.offset--; - break; - } - for (local108 = 0; local108 < 4; local108++) { - @Pc(223) byte local223 = local96.g1b(); - @Pc(237) int local237; - if (local223 == 0) { - if (local108 <= arg6) { - local237 = arg1 + 7; - local232 = arg1; - local255 = arg4 + 7; - if (local255 < 0) { - local255 = 0; - } else if (local255 >= 104) { - local255 = 104; - } - if (local237 < 0) { - local237 = 0; - } else if (local237 >= 104) { - local237 = 104; - } - local417 = arg4; - if (arg4 < 0) { - local417 = 0; - } else if (arg4 >= 104) { - local417 = 104; - } - if (arg1 < 0) { - local232 = 0; - } else if (arg1 >= 104) { - local232 = 104; - } - while (local237 > local232) { - while (local417 < local255) { - SceneGraph.aByteArrayArrayArray13[arg2][local232][local417] = 0; - local417++; - } - local232++; - } - } - } else if (local223 == 1) { - for (local232 = 0; local232 < 64; local232 += 4) { - for (local237 = 0; local237 < 64; local237 += 4) { - @Pc(246) byte local246 = local96.g1b(); - if (local108 <= arg6) { - for (local255 = local232; local255 < local232 + 4; local255++) { - for (local266 = local237; local266 < local237 + 4; local266++) { - if (local255 >= arg8 && local255 < arg8 + 8 && local266 >= arg7 && arg7 + 8 > arg7) { - local316 = arg1 + method4360(arg0, local266 & 0x7, local255 & 0x7); - @Pc(328) int local328 = method3659(arg0, local255 & 0x7, local266 & 0x7) + arg4; - if (local316 >= 0 && local316 < 104 && local328 >= 0 && local328 < 104) { - SceneGraph.aByteArrayArrayArray13[arg2][local316][local328] = local246; - } - } - } - } - } - } - } - } else if (local223 == 2) { - } - } - } - @Pc(497) int local497; - if (GlRenderer.enabled && !arg9) { - @Pc(472) Environment local472 = null; - label207: - while (true) { - label200: - do { - while (local96.data.length > local96.offset) { - local108 = local96.g1(); - if (local108 != 0) { - if (local108 != 1) { - throw new IllegalStateException(); - } - local497 = local96.g1(); - continue label200; - } - local472 = new Environment(local96); - } - if (local472 == null) { - local472 = new Environment(); - } - FogManager.chunksAtmosphere[arg1 >> 3][arg4 >> 3] = local472; - break label207; - } while (local497 <= 0); - for (local232 = 0; local232 < local497; local232++) { - @Pc(517) Light local517 = new Light(local96); - if (local517.anInt2243 == 31) { - @Pc(529) LightType local529 = LightTypeList.get(local96.g2()); - local517.method1762(local529.anInt2865, local529.anInt2873, local529.anInt2867, local529.anInt2872); - } - local417 = local517.x >> 7; - local255 = local517.z >> 7; - if (arg6 == local517.level && local417 >= arg8 && arg8 + 8 > local417 && arg7 <= local255 && arg7 + 8 > local255) { - local266 = method3675(arg0, local517.x & 0x3FF, local517.z & 0x3FF) + (arg1 << 7); - local316 = method3388(local517.x & 0x3FF, arg0, local517.z & 0x3FF) + (arg4 << 7); - local517.x = local266; - local517.z = local316; - local417 = local517.x >> 7; - local255 = local517.z >> 7; - if (local417 >= 0 && local255 >= 0 && local417 < 104 && local255 < 104) { - local517.aBoolean125 = (SceneGraph.tileFlags[1][local417][local255] & 0x2) != 0; - local517.y = SceneGraph.tileHeights[local517.level][local417][local255] - local517.y; - LightingManager.method2389(local517); - } - } - } - } - } - local103 = arg1 + 7; - local108 = arg4 + 7; - for (local497 = arg1; local497 < local103; local497++) { - for (local232 = arg4; local232 < local108; local232++) { - SceneGraph.aByteArrayArrayArray13[arg2][local497][local232] = 0; - } - } - } - @OriginalMember(owner = "client!tb", name = "h", descriptor = "(I)I") public static int method4044() { return Cheat.shiftClick && Keyboard.pressedKeys[Keyboard.KEY_SHIFT] && MiniMenu.size > 2 ? MiniMenu.cursors[MiniMenu.size - 2] : MiniMenu.cursors[MiniMenu.size - 1]; } - @OriginalMember(owner = "client!rg", name = "a", descriptor = "(IZII)I") - public static int method4360(@OriginalArg(0) int arg0, @OriginalArg(2) int arg1, @OriginalArg(3) int arg2) { - @Pc(3) int local3 = arg0 & 0x3; - if (local3 == 0) { - return arg2; - } else if (local3 == 1) { - return arg1; - } else if (local3 == 2) { - return 7 - arg2; - } else { - return 7 - arg1; - } - } - - @OriginalMember(owner = "client!qg", name = "a", descriptor = "(IBII)I") - public static int method3659(@OriginalArg(0) int arg0, @OriginalArg(2) int arg1, @OriginalArg(3) int arg2) { - @Pc(3) int local3 = arg0 & 0x3; - if (local3 == 0) { - return arg2; - } else if (local3 == 1) { - return 7 - arg1; - } else if (local3 == 2) { - return 7 - arg2; - } else { - return arg1; - } - } - - @OriginalMember(owner = "client!qi", name = "a", descriptor = "(IIBI)I") - public static int method3675(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(3) int arg2) { - @Pc(3) int local3 = arg0 & 0x3; - if (local3 == 0) { - return arg1; - } else if (local3 == 1) { - return arg2; - } else if (local3 == 2) { - return 1023 - arg1; - } else { - return 1023 - arg2; - } - } - - @OriginalMember(owner = "client!ol", name = "a", descriptor = "(IIZI)I") - public static int method3388(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(3) int arg2) { - @Pc(3) int local3 = arg1 & 0x3; - if (local3 == 0) { - return arg2; - } else if (local3 == 1) { - return 1023 - arg0; - } else if (local3 == 2) { - return 1023 - arg2; - } else { - return arg0; - } - } - @OriginalMember(owner = "client!ij", name = "a", descriptor = "(B)V") public static void method2297() { @Pc(3) int local3 = InterfaceList.anInt4271; @@ -1866,7 +1650,7 @@ public class LoginManager { local53 = local9[local20]; if (local53 != null) { client.audioLoop(); - method2203(PathFinder.collisionMaps, arg0, SceneGraph.centralZoneX * 8 - 48, local49, local38, (SceneGraph.centralZoneZ - 6) * 8, local53); + SceneGraph.method2203(PathFinder.collisionMaps, arg0, SceneGraph.centralZoneX * 8 - 48, local49, local38, (SceneGraph.centralZoneZ - 6) * 8, local53); } } for (local20 = 0; local20 < local18; local20++) { @@ -1876,254 +1660,12 @@ public class LoginManager { if (local53 == null && SceneGraph.centralZoneZ < 800) { client.audioLoop(); for (@Pc(130) int local130 = 0; local130 < local7; local130++) { - method645(local130, local49, local38, 64, 64); + SceneGraph.method645(local130, local49, local38, 64, 64); } } } } - @OriginalMember(owner = "client!wa", name = "a", descriptor = "([Lclient!mj;ZIIIII[B)V") - public static void method2203(@OriginalArg(0) CollisionMap[] arg0, @OriginalArg(1) boolean arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(5) int arg4, @OriginalArg(6) int arg5, @OriginalArg(7) byte[] arg6) { - @Pc(14) int local14; - @Pc(21) int local21; - if (!arg1) { - for (@Pc(9) int local9 = 0; local9 < 4; local9++) { - for (local14 = 0; local14 < 64; local14++) { - for (local21 = 0; local21 < 64; local21++) { - if (arg4 + local14 > 0 && local14 + arg4 < 103 && arg3 + local21 > 0 && local21 + arg3 < 103) { - arg0[local9].flags[local14 + arg4][arg3 + local21] &= 0xFEFFFFFF; - } - } - } - } - } - @Pc(95) Buffer local95 = new Buffer(arg6); - @Pc(99) byte local99; - if (arg1) { - local99 = 1; - } else { - local99 = 4; - } - @Pc(117) int local117; - for (local14 = 0; local14 < local99; local14++) { - for (local21 = 0; local21 < 64; local21++) { - for (local117 = 0; local117 < 64; local117++) { - SceneGraph.readTile(arg2, arg5, arg1, local95, local117 + arg3, arg4 + local21, 0, local14); - } - } - } - @Pc(146) boolean local146 = false; - @Pc(243) int local243; - @Pc(188) int local188; - @Pc(190) int local190; - @Pc(194) int local194; - while (local95.offset < local95.data.length) { - local21 = local95.g1(); - if (local21 != 129) { - local95.offset--; - break; - } - for (local117 = 0; local117 < 4; local117++) { - @Pc(168) byte local168 = local95.g1b(); - if (local168 == 0) { - local243 = arg4; - if (arg4 < 0) { - local243 = 0; - } else if (arg4 >= 104) { - local243 = 104; - } - local190 = arg3; - if (arg3 < 0) { - local190 = 0; - } else if (arg3 >= 104) { - local190 = 104; - } - local188 = arg4 + 64; - local194 = arg3 + 64; - if (local194 < 0) { - local194 = 0; - } else if (local194 >= 104) { - local194 = 104; - } - if (local188 < 0) { - local188 = 0; - } else if (local188 >= 104) { - local188 = 104; - } - while (local243 < local188) { - while (local190 < local194) { - SceneGraph.aByteArrayArrayArray13[local117][local243][local190] = 0; - local190++; - } - local243++; - } - } else if (local168 == 1) { - for (local243 = 0; local243 < 64; local243 += 4) { - for (local188 = 0; local188 < 64; local188 += 4) { - @Pc(305) byte local305 = local95.g1b(); - for (local194 = local243 + arg4; local194 < arg4 + local243 + 4; local194++) { - for (@Pc(320) int local320 = arg3 + local188; local320 < arg3 + local188 + 4; local320++) { - if (local194 >= 0 && local194 < 104 && local320 >= 0 && local320 < 104) { - SceneGraph.aByteArrayArrayArray13[local117][local194][local320] = local305; - } - } - } - } - } - } else if (local168 == 2 && local117 > 0) { - local188 = arg4 + 64; - local190 = arg3; - local194 = arg3 + 64; - if (local188 < 0) { - local188 = 0; - } else if (local188 >= 104) { - local188 = 104; - } - if (arg3 < 0) { - local190 = 0; - } else if (arg3 >= 104) { - local190 = 104; - } - if (local194 < 0) { - local194 = 0; - } else if (local194 >= 104) { - local194 = 104; - } - local243 = arg4; - if (arg4 < 0) { - local243 = 0; - } else if (arg4 >= 104) { - local243 = 104; - } - while (local188 > local243) { - while (local190 < local194) { - SceneGraph.aByteArrayArrayArray13[local117][local243][local190] = SceneGraph.aByteArrayArrayArray13[local117 - 1][local243][local190]; - local190++; - } - local243++; - } - } - } - local146 = true; - } - @Pc(515) int local515; - if (GlRenderer.enabled && !arg1) { - @Pc(490) Environment local490 = null; - label270: - while (true) { - label263: - do { - while (local95.offset < local95.data.length) { - local117 = local95.g1(); - if (local117 != 0) { - if (local117 != 1) { - throw new IllegalStateException(); - } - local515 = local95.g1(); - continue label263; - } - local490 = new Environment(local95); - } - if (local490 == null) { - local490 = new Environment(); - } - for (local117 = 0; local117 < 8; local117++) { - for (local515 = 0; local515 < 8; local515++) { - local243 = local117 + (arg4 >> 3); - local188 = (arg3 >> 3) + local515; - if (local243 >= 0 && local243 < 13 && local188 >= 0 && local188 < 13) { - FogManager.chunksAtmosphere[local243][local188] = local490; - } - } - } - break label270; - } while (local515 <= 0); - for (local243 = 0; local243 < local515; local243++) { - @Pc(529) Light local529 = new Light(local95); - if (local529.anInt2243 == 31) { - @Pc(541) LightType local541 = LightTypeList.get(local95.g2()); - local529.method1762(local541.anInt2865, local541.anInt2873, local541.anInt2867, local541.anInt2872); - } - local529.z += arg3 << 7; - local529.x += arg4 << 7; - local194 = local529.z >> 7; - local190 = local529.x >> 7; - if (local190 >= 0 && local194 >= 0 && local190 < 104 && local194 < 104) { - local529.aBoolean125 = (SceneGraph.tileFlags[1][local190][local194] & 0x2) != 0; - local529.y = SceneGraph.tileHeights[local529.level][local190][local194] - local529.y; - LightingManager.method2389(local529); - } - } - } - } - if (local146) { - return; - } - for (local21 = 0; local21 < 4; local21++) { - for (local117 = 0; local117 < 16; local117++) { - for (local515 = 0; local515 < 16; local515++) { - local243 = (arg4 >> 2) + local117; - local188 = local515 + (arg3 >> 2); - if (local243 >= 0 && local243 < 26 && local188 >= 0 && local188 < 26) { - SceneGraph.aByteArrayArrayArray13[local21][local243][local188] = 0; - } - } - } - } - } - - @OriginalMember(owner = "client!bm", name = "a", descriptor = "(IBIIII)V") - public static void method645(@OriginalArg(0) int arg0, @OriginalArg(2) int arg1, @OriginalArg(3) int arg2, @OriginalArg(4) int arg3, @OriginalArg(5) int arg4) { - @Pc(3) int local3; - @Pc(10) int local10; - for (local3 = arg1; local3 <= arg3 + arg1; local3++) { - for (local10 = arg2; local10 <= arg4 + arg2; local10++) { - if (local10 >= 0 && local10 < 104 && local3 >= 0 && local3 < 104) { - SceneGraph.aByteArrayArrayArray9[arg0][local10][local3] = 127; - } - } - } - for (local3 = arg1; local3 < arg3 + arg1; local3++) { - for (local10 = arg2; local10 < arg2 + arg4; local10++) { - if (local10 >= 0 && local10 < 104 && local3 >= 0 && local3 < 104) { - SceneGraph.tileHeights[arg0][local10][local3] = arg0 <= 0 ? 0 : SceneGraph.tileHeights[arg0 - 1][local10][local3]; - } - } - } - if (arg2 > 0 && arg2 < 104) { - for (local3 = arg1 + 1; local3 < arg1 + arg3; local3++) { - if (local3 >= 0 && local3 < 104) { - SceneGraph.tileHeights[arg0][arg2][local3] = SceneGraph.tileHeights[arg0][arg2 - 1][local3]; - } - } - } - if (arg1 > 0 && arg1 < 104) { - for (local3 = arg2 + 1; local3 < arg2 + arg4; local3++) { - if (local3 >= 0 && local3 < 104) { - SceneGraph.tileHeights[arg0][local3][arg1] = SceneGraph.tileHeights[arg0][local3][arg1 - 1]; - } - } - } - if (arg2 < 0 || arg1 < 0 || arg2 >= 104 || arg1 >= 104) { - return; - } - if (arg0 == 0) { - if (arg2 > 0 && SceneGraph.tileHeights[arg0][arg2 - 1][arg1] != 0) { - SceneGraph.tileHeights[arg0][arg2][arg1] = SceneGraph.tileHeights[arg0][arg2 - 1][arg1]; - } else if (arg1 > 0 && SceneGraph.tileHeights[arg0][arg2][arg1 - 1] != 0) { - SceneGraph.tileHeights[arg0][arg2][arg1] = SceneGraph.tileHeights[arg0][arg2][arg1 - 1]; - } else if (arg2 > 0 && arg1 > 0 && SceneGraph.tileHeights[arg0][arg2 - 1][arg1 - 1] != 0) { - SceneGraph.tileHeights[arg0][arg2][arg1] = SceneGraph.tileHeights[arg0][arg2 - 1][arg1 - 1]; - } - } else if (arg2 > 0 && SceneGraph.tileHeights[arg0 - 1][arg2 - 1][arg1] != SceneGraph.tileHeights[arg0][arg2 - 1][arg1]) { - SceneGraph.tileHeights[arg0][arg2][arg1] = SceneGraph.tileHeights[arg0][arg2 - 1][arg1]; - } else if (arg1 > 0 && SceneGraph.tileHeights[arg0][arg2][arg1 - 1] != SceneGraph.tileHeights[arg0 - 1][arg2][arg1 - 1]) { - SceneGraph.tileHeights[arg0][arg2][arg1] = SceneGraph.tileHeights[arg0][arg2][arg1 - 1]; - } else if (arg2 > 0 && arg1 > 0 && SceneGraph.tileHeights[arg0][arg2 - 1][arg1 - 1] != SceneGraph.tileHeights[arg0 - 1][arg2 - 1][arg1 - 1]) { - SceneGraph.tileHeights[arg0][arg2][arg1] = SceneGraph.tileHeights[arg0][arg2 - 1][arg1 - 1]; - } - } - @OriginalMember(owner = "client!j", name = "g", descriptor = "(I)V") public static void method4637() { aClass3_Sub2_Sub1_8 = null; diff --git a/client/src/main/java/rt4/MaterialManager_Class106.java b/client/src/main/java/rt4/MaterialManager_Class106.java index 7a50b34..4df7f4c 100644 --- a/client/src/main/java/rt4/MaterialManager_Class106.java +++ b/client/src/main/java/rt4/MaterialManager_Class106.java @@ -164,7 +164,7 @@ public abstract class MaterialManager_Class106 { } for (local14 = 0; local14 < 255; local14++) { @Pc(41) int local41 = 255 - local14; - @Pc(46) int local46 = Texture.method3219(local41, local12); + @Pc(46) int local46 = RandomUtils.nextInt(local41, local12); @Pc(51) short local51 = this.aShortArray69[local46]; this.aShortArray69[local46] = this.aShortArray69[local41]; this.aShortArray69[local41] = this.aShortArray69[local41 + 256] = local51; diff --git a/client/src/main/java/rt4/RandomUtils.java b/client/src/main/java/rt4/RandomUtils.java new file mode 100644 index 0000000..bdeb287 --- /dev/null +++ b/client/src/main/java/rt4/RandomUtils.java @@ -0,0 +1,31 @@ +package rt4; + +import org.openrs2.deob.annotation.OriginalArg; +import org.openrs2.deob.annotation.OriginalMember; +import org.openrs2.deob.annotation.Pc; + +import java.util.Random; + +public class RandomUtils { + @OriginalMember(owner = "client!d", name = "c", descriptor = "(III)I") + public static int shuffle(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1) { + @Pc(11) int local11 = arg1 - 1 & arg0 >> 31; + return local11 + (arg0 + (arg0 >>> 31)) % arg1; + } + + @OriginalMember(owner = "client!ni", name = "a", descriptor = "(BILjava/util/Random;)I") + public static int nextInt(@OriginalArg(1) int arg0, @OriginalArg(2) Random arg1) { + if (arg0 <= 0) { + throw new IllegalArgumentException(); + } else if (IntUtils.isPowerOfTwo(arg0)) { + return (int) (((long) arg1.nextInt() & 0xFFFFFFFFL) * (long) arg0 >> 32); + } else { + @Pc(38) int local38 = Integer.MIN_VALUE - (int) (0x100000000L % (long) arg0); + @Pc(41) int local41; + do { + local41 = arg1.nextInt(); + } while (local38 <= local41); + return shuffle(local41, arg0); + } + } +} diff --git a/client/src/main/java/rt4/Rasteriser.java b/client/src/main/java/rt4/Rasteriser.java index 4499441..228d5fe 100644 --- a/client/src/main/java/rt4/Rasteriser.java +++ b/client/src/main/java/rt4/Rasteriser.java @@ -70,7 +70,7 @@ public final class Rasteriser { @Pc(5) int[] texels = textureProvider.method3232(textureId, brightness); if (texels == null) { int averageColor = textureProvider.getAverageColor(textureId); - fillGouraudTriangle(yA, yB, yC, xA, xB, xC, multiplyLightness(averageColor, colorA), multiplyLightness(averageColor, colorB), multiplyLightness(averageColor, colorC)); + fillGouraudTriangle(yA, yB, yC, xA, xB, xC, ColorUtils.multiplyLightness(averageColor, colorA), ColorUtils.multiplyLightness(averageColor, colorB), ColorUtils.multiplyLightness(averageColor, colorC)); return; } @@ -682,17 +682,6 @@ public final class Rasteriser { } } - @OriginalMember(owner = "client!hf", name = "a", descriptor = "(II)I") - private static int multiplyLightness(@OriginalArg(0) int a, @OriginalArg(1) int b) { - b = b * (a & 0x7F) >> 7; - if (b < 2) { - b = 2; - } else if (b > 126) { - b = 126; - } - return (a & 0xFF80) + b; - } - @OriginalMember(owner = "client!hf", name = "a", descriptor = "(F)V") public static void setBrightness(@OriginalArg(0) float brightness) { randBrightness(brightness); @@ -705,7 +694,7 @@ public final class Rasteriser { if (texels == null || alpha > 10) { int average = textureProvider.getAverageColor(textureId); textureHasTransparency = true; - fillGouraudTriangle(yA, yB, yC, xA, xB, xC, multiplyLightness(average, colorA), multiplyLightness(average, colorB), multiplyLightness(average, colorC)); + fillGouraudTriangle(yA, yB, yC, xA, xB, xC, ColorUtils.multiplyLightness(average, colorA), ColorUtils.multiplyLightness(average, colorB), ColorUtils.multiplyLightness(average, colorC)); return; } diff --git a/client/src/main/java/rt4/SceneGraph.java b/client/src/main/java/rt4/SceneGraph.java index 1f78074..2087bcb 100644 --- a/client/src/main/java/rt4/SceneGraph.java +++ b/client/src/main/java/rt4/SceneGraph.java @@ -937,7 +937,7 @@ public class SceneGraph { overlay -= rowLightness[local234]; } if (local209 >= 0 && local202 > 0) { - local142[local168][local209] = method1309(overlay / local202, local178 / local202, local173 * 256 / local200); + local142[local168][local209] = ColorUtils.method1309(overlay / local202, local178 / local202, local173 * 256 / local200); } } } @@ -1535,20 +1535,6 @@ public class SceneGraph { } } - @OriginalMember(owner = "client!ed", name = "a", descriptor = "(IIII)I") - public static int method1309(@OriginalArg(0) int arg0, @OriginalArg(2) int arg1, @OriginalArg(3) int arg2) { - if (arg0 > 243) { - arg1 >>= 0x4; - } else if (arg0 > 217) { - arg1 >>= 0x3; - } else if (arg0 > 192) { - arg1 >>= 0x2; - } else if (arg0 > 179) { - arg1 >>= 0x1; - } - return (arg0 >> 1) + (arg1 >> 5 << 7) + (arg2 >> 2 << 10); - } - @OriginalMember(owner = "client!sd", name = "c", descriptor = "(II)V") public static void method3884(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1) { @Pc(7) Tile local7 = tiles[0][arg0][arg1]; @@ -2452,7 +2438,7 @@ public class SceneGraph { local201 = local199 - (local213[local112][local133] + local213[local112][local129] + local213[local103][local129] + local213[local103][local133] >> 2); } local213 = null; - @Pc(261) long local261 = arg7 | 0x40000000 | arg8 << 7 | arg6 << 14 | arg9 << 20; + @Pc(261) long local261 = arg7 | 0x40000000 | (long) arg8 << 7 | (long) arg6 << 14 | (long) arg9 << 20; if (arg3) { local213 = surfaceTileHeights[0]; } else if (arg0 < 3) { @@ -3763,7 +3749,7 @@ public class SceneGraph { for (local155 = 0; local155 < local16; local155++) { local1358[local155] = local1348[local155].key; } - method23(local1358, local1348); + ArrayUtils.sort(local1358, local1348); return local1348; } @@ -3831,42 +3817,6 @@ public class SceneGraph { } } - @OriginalMember(owner = "client!ac", name = "a", descriptor = "([J[Ljava/lang/Object;I)V") - public static void method23(@OriginalArg(0) long[] arg0, @OriginalArg(1) Object[] arg1) { - method3909(arg0.length - 1, arg0, 0, arg1); - } - - @OriginalMember(owner = "client!sh", name = "a", descriptor = "(I[JII[Ljava/lang/Object;)V") - public static void method3909(@OriginalArg(0) int arg0, @OriginalArg(1) long[] arg1, @OriginalArg(3) int arg2, @OriginalArg(4) Object[] arg3) { - if (arg2 >= arg0) { - return; - } - @Pc(16) int local16 = arg2; - @Pc(23) int local23 = (arg2 + arg0) / 2; - @Pc(27) long local27 = arg1[local23]; - arg1[local23] = arg1[arg0]; - arg1[arg0] = local27; - @Pc(41) Object local41 = arg3[local23]; - arg3[local23] = arg3[arg0]; - arg3[arg0] = local41; - for (@Pc(53) int local53 = arg2; local53 < arg0; local53++) { - if (local27 + (long) (local53 & 0x1) > arg1[local53]) { - @Pc(72) long local72 = arg1[local53]; - arg1[local53] = arg1[local16]; - arg1[local16] = local72; - @Pc(86) Object local86 = arg3[local53]; - arg3[local53] = arg3[local16]; - arg3[local16++] = local86; - } - } - arg1[arg0] = arg1[local16]; - arg1[local16] = local27; - arg3[arg0] = arg3[local16]; - arg3[local16] = local41; - method3909(local16 - 1, arg1, arg2, arg3); - method3909(arg0, arg1, local16 + 1, arg3); - } - @OriginalMember(owner = "client!ke", name = "a", descriptor = "(Lclient!rh;IIIIIIIZ)V") public static void method2610(@OriginalArg(0) PlainTile arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) int arg5, @OriginalArg(6) int arg6, @OriginalArg(7) int arg7, @OriginalArg(8) boolean arg8) { @Pc(6) int local6; @@ -3939,7 +3889,7 @@ public class SceneGraph { } } else if (!Preferences.manyGroundTextures) { local475 = Rasteriser.textureProvider.getAverageColor(arg0.anInt4869); - Rasteriser.fillGouraudTriangle(local315, local331, local299, local307, local323, local291, method1640(local475, arg0.anInt4865), method1640(local475, arg0.anInt4864), method1640(local475, arg0.anInt4867)); + Rasteriser.fillGouraudTriangle(local315, local331, local299, local307, local323, local291, ColorUtils.multiplyLightness3(local475, arg0.anInt4865), ColorUtils.multiplyLightness3(local475, arg0.anInt4864), ColorUtils.multiplyLightness3(local475, arg0.anInt4867)); } else if (arg0.aBoolean241) { Rasteriser.fillTexturedTriangle(local315, local331, local299, local307, local323, local291, arg0.anInt4865, arg0.anInt4864, arg0.anInt4867, local97, local21, local241, local119, local49, local85, local117, local165, local261, arg0.anInt4869); } else { @@ -3966,7 +3916,7 @@ public class SceneGraph { Rasteriser.fillTexturedTriangle(local283, local299, local331, local275, local291, local323, arg0.anInt4872, arg0.anInt4867, arg0.anInt4864, local97, local21, local241, local119, local49, local85, local117, local165, local261, arg0.anInt4869); } else { local475 = Rasteriser.textureProvider.getAverageColor(arg0.anInt4869); - Rasteriser.fillGouraudTriangle(local283, local299, local331, local275, local291, local323, method1640(local475, arg0.anInt4872), method1640(local475, arg0.anInt4867), method1640(local475, arg0.anInt4864)); + Rasteriser.fillGouraudTriangle(local283, local299, local331, local275, local291, local323, ColorUtils.multiplyLightness3(local475, arg0.anInt4872), ColorUtils.multiplyLightness3(local475, arg0.anInt4867), ColorUtils.multiplyLightness3(local475, arg0.anInt4864)); } } @@ -4240,17 +4190,6 @@ public class SceneGraph { } } - @OriginalMember(owner = "client!ri", name = "a", descriptor = "(II)I") - public static int method1640(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1) { - arg1 = arg1 * (arg0 & 0x7F) >> 7; - if (arg1 < 2) { - arg1 = 2; - } else if (arg1 > 126) { - arg1 = 126; - } - return (arg0 & 0xFF80) + arg1; - } - @OriginalMember(owner = "client!lh", name = "a", descriptor = "(Lclient!fg;IIIIIIZ)V") public static void method2762(@OriginalArg(0) ShapedTile arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) int arg5, @OriginalArg(6) int arg6, @OriginalArg(7) boolean arg7) { @Pc(3) int local3 = arg0.anIntArray168.length; @@ -4303,7 +4242,7 @@ public class SceneGraph { } } else if (!Preferences.manyGroundTextures) { @Pc(373) int local373 = Rasteriser.textureProvider.getAverageColor(arg0.anIntArray161[local5]); - Rasteriser.fillGouraudTriangle(local156, local160, local164, local39, local148, local152, method1640(local373, arg0.anIntArray167[local5]), method1640(local373, arg0.anIntArray172[local5]), method1640(local373, arg0.anIntArray171[local5])); + Rasteriser.fillGouraudTriangle(local156, local160, local164, local39, local148, local152, ColorUtils.multiplyLightness3(local373, arg0.anIntArray167[local5]), ColorUtils.multiplyLightness3(local373, arg0.anIntArray172[local5]), ColorUtils.multiplyLightness3(local373, arg0.anIntArray171[local5])); } else if (arg0.aBoolean113) { Rasteriser.fillTexturedTriangle(local156, local160, local164, local39, local148, local152, arg0.anIntArray167[local5], arg0.anIntArray172[local5], arg0.anIntArray171[local5], anIntArray159[0], anIntArray159[1], anIntArray159[3], anIntArray170[0], anIntArray170[1], anIntArray170[3], anIntArray169[0], anIntArray169[1], anIntArray169[3], arg0.anIntArray161[local5]); } else { @@ -4816,7 +4755,7 @@ public class SceneGraph { for (local38 = 0; local38 < local12; local38++) { local2826[local38] = local2823[local38].key; } - method23(local2826, local2823); + ArrayUtils.sort(local2826, local2823); return local2823; } @@ -4833,7 +4772,7 @@ public class SceneGraph { @OriginalMember(owner = "client!bi", name = "a", descriptor = "(IIBI)I") public static int method588(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(3) int arg2) { - @Pc(19) int local19 = Rasteriser.palette[SoftwareModel.method4585(arg1, arg2)]; + @Pc(19) int local19 = Rasteriser.palette[ColorUtils.multiplyLightness2(arg1, arg2)]; if (arg0 > 0) { @Pc(31) int local31 = Rasteriser.textureProvider.method3238(arg0 & 0xFFFF); @Pc(49) int local49; @@ -5074,4 +5013,462 @@ public class SceneGraph { return local50 + (local65 >> 7); } } + + @OriginalMember(owner = "client!bm", name = "a", descriptor = "(IBIIII)V") + public static void method645(@OriginalArg(0) int arg0, @OriginalArg(2) int arg1, @OriginalArg(3) int arg2, @OriginalArg(4) int arg3, @OriginalArg(5) int arg4) { + @Pc(3) int local3; + @Pc(10) int local10; + for (local3 = arg1; local3 <= arg3 + arg1; local3++) { + for (local10 = arg2; local10 <= arg4 + arg2; local10++) { + if (local10 >= 0 && local10 < 104 && local3 >= 0 && local3 < 104) { + aByteArrayArrayArray9[arg0][local10][local3] = 127; + } + } + } + for (local3 = arg1; local3 < arg3 + arg1; local3++) { + for (local10 = arg2; local10 < arg2 + arg4; local10++) { + if (local10 >= 0 && local10 < 104 && local3 >= 0 && local3 < 104) { + tileHeights[arg0][local10][local3] = arg0 <= 0 ? 0 : tileHeights[arg0 - 1][local10][local3]; + } + } + } + if (arg2 > 0 && arg2 < 104) { + for (local3 = arg1 + 1; local3 < arg1 + arg3; local3++) { + if (local3 >= 0 && local3 < 104) { + tileHeights[arg0][arg2][local3] = tileHeights[arg0][arg2 - 1][local3]; + } + } + } + if (arg1 > 0 && arg1 < 104) { + for (local3 = arg2 + 1; local3 < arg2 + arg4; local3++) { + if (local3 >= 0 && local3 < 104) { + tileHeights[arg0][local3][arg1] = tileHeights[arg0][local3][arg1 - 1]; + } + } + } + if (arg2 < 0 || arg1 < 0 || arg2 >= 104 || arg1 >= 104) { + return; + } + if (arg0 == 0) { + if (arg2 > 0 && tileHeights[arg0][arg2 - 1][arg1] != 0) { + tileHeights[arg0][arg2][arg1] = tileHeights[arg0][arg2 - 1][arg1]; + } else if (arg1 > 0 && tileHeights[arg0][arg2][arg1 - 1] != 0) { + tileHeights[arg0][arg2][arg1] = tileHeights[arg0][arg2][arg1 - 1]; + } else if (arg2 > 0 && arg1 > 0 && tileHeights[arg0][arg2 - 1][arg1 - 1] != 0) { + tileHeights[arg0][arg2][arg1] = tileHeights[arg0][arg2 - 1][arg1 - 1]; + } + } else if (arg2 > 0 && tileHeights[arg0 - 1][arg2 - 1][arg1] != tileHeights[arg0][arg2 - 1][arg1]) { + tileHeights[arg0][arg2][arg1] = tileHeights[arg0][arg2 - 1][arg1]; + } else if (arg1 > 0 && tileHeights[arg0][arg2][arg1 - 1] != tileHeights[arg0 - 1][arg2][arg1 - 1]) { + tileHeights[arg0][arg2][arg1] = tileHeights[arg0][arg2][arg1 - 1]; + } else if (arg2 > 0 && arg1 > 0 && tileHeights[arg0][arg2 - 1][arg1 - 1] != tileHeights[arg0 - 1][arg2 - 1][arg1 - 1]) { + tileHeights[arg0][arg2][arg1] = tileHeights[arg0][arg2 - 1][arg1 - 1]; + } + } + + @OriginalMember(owner = "client!wa", name = "a", descriptor = "([Lclient!mj;ZIIIII[B)V") + public static void method2203(@OriginalArg(0) CollisionMap[] arg0, @OriginalArg(1) boolean arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(5) int arg4, @OriginalArg(6) int arg5, @OriginalArg(7) byte[] arg6) { + @Pc(14) int local14; + @Pc(21) int local21; + if (!arg1) { + for (@Pc(9) int local9 = 0; local9 < 4; local9++) { + for (local14 = 0; local14 < 64; local14++) { + for (local21 = 0; local21 < 64; local21++) { + if (arg4 + local14 > 0 && local14 + arg4 < 103 && arg3 + local21 > 0 && local21 + arg3 < 103) { + arg0[local9].flags[local14 + arg4][arg3 + local21] &= 0xFEFFFFFF; + } + } + } + } + } + @Pc(95) Buffer local95 = new Buffer(arg6); + @Pc(99) byte local99; + if (arg1) { + local99 = 1; + } else { + local99 = 4; + } + @Pc(117) int local117; + for (local14 = 0; local14 < local99; local14++) { + for (local21 = 0; local21 < 64; local21++) { + for (local117 = 0; local117 < 64; local117++) { + readTile(arg2, arg5, arg1, local95, local117 + arg3, arg4 + local21, 0, local14); + } + } + } + @Pc(146) boolean local146 = false; + @Pc(243) int local243; + @Pc(188) int local188; + @Pc(190) int local190; + @Pc(194) int local194; + while (local95.offset < local95.data.length) { + local21 = local95.g1(); + if (local21 != 129) { + local95.offset--; + break; + } + for (local117 = 0; local117 < 4; local117++) { + @Pc(168) byte local168 = local95.g1b(); + if (local168 == 0) { + local243 = arg4; + if (arg4 < 0) { + local243 = 0; + } else if (arg4 >= 104) { + local243 = 104; + } + local190 = arg3; + if (arg3 < 0) { + local190 = 0; + } else if (arg3 >= 104) { + local190 = 104; + } + local188 = arg4 + 64; + local194 = arg3 + 64; + if (local194 < 0) { + local194 = 0; + } else if (local194 >= 104) { + local194 = 104; + } + if (local188 < 0) { + local188 = 0; + } else if (local188 >= 104) { + local188 = 104; + } + while (local243 < local188) { + while (local190 < local194) { + aByteArrayArrayArray13[local117][local243][local190] = 0; + local190++; + } + local243++; + } + } else if (local168 == 1) { + for (local243 = 0; local243 < 64; local243 += 4) { + for (local188 = 0; local188 < 64; local188 += 4) { + @Pc(305) byte local305 = local95.g1b(); + for (local194 = local243 + arg4; local194 < arg4 + local243 + 4; local194++) { + for (@Pc(320) int local320 = arg3 + local188; local320 < arg3 + local188 + 4; local320++) { + if (local194 >= 0 && local194 < 104 && local320 >= 0 && local320 < 104) { + aByteArrayArrayArray13[local117][local194][local320] = local305; + } + } + } + } + } + } else if (local168 == 2 && local117 > 0) { + local188 = arg4 + 64; + local190 = arg3; + local194 = arg3 + 64; + if (local188 < 0) { + local188 = 0; + } else if (local188 >= 104) { + local188 = 104; + } + if (arg3 < 0) { + local190 = 0; + } else if (arg3 >= 104) { + local190 = 104; + } + if (local194 < 0) { + local194 = 0; + } else if (local194 >= 104) { + local194 = 104; + } + local243 = arg4; + if (arg4 < 0) { + local243 = 0; + } else if (arg4 >= 104) { + local243 = 104; + } + while (local188 > local243) { + while (local190 < local194) { + aByteArrayArrayArray13[local117][local243][local190] = aByteArrayArrayArray13[local117 - 1][local243][local190]; + local190++; + } + local243++; + } + } + } + local146 = true; + } + @Pc(515) int local515; + if (GlRenderer.enabled && !arg1) { + @Pc(490) Environment local490 = null; + label270: + while (true) { + label263: + do { + while (local95.offset < local95.data.length) { + local117 = local95.g1(); + if (local117 != 0) { + if (local117 != 1) { + throw new IllegalStateException(); + } + local515 = local95.g1(); + continue label263; + } + local490 = new Environment(local95); + } + if (local490 == null) { + local490 = new Environment(); + } + for (local117 = 0; local117 < 8; local117++) { + for (local515 = 0; local515 < 8; local515++) { + local243 = local117 + (arg4 >> 3); + local188 = (arg3 >> 3) + local515; + if (local243 >= 0 && local243 < 13 && local188 >= 0 && local188 < 13) { + FogManager.chunksAtmosphere[local243][local188] = local490; + } + } + } + break label270; + } while (local515 <= 0); + for (local243 = 0; local243 < local515; local243++) { + @Pc(529) Light local529 = new Light(local95); + if (local529.anInt2243 == 31) { + @Pc(541) LightType local541 = LightTypeList.get(local95.g2()); + local529.method1762(local541.anInt2865, local541.anInt2873, local541.anInt2867, local541.anInt2872); + } + local529.z += arg3 << 7; + local529.x += arg4 << 7; + local194 = local529.z >> 7; + local190 = local529.x >> 7; + if (local190 >= 0 && local194 >= 0 && local190 < 104 && local194 < 104) { + local529.aBoolean125 = (tileFlags[1][local190][local194] & 0x2) != 0; + local529.y = tileHeights[local529.level][local190][local194] - local529.y; + LightingManager.method2389(local529); + } + } + } + } + if (local146) { + return; + } + for (local21 = 0; local21 < 4; local21++) { + for (local117 = 0; local117 < 16; local117++) { + for (local515 = 0; local515 < 16; local515++) { + local243 = (arg4 >> 2) + local117; + local188 = local515 + (arg3 >> 2); + if (local243 >= 0 && local243 < 26 && local188 >= 0 && local188 < 26) { + aByteArrayArrayArray13[local21][local243][local188] = 0; + } + } + } + } + } + + @OriginalMember(owner = "client!tm", name = "a", descriptor = "(III[Lclient!mj;IB[BIIIZ)V") + public static void method4228(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) CollisionMap[] arg3, @OriginalArg(4) int arg4, @OriginalArg(6) byte[] arg5, @OriginalArg(7) int arg6, @OriginalArg(8) int arg7, @OriginalArg(9) int arg8, @OriginalArg(10) boolean arg9) { + @Pc(17) int local17; + if (!arg9) { + for (@Pc(10) int local10 = 0; local10 < 8; local10++) { + for (local17 = 0; local17 < 8; local17++) { + if (arg1 + local10 > 0 && local10 + arg1 < 103 && local17 + arg4 > 0 && arg4 + local17 < 103) { + arg3[arg2].flags[local10 + arg1][local17 + arg4] &= 0xFEFFFFFF; + } + } + } + } + @Pc(87) byte local87; + if (arg9) { + local87 = 1; + } else { + local87 = 4; + } + @Pc(96) Buffer local96 = new Buffer(arg5); + @Pc(103) int local103; + @Pc(108) int local108; + for (local17 = 0; local17 < local87; local17++) { + for (local103 = 0; local103 < 64; local103++) { + for (local108 = 0; local108 < 64; local108++) { + if (arg6 == local17 && arg8 <= local103 && arg8 + 8 > local103 && arg7 <= local108 && local108 < arg7 + 8) { + readTile(0, 0, arg9, local96, rotateZ(arg0, local103 & 0x7, local108 & 0x7) + arg4, rotateX(arg0, local108 & 0x7, local103 & 0x7) + arg1, arg0, arg2); + } else { + readTile(0, 0, arg9, local96, -1, -1, 0, 0); + } + } + } + } + @Pc(232) int local232; + @Pc(417) int local417; + @Pc(255) int local255; + @Pc(266) int local266; + @Pc(316) int local316; + while (local96.data.length > local96.offset) { + local103 = local96.g1(); + if (local103 != 129) { + local96.offset--; + break; + } + for (local108 = 0; local108 < 4; local108++) { + @Pc(223) byte local223 = local96.g1b(); + @Pc(237) int local237; + if (local223 == 0) { + if (local108 <= arg6) { + local237 = arg1 + 7; + local232 = arg1; + local255 = arg4 + 7; + if (local255 < 0) { + local255 = 0; + } else if (local255 >= 104) { + local255 = 104; + } + if (local237 < 0) { + local237 = 0; + } else if (local237 >= 104) { + local237 = 104; + } + local417 = arg4; + if (arg4 < 0) { + local417 = 0; + } else if (arg4 >= 104) { + local417 = 104; + } + if (arg1 < 0) { + local232 = 0; + } else if (arg1 >= 104) { + local232 = 104; + } + while (local237 > local232) { + while (local417 < local255) { + aByteArrayArrayArray13[arg2][local232][local417] = 0; + local417++; + } + local232++; + } + } + } else if (local223 == 1) { + for (local232 = 0; local232 < 64; local232 += 4) { + for (local237 = 0; local237 < 64; local237 += 4) { + @Pc(246) byte local246 = local96.g1b(); + if (local108 <= arg6) { + for (local255 = local232; local255 < local232 + 4; local255++) { + for (local266 = local237; local266 < local237 + 4; local266++) { + if (local255 >= arg8 && local255 < arg8 + 8 && local266 >= arg7 && arg7 + 8 > arg7) { + local316 = arg1 + rotateX(arg0, local266 & 0x7, local255 & 0x7); + @Pc(328) int local328 = rotateZ(arg0, local255 & 0x7, local266 & 0x7) + arg4; + if (local316 >= 0 && local316 < 104 && local328 >= 0 && local328 < 104) { + aByteArrayArrayArray13[arg2][local316][local328] = local246; + } + } + } + } + } + } + } + } else if (local223 == 2) { + } + } + } + @Pc(497) int local497; + if (GlRenderer.enabled && !arg9) { + @Pc(472) Environment local472 = null; + label207: + while (true) { + label200: + do { + while (local96.data.length > local96.offset) { + local108 = local96.g1(); + if (local108 != 0) { + if (local108 != 1) { + throw new IllegalStateException(); + } + local497 = local96.g1(); + continue label200; + } + local472 = new Environment(local96); + } + if (local472 == null) { + local472 = new Environment(); + } + FogManager.chunksAtmosphere[arg1 >> 3][arg4 >> 3] = local472; + break label207; + } while (local497 <= 0); + for (local232 = 0; local232 < local497; local232++) { + @Pc(517) Light local517 = new Light(local96); + if (local517.anInt2243 == 31) { + @Pc(529) LightType local529 = LightTypeList.get(local96.g2()); + local517.method1762(local529.anInt2865, local529.anInt2873, local529.anInt2867, local529.anInt2872); + } + local417 = local517.x >> 7; + local255 = local517.z >> 7; + if (arg6 == local517.level && local417 >= arg8 && arg8 + 8 > local417 && arg7 <= local255 && arg7 + 8 > local255) { + local266 = rotateXFine(arg0, local517.x & 0x3FF, local517.z & 0x3FF) + (arg1 << 7); + local316 = rotateZFine(local517.x & 0x3FF, arg0, local517.z & 0x3FF) + (arg4 << 7); + local517.x = local266; + local517.z = local316; + local417 = local517.x >> 7; + local255 = local517.z >> 7; + if (local417 >= 0 && local255 >= 0 && local417 < 104 && local255 < 104) { + local517.aBoolean125 = (tileFlags[1][local417][local255] & 0x2) != 0; + local517.y = tileHeights[local517.level][local417][local255] - local517.y; + LightingManager.method2389(local517); + } + } + } + } + } + local103 = arg1 + 7; + local108 = arg4 + 7; + for (local497 = arg1; local497 < local103; local497++) { + for (local232 = arg4; local232 < local108; local232++) { + aByteArrayArrayArray13[arg2][local497][local232] = 0; + } + } + } + + @OriginalMember(owner = "client!rg", name = "a", descriptor = "(IZII)I") + public static int rotateX(@OriginalArg(0) int arg0, @OriginalArg(2) int z, @OriginalArg(3) int x) { + @Pc(3) int angle = arg0 & 0x3; + if (angle == 0) { + return x; + } else if (angle == 1) { + return z; + } else if (angle == 2) { + return 7 - x; + } else { + return 7 - z; + } + } + + @OriginalMember(owner = "client!qg", name = "a", descriptor = "(IBII)I") + public static int rotateZ(@OriginalArg(0) int arg0, @OriginalArg(2) int x, @OriginalArg(3) int z) { + @Pc(3) int angle = arg0 & 0x3; + if (angle == 0) { + return z; + } else if (angle == 1) { + return 7 - x; + } else if (angle == 2) { + return 7 - z; + } else { + return x; + } + } + + @OriginalMember(owner = "client!qi", name = "a", descriptor = "(IIBI)I") + public static int rotateXFine(@OriginalArg(0) int arg0, @OriginalArg(1) int x, @OriginalArg(3) int z) { + @Pc(3) int angle = arg0 & 0x3; + if (angle == 0) { + return x; + } else if (angle == 1) { + return z; + } else if (angle == 2) { + return 1023 - x; + } else { + return 1023 - z; + } + } + + @OriginalMember(owner = "client!ol", name = "a", descriptor = "(IIZI)I") + public static int rotateZFine(@OriginalArg(0) int x, @OriginalArg(1) int arg1, @OriginalArg(3) int z) { + @Pc(3) int angle = arg1 & 0x3; + if (angle == 0) { + return z; + } else if (angle == 1) { + return 1023 - x; + } else if (angle == 2) { + return 1023 - z; + } else { + return x; + } + } } diff --git a/client/src/main/java/rt4/SoftwareModel.java b/client/src/main/java/rt4/SoftwareModel.java index d800999..4e12b97 100644 --- a/client/src/main/java/rt4/SoftwareModel.java +++ b/client/src/main/java/rt4/SoftwareModel.java @@ -340,25 +340,25 @@ public final class SoftwareModel extends Model { local435 = arg0.aClass57Array2[this.anIntArray534[local133]]; } local468 = arg1 + (arg3 * local435.x + arg4 * local435.y + arg5 * local435.z) / (local108 * local435.triangles) << 17; - this.anIntArray533[local133] = local468 | method4585(local416, local468 >> 17); + this.anIntArray533[local133] = local468 | ColorUtils.multiplyLightness2(local416, local468 >> 17); if (arg0.aClass57Array2 == null || arg0.aClass57Array2[this.anIntArray524[local133]] == null) { local435 = arg0.vertexNormals[this.anIntArray524[local133]]; } else { local435 = arg0.aClass57Array2[this.anIntArray524[local133]]; } local468 = arg1 + (arg3 * local435.x + arg4 * local435.y + arg5 * local435.z) / (local108 * local435.triangles) << 17; - this.anIntArray523[local133] = local468 | method4585(local416, local468 >> 17); + this.anIntArray523[local133] = local468 | ColorUtils.multiplyLightness2(local416, local468 >> 17); if (arg0.aClass57Array2 == null || arg0.aClass57Array2[this.anIntArray529[local133]] == null) { local435 = arg0.vertexNormals[this.anIntArray529[local133]]; } else { local435 = arg0.aClass57Array2[this.anIntArray529[local133]]; } local468 = arg1 + (arg3 * local435.x + arg4 * local435.y + arg5 * local435.z) / (local108 * local435.triangles) << 17; - this.anIntArray532[local133] = local468 | method4585(local416, local468 >> 17); + this.anIntArray532[local133] = local468 | ColorUtils.multiplyLightness2(local416, local468 >> 17); } else if (local366 == 1) { local614 = arg0.triangleNormals[local133]; local468 = arg1 + (arg3 * local614.anInt4769 + arg4 * local614.anInt4770 + arg5 * local614.anInt4767) / (local108 + local108 / 2) << 17; - this.anIntArray533[local133] = local468 | method4585(arg0.triangleColors[local133] & 0xFFFF, local468 >> 17); + this.anIntArray533[local133] = local468 | ColorUtils.multiplyLightness2(arg0.triangleColors[local133] & 0xFFFF, local468 >> 17); this.anIntArray532[local133] = -1; } else if (local366 == 3) { this.anIntArray533[local133] = 128; @@ -373,25 +373,25 @@ public final class SoftwareModel extends Model { local435 = arg0.aClass57Array2[this.anIntArray534[local133]]; } local468 = arg1 + (arg3 * local435.x + arg4 * local435.y + arg5 * local435.z) / (local108 * local435.triangles); - this.anIntArray533[local133] = method4582(local468); + this.anIntArray533[local133] = ColorUtils.method4582(local468); if (arg0.aClass57Array2 == null || arg0.aClass57Array2[this.anIntArray524[local133]] == null) { local435 = arg0.vertexNormals[this.anIntArray524[local133]]; } else { local435 = arg0.aClass57Array2[this.anIntArray524[local133]]; } local468 = arg1 + (arg3 * local435.x + arg4 * local435.y + arg5 * local435.z) / (local108 * local435.triangles); - this.anIntArray523[local133] = method4582(local468); + this.anIntArray523[local133] = ColorUtils.method4582(local468); if (arg0.aClass57Array2 == null || arg0.aClass57Array2[this.anIntArray529[local133]] == null) { local435 = arg0.vertexNormals[this.anIntArray529[local133]]; } else { local435 = arg0.aClass57Array2[this.anIntArray529[local133]]; } local468 = arg1 + (arg3 * local435.x + arg4 * local435.y + arg5 * local435.z) / (local108 * local435.triangles); - this.anIntArray532[local133] = method4582(local468); + this.anIntArray532[local133] = ColorUtils.method4582(local468); } else if (local366 == 1) { local614 = arg0.triangleNormals[local133]; local468 = arg1 + (arg3 * local614.anInt4769 + arg4 * local614.anInt4770 + arg5 * local614.anInt4767) / (local108 + local108 / 2); - this.anIntArray533[local133] = method4582(local468); + this.anIntArray533[local133] = ColorUtils.method4582(local468); this.anIntArray532[local133] = -1; } else { this.anIntArray532[local133] = -2; @@ -538,58 +538,6 @@ public final class SoftwareModel extends Model { anIntArrayArray43 = new int[32][512]; } - @OriginalMember(owner = "client!w", name = "f", descriptor = "(I)I") - public static int method4582(@OriginalArg(0) int arg0) { - if (arg0 < 2) { - arg0 = 2; - } else if (arg0 > 126) { - arg0 = 126; - } - return arg0; - } - - @OriginalMember(owner = "client!w", name = "a", descriptor = "(II)I") - public static int method4585(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1) { - arg1 = arg1 * (arg0 & 0x7F) >> 7; - if (arg1 < 2) { - arg1 = 2; - } else if (arg1 > 126) { - arg1 = 126; - } - return (arg0 & 0xFF80) + arg1; - } - - @OriginalMember(owner = "client!nj", name = "a", descriptor = "(IIZ[I[I)V") - public static void method3223(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(3) int[] arg2, @OriginalArg(4) int[] arg3) { - if (arg0 >= arg1) { - return; - } - @Pc(22) int local22 = (arg1 + arg0) / 2; - @Pc(24) int local24 = arg0; - @Pc(28) int local28 = arg2[local22]; - arg2[local22] = arg2[arg1]; - arg2[arg1] = local28; - @Pc(42) int local42 = arg3[local22]; - arg3[local22] = arg3[arg1]; - arg3[arg1] = local42; - for (@Pc(54) int local54 = arg0; local54 < arg1; local54++) { - if (arg2[local54] > (local54 & 0x1) + local28) { - @Pc(79) int local79 = arg2[local54]; - arg2[local54] = arg2[local24]; - arg2[local24] = local79; - @Pc(93) int local93 = arg3[local54]; - arg3[local54] = arg3[local24]; - arg3[local24++] = local93; - } - } - arg2[arg1] = arg2[local24]; - arg2[local24] = local28; - arg3[arg1] = arg3[local24]; - arg3[local24] = local42; - method3223(arg0, local24 - 1, arg2, arg3); - method3223(local24 + 1, arg1, arg2, arg3); - } - @OriginalMember(owner = "client!w", name = "e", descriptor = "(I)V") private void method4579(@OriginalArg(0) int arg0) { if (aBooleanArray132[arg0]) { @@ -650,14 +598,14 @@ public final class SoftwareModel extends Model { @Pc(38) int local38; if (this.anIntArray532[local1] == -1) { local38 = this.anIntArray533[local1] & 0xFFFE0000; - this.anIntArray533[local1] = local38 | method4585(local25, local38 >> 17); + this.anIntArray533[local1] = local38 | ColorUtils.multiplyLightness2(local25, local38 >> 17); } else if (this.anIntArray532[local1] != -2) { local38 = this.anIntArray533[local1] & 0xFFFE0000; - this.anIntArray533[local1] = local38 | method4585(local25, local38 >> 17); + this.anIntArray533[local1] = local38 | ColorUtils.multiplyLightness2(local25, local38 >> 17); local38 = this.anIntArray523[local1] & 0xFFFE0000; - this.anIntArray523[local1] = local38 | method4585(local25, local38 >> 17); + this.anIntArray523[local1] = local38 | ColorUtils.multiplyLightness2(local25, local38 >> 17); local38 = this.anIntArray532[local1] & 0xFFFE0000; - this.anIntArray532[local1] = local38 | method4585(local25, local38 >> 17); + this.anIntArray532[local1] = local38 | ColorUtils.multiplyLightness2(local25, local38 >> 17); } } } @@ -1689,7 +1637,7 @@ public final class SoftwareModel extends Model { } } if (aBoolean307) { - method3223(0, local5 - 1, anIntArray550, anIntArray549); + ArrayUtils.sort(0, local5 - 1, anIntArray550, anIntArray549); if (this.aByteArray73 == null) { for (local11 = 0; local11 < local5; local11++) { this.method4579(anIntArray549[local11]); diff --git a/client/src/main/java/rt4/Texture.java b/client/src/main/java/rt4/Texture.java index 780b5e7..f34ddf8 100644 --- a/client/src/main/java/rt4/Texture.java +++ b/client/src/main/java/rt4/Texture.java @@ -5,8 +5,6 @@ import org.openrs2.deob.annotation.OriginalClass; import org.openrs2.deob.annotation.OriginalMember; import org.openrs2.deob.annotation.Pc; -import java.util.Random; - @OriginalClass("client!lc") public final class Texture { @@ -240,33 +238,6 @@ public final class Texture { heightMask = height - 1; } - @OriginalMember(owner = "client!ni", name = "a", descriptor = "(BILjava/util/Random;)I") - public static int method3219(@OriginalArg(1) int arg0, @OriginalArg(2) Random arg1) { - if (arg0 <= 0) { - throw new IllegalArgumentException(); - } else if (method3702(arg0)) { - return (int) (((long) arg1.nextInt() & 0xFFFFFFFFL) * (long) arg0 >> 32); - } else { - @Pc(38) int local38 = Integer.MIN_VALUE - (int) (0x100000000L % (long) arg0); - @Pc(41) int local41; - do { - local41 = arg1.nextInt(); - } while (local38 <= local41); - return method990(local41, arg0); - } - } - - @OriginalMember(owner = "client!d", name = "c", descriptor = "(III)I") - public static int method990(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1) { - @Pc(11) int local11 = arg1 - 1 & arg0 >> 31; - return local11 + (arg0 + (arg0 >>> 31)) % arg1; - } - - @OriginalMember(owner = "client!ra", name = "a", descriptor = "(BI)Z") - public static boolean method3702(@OriginalArg(1) int arg0) { - return arg0 == (-arg0 & arg0); - } - @OriginalMember(owner = "client!lc", name = "a", descriptor = "(IZIDILclient!ve;Lclient!m;Z)[I") public final int[] method2725(@OriginalArg(0) int arg0, @OriginalArg(1) boolean arg1, @OriginalArg(2) int arg2, @OriginalArg(3) double arg3, @OriginalArg(5) Js5 arg4, @OriginalArg(6) TextureProvider arg5, @OriginalArg(7) boolean arg6) { setBrightness(arg3); diff --git a/client/src/main/java/rt4/TextureOp15.java b/client/src/main/java/rt4/TextureOp15.java index 0795152..3c4b446 100644 --- a/client/src/main/java/rt4/TextureOp15.java +++ b/client/src/main/java/rt4/TextureOp15.java @@ -61,7 +61,7 @@ public final class TextureOp15 extends TextureOp { } for (local29 = 0; local29 < 255; local29++) { @Pc(53) int local53 = 255 - local29; - @Pc(58) int local58 = Texture.method3219(local53, local24); + @Pc(58) int local58 = RandomUtils.nextInt(local53, local24); @Pc(62) byte local62 = local27[local58]; local27[local58] = local27[local53]; local27[local53] = local27[511 - local29] = local62; @@ -78,7 +78,7 @@ public final class TextureOp15 extends TextureOp { this.aShortArray35 = new short[512]; if (this.anInt2636 > 0) { for (@Pc(26) int local26 = 0; local26 < 512; local26++) { - this.aShortArray35[local26] = (short) Texture.method3219(this.anInt2636, local12); + this.aShortArray35[local26] = (short) RandomUtils.nextInt(this.anInt2636, local12); } } } diff --git a/client/src/main/java/rt4/TextureOp28.java b/client/src/main/java/rt4/TextureOp28.java index 68a00c0..160195e 100644 --- a/client/src/main/java/rt4/TextureOp28.java +++ b/client/src/main/java/rt4/TextureOp28.java @@ -81,8 +81,8 @@ public final class TextureOp28 extends TextureOp { @Pc(113) Random local113 = new Random(this.anInt4354); while (true) { while (true) { - @Pc(123) int local123 = local54 + Texture.method3219(local61 - local54, local113); - @Pc(133) int local133 = Texture.method3219(local68 - local75, local113) + local75; + @Pc(123) int local123 = local54 + RandomUtils.nextInt(local61 - local54, local113); + @Pc(133) int local133 = RandomUtils.nextInt(local68 - local75, local113) + local75; @Pc(137) int local137 = local31 + local123; if (Texture.width < local137) { local137 = Texture.width; @@ -174,7 +174,7 @@ public final class TextureOp28 extends TextureOp { local47 = 0; local407[2] = local133 + local158; local407[1] = local137; - local37 = Texture.method3219(Texture.width, local113); + local37 = RandomUtils.nextInt(Texture.width, local113); local35 = local37 - local33; @Pc(439) int[][] local439 = local102; local31 = 0; @@ -211,9 +211,9 @@ public final class TextureOp28 extends TextureOp { @OriginalMember(owner = "client!ol", name = "a", descriptor = "(ILjava/util/Random;IIBI[[I)V") private void method3386(@OriginalArg(0) int arg0, @OriginalArg(1) Random arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(5) int arg4, @OriginalArg(6) int[][] arg5) { - @Pc(26) int local26 = this.anInt4360 > 0 ? 4096 - Texture.method3219(this.anInt4360, arg1) : 4096; + @Pc(26) int local26 = this.anInt4360 > 0 ? 4096 - RandomUtils.nextInt(this.anInt4360, arg1) : 4096; @Pc(34) int local34 = this.anInt4344 * this.anInt4356 >> 12; - @Pc(47) int local47 = this.anInt4356 - (local34 > 0 ? Texture.method3219(local34, arg1) : 0); + @Pc(47) int local47 = this.anInt4356 - (local34 > 0 ? RandomUtils.nextInt(local34, arg1) : 0); if (Texture.width <= arg2) { arg2 -= Texture.width; } diff --git a/client/src/main/java/rt4/TextureOp29.java b/client/src/main/java/rt4/TextureOp29.java index ffb1194..73ea927 100644 --- a/client/src/main/java/rt4/TextureOp29.java +++ b/client/src/main/java/rt4/TextureOp29.java @@ -46,7 +46,7 @@ public final class TextureOp29 extends TextureOp { if (arg3 >= anInt5773 && arg3 <= anInt2869) { @Pc(15) int local15 = IntUtils.clamp(anInt5063, arg0, anInt4164); @Pc(21) int local21 = IntUtils.clamp(anInt5063, arg2, anInt4164); - TextureOp29SubOp4.method3826(arg1, arg3, local21, local15); + TextureOp29SubOp4.fillRange(arg1, arg3, local21, local15); } } diff --git a/client/src/main/java/rt4/TextureOp29SubOp4.java b/client/src/main/java/rt4/TextureOp29SubOp4.java index 212ef9c..62ba9c8 100644 --- a/client/src/main/java/rt4/TextureOp29SubOp4.java +++ b/client/src/main/java/rt4/TextureOp29SubOp4.java @@ -150,7 +150,7 @@ public final class TextureOp29SubOp4 extends TextureOp29SubOp { } @OriginalMember(owner = "client!sa", name = "a", descriptor = "(IIIBI)V") - public static void method3826(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(4) int arg3) { + public static void fillRange(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(4) int arg3) { if (arg3 <= arg2) { ArrayUtils.fillRange(anIntArrayArray10[arg1], arg3, arg2, arg0); } else { @@ -181,7 +181,7 @@ public final class TextureOp29SubOp4 extends TextureOp29SubOp { method2054(arg2, arg4, arg1, arg0); } } else if (local9 == 0) { - method3826(arg0, arg2, arg3, arg4); + fillRange(arg0, arg2, arg3, arg4); } else { if (local9 < 0) { local9 = -local9; diff --git a/client/src/main/java/rt4/TextureOp38.java b/client/src/main/java/rt4/TextureOp38.java index d201301..e35fa9a 100644 --- a/client/src/main/java/rt4/TextureOp38.java +++ b/client/src/main/java/rt4/TextureOp38.java @@ -61,10 +61,10 @@ public final class TextureOp38 extends TextureOp { @Pc(33) int[][] local33 = this.monochromeImageCache.method3446(); @Pc(40) Random local40 = new Random(this.anInt5716); for (@Pc(42) int local42 = 0; local42 < this.anInt5712; local42++) { - @Pc(64) int local64 = this.anInt5714 > 0 ? this.anInt5709 + Texture.method3219(this.anInt5714, local40) - local28 : this.anInt5709; - @Pc(69) int local69 = Texture.method3219(Texture.width, local40); + @Pc(64) int local64 = this.anInt5714 > 0 ? this.anInt5709 + RandomUtils.nextInt(this.anInt5714, local40) - local28 : this.anInt5709; + @Pc(69) int local69 = RandomUtils.nextInt(Texture.width, local40); @Pc(75) int local75 = local64 >> 4 & 0xFF; - @Pc(80) int local80 = Texture.method3219(Texture.height, local40); + @Pc(80) int local80 = RandomUtils.nextInt(Texture.height, local40); @Pc(92) int local92 = local69 + (this.anInt5715 * TextureOp.COSINE[local75] >> 12); @Pc(103) int local103 = local80 + (TextureOp.SINE[local75] * this.anInt5715 >> 12); @Pc(107) int local107 = local92 - local69; @@ -102,7 +102,7 @@ public final class TextureOp38 extends TextureOp { local190 = -local190; } @Pc(206) int local206 = -local152 / 2; - @Pc(216) int local216 = 1024 - (Texture.method3219(4096, local40) >> 2); + @Pc(216) int local216 = 1024 - (RandomUtils.nextInt(4096, local40) >> 2); @Pc(227) int local227 = local103 <= local80 ? -1 : 1; @Pc(231) int local231 = 2048 / local152; for (@Pc(233) int local233 = local69; local233 < local92; local233++) { diff --git a/client/src/main/java/rt4/TextureOp4.java b/client/src/main/java/rt4/TextureOp4.java index 6def450..f464963 100644 --- a/client/src/main/java/rt4/TextureOp4.java +++ b/client/src/main/java/rt4/TextureOp4.java @@ -102,7 +102,7 @@ public final class TextureOp4 extends TextureOp { @Pc(94) int local94; if (local66 > 0) { local82 = this.anInt3670; - local94 = (Texture.method3219(4096, local8) - 2048) * this.anInt3667 >> 12; + local94 = (RandomUtils.nextInt(4096, local8) - 2048) * this.anInt3667 >> 12; @Pc(102) int local102 = local82 + (local94 * local34 >> 12); this.anIntArray352[local66] = this.anIntArray352[local66 - 1] + local102; } @@ -110,11 +110,11 @@ public final class TextureOp4 extends TextureOp { for (local82 = 0; local82 < this.anInt3685; local82++) { if (local82 > 0) { local94 = this.anInt3679; - @Pc(150) int local150 = (Texture.method3219(4096, local8) - 2048) * this.anInt3681 >> 12; + @Pc(150) int local150 = (RandomUtils.nextInt(4096, local8) - 2048) * this.anInt3681 >> 12; local94 += local64 * local150 >> 12; this.anIntArrayArray26[local66][local82] = this.anIntArrayArray26[local66][local82 - 1] + local94; } - this.anIntArrayArray27[local66][local82] = this.anInt3673 <= 0 ? 4096 : 4096 - Texture.method3219(this.anInt3673, local8); + this.anIntArrayArray27[local66][local82] = this.anInt3673 <= 0 ? 4096 : 4096 - RandomUtils.nextInt(this.anInt3673, local8); } this.anIntArrayArray26[local66][this.anInt3685] = 4096; } diff --git a/client/src/main/java/rt4/VorbisSound.java b/client/src/main/java/rt4/VorbisSound.java index 64d6b05..cb6279c 100644 --- a/client/src/main/java/rt4/VorbisSound.java +++ b/client/src/main/java/rt4/VorbisSound.java @@ -179,7 +179,7 @@ public final class VorbisSound extends Node { @Pc(187) int[] local187 = new int[local38]; @Pc(193) int local193 = IntUtils.bitCount(local38 - 1); for (@Pc(195) int local195 = 0; local195 < local38; local195++) { - local187[local195] = method667(local193, local195); + local187[local195] = IntUtils.bitReverse(local193, local195); } if (local17 == 0) { trigA0 = local41; @@ -250,17 +250,6 @@ public final class VorbisSound extends Node { return local1; } - @OriginalMember(owner = "client!bn", name = "a", descriptor = "(III)I") - public static int method667(@OriginalArg(0) int arg0, @OriginalArg(2) int arg1) { - @Pc(8) int local8 = 0; - while (arg0 > 0) { - local8 = local8 << 1 | arg1 & 0x1; - arg1 >>>= 0x1; - arg0--; - } - return local8; - } - @OriginalMember(owner = "client!jc", name = "a", descriptor = "([I)Lclient!kj;") public final PcmSound toPcmSound(@OriginalArg(0) int[] arg0) { if (arg0 != null && arg0[0] <= 0) { diff --git a/client/src/main/java/rt4/WorldMap.java b/client/src/main/java/rt4/WorldMap.java index 07722cc..2bed77e 100644 --- a/client/src/main/java/rt4/WorldMap.java +++ b/client/src/main/java/rt4/WorldMap.java @@ -375,7 +375,7 @@ public class WorldMap { } if (local367 >= 0 && local363 > 0) { @Pc(462) int[] local462 = local355[local367 >> 6]; - @Pc(480) int local480 = local361 == 0 ? 0 : SceneGraph.method1309(local293 / local363, local225 / local363, local114 * 256 / local361); + @Pc(480) int local480 = local361 == 0 ? 0 : ColorUtils.method1309(local293 / local363, local225 / local363, local114 * 256 / local361); if (underlays[local102][local367] != 0) { if (local462 == null) { local462 = local355[local367 >> 6] = new int[4096];