summaryrefslogtreecommitdiff
path: root/NET/worlds/scape/CDDBHash.java
diff options
context:
space:
mode:
authorFuwn <[email protected]>2021-05-03 16:38:41 -0700
committerFuwn <[email protected]>2021-05-03 16:38:41 -0700
commite1e781bb2135ef78592226f1a3eaba4925702f1f (patch)
tree8a5b590463ed413e1c6eabb719130e701b95ca63 /NET/worlds/scape/CDDBHash.java
downloadworlds.jar-main.tar.xz
worlds.jar-main.zip
:star:HEADmain
Diffstat (limited to 'NET/worlds/scape/CDDBHash.java')
-rw-r--r--NET/worlds/scape/CDDBHash.java88
1 files changed, 88 insertions, 0 deletions
diff --git a/NET/worlds/scape/CDDBHash.java b/NET/worlds/scape/CDDBHash.java
new file mode 100644
index 0000000..23e8a01
--- /dev/null
+++ b/NET/worlds/scape/CDDBHash.java
@@ -0,0 +1,88 @@
+/* */ package NET.worlds.scape;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public class CDDBHash
+/* */ {
+/* */ public static String hashString(CDTrackInfo tracks)
+/* */ {
+/* 12 */ String id = Integer.toHexString(hash(tracks));
+/* 13 */ int len = id.length();
+/* 14 */ if (len < 8) {
+/* 15 */ String pad = "0";
+/* */ do {
+/* 17 */ pad = pad + "0";len++;
+/* 16 */ } while (len < 8);
+/* */
+/* 18 */ return pad + id;
+/* */ }
+/* 20 */ return id;
+/* */ }
+/* */
+/* */ public static String lookupString(CDTrackInfo tracks)
+/* */ {
+/* 25 */ int numTracks = tracks.getNumTracks();
+/* 26 */ String ret = hashString(tracks) + " " + numTracks;
+/* 27 */ for (int i = 0; i < numTracks; i++)
+/* 28 */ ret = ret + " " + tracks.getStartFrames(i);
+/* 29 */ return ret + " " + leadOutSecs(tracks);
+/* */ }
+/* */
+/* */ private static int addDigits(int n)
+/* */ {
+/* 34 */ String buf = n;
+/* 35 */ int ret = 0;
+/* 36 */ for (int i = 0; i < buf.length(); i++)
+/* 37 */ ret += buf.charAt(i) - '0';
+/* 38 */ return ret;
+/* */ }
+/* */
+/* */ private static int leadOutSecs(CDTrackInfo tracks)
+/* */ {
+/* 43 */ int last = tracks.getNumTracks() - 1;
+/* */
+/* 45 */ int omin = tracks.getPosM(last);
+/* 46 */ int osec = tracks.getPosS(last);
+/* 47 */ int ofrm = tracks.getPosF(last);
+/* */
+/* 49 */ int lmin = tracks.getLenM(last);
+/* 50 */ int lsec = tracks.getLenS(last);
+/* 51 */ int lfrm = tracks.getLenF(last);
+/* */
+/* 53 */ lfrm++; if (lfrm == 75) {
+/* 54 */ lfrm = 0;
+/* 55 */ lsec++; if (lsec == 60) {
+/* 56 */ lsec = 0;
+/* 57 */ lmin++;
+/* */ }
+/* */ }
+/* */
+/* 61 */ ofrm += lfrm;
+/* 62 */ osec += ofrm / 75 + lsec;
+/* 63 */ omin += osec / 60 + lmin;
+/* 64 */ osec %= 60;
+/* 65 */ return omin * 60 + osec;
+/* */ }
+/* */
+/* */ private static int hash(CDTrackInfo tracks)
+/* */ {
+/* 70 */ int n = 0;
+/* 71 */ int numTracks = tracks.getNumTracks();
+/* */
+/* 73 */ for (int i = 0; i < numTracks; i++) {
+/* 74 */ n += addDigits(tracks.getPosM(i) * 60 + tracks.getPosS(i));
+/* */ }
+/* 76 */ int t = leadOutSecs(tracks) -
+/* 77 */ tracks.getPosM(0) * 60 - tracks.getPosS(0);
+/* 78 */ return n % 255 << 24 | t << 8 | numTracks;
+/* */ }
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\scape\CDDBHash.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file