Electronics > Repair
HP 3478A: How to read/write cal SRAM
<< < (25/41) > >>
cbueche:
Hello all,

a quick thank you to all who contributed to decoding the intricacies of the HP 3478a. For the people coming late to the party, here is a full log of my actions. It would be cool to check the data I got from my procedure - I know your values would diverge but you do have a sense of what they should look like.


* get gpib to work in Linux : https://linux-gpib.sourceforge.io/ (somewhat outdated but worked for me on Kubuntu 18.04)
* create a virtual env for Python script
* dump the data using below's Python script : python ./getcal.py > hp3478_cal_dump.bin
* compile hp3478util from https://github.com/fenugrec/hp3478a_utils (see issue 1 if you can't create an executable)
* hp3478util -a hp3478_cal_dump.bin -d
virtualenv


--- Code: ---python3.8 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install pyusb
pip install pyvisa
pip install pyvisa-py
pip install gpib-ctypes

--- End code ---

getcal.py

You need to modify the hardcoded address (16 below).


--- Code: ---#!/bin/env python3

import sys
import pyvisa

rm = pyvisa.ResourceManager()
dvm = rm.open_resource('GPIB::16::INSTR')

vals_per_line = 16
for addr in range(256):
    dvm.write_raw(bytes([ord('W'), addr]))
    val = dvm.read()
    sys.stdout.write(val)

    if ((addr + 1) % vals_per_line == 0):
        sys.stdout.write('\n')

sys.stdout.write('\n')
dvm.close()
rm.close()

--- End code ---

dump of my data from python script


@@@@@FGAM@NOLG@@
@@@GAMMONL@@@@@@
AAMMMNLHIIIIIDAL
DBBKIIIIIIIALDOC
JF@@@@@@@@@@@@@I
IH@CHAAABCMBIIIH
HH@EALAKIIIIIHH@
EMEDK@IIIIII@EMC
MJGIIIIIH@EOAOJF
IIIIII@EOB@KCIII
IIH@ENCAKCIIIIIH
ALOCLIOIIIHDEBML
AAKFIIIIHCBLDBCK
I@@@@@@@@@@@@@II
GICBB@C@BMA@@@@@
@@@@@@@@@@@@@@@@


output of hp3478util -a hp3478_cal_dump.bin -t


************ hp3478util, (c) 2018-2020 fenugrec ************
entry 0x00: OK (30 mV DC)
entry 0x01: OK (300 mV DC)
entry 0x02: OK (3 V DC)
entry 0x03: OK (30 V DC)
entry 0x04: OK (300 V DC)
entry 0x05 ((Not used)): bad cks (0x00) (unused entry)
entry 0x06: OK (ACV)
entry 0x07: OK (30 Ohm 2W/4W)
entry 0x08: OK (300 Ohm 2W/4W)
entry 0x09: OK (3 KOhm 2W/4W)
entry 0x0A: OK (30 KOhm 2W/4W)
entry 0x0B: OK (300 KOhm 2W/4W)
entry 0x0C: OK (3 MOhm 2W/4W)
entry 0x0D: OK (30 MOhm 2W/4W)
entry 0x0E: OK (300 mA DC)
entry 0x0F: OK (3A DC)
entry 0x10 ((Not used)): bad cks (0x00) (unused entry)
entry 0x11: OK (300 mA/3A AC)
entry 0x12 ((Not used)): bad cks (0x00) (unused entry)


output of hp3478util -a hp3478_cal_dump.bin -d


************ hp3478util, (c) 2018-2020 fenugrec ************
entry # offset  (rawgain)       gain    range
00      000067  1D0EF   1.006979        30 mV DC
01      00A000  71DDF   1.070669        300 mV DC
02      000000  A11DD   0.941067        3 V DC
03      C89999  941CA   0.934054        30 V DC
04      2B9999  9991C   0.922306        300 V DC
05      3AA600  00000   1.000000        (Not used)
06      00009A  98038   0.922022        ACV
07      123D29  998A8   0.922132        30 Ohm 2W/4W
08      51C1B9  99998   0.922222        300 Ohm 2W/4W
09      A5D54B  09999   0.992223        3 KOhm 2W/4W
0A      05D3AD  A7999   0.946223        30 KOhm 2W/4W
0B      805F1F  A6A99   0.945323        300 KOhm 2W/4W
0C      9905F2  0B399   0.995223        3 MOhm 2W/4W
0D      99805E  31B39   1.030523        30 MOhm 2W/4W
0E      998A1C  F3C9F   0.992529        300 mA DC
0F      98452D  CA11B   0.954105        3A DC
10      999832  C423B   0.964225        (Not used)
11      000000  00000   1.000000        300 mA/3A AC
12      99A793  22030   1.022030        (Not used)
pqass:
I came here looking for the formula for processing the raw gain value, however, I've discovered a problem with the hp3478util -a hp3478_cal_dump.bin -d output as produced with cbueche's calibration data in the previous post.

Specifically, the -d switch forgets to remove the end-of-line line-feed character (0x0A) before processing the line.  If it were the same for the -t switch, then the program wouldn't produce "OK" crc's.

If I run the linux hex-dump command cat cbueche_lf.cal | od -A x -t x1z -w13 --skip=1 on a cal file where there is a trailing line-feed every 16 bytes, then it will produce the following output which is consistent with the offset and raw gain columns shown in cbueche's post:
(After the ASCII column, I've included processed offset and gain which should just be the lower nibble of each byte except the last two bytes.)

--- Code: ---000001 40 40 40 40 46 47 41 4d 40 4e 4f 4c 47  >@@@@FGAM@NOLG< 00: offset=000067 raw_gain=1d0ef
00000e 40 40 0a 40 40 40 47 41 4d 4d 4f 4e 4c  >@@.@@@GAMMONL< 01: offset=00a000 raw_gain=71ddf
00001b 40 40 40 40 40 40 0a 41 41 4d 4d 4d 4e  >@@@@@@.AAMMMN< 02: offset=000000 raw_gain=a11dd
000028 4c 48 49 49 49 49 49 44 41 4c 0a 44 42  >LHIIIIIDAL.DB< 03: offset=c89999 raw_gain=941ca
000035 42 4b 49 49 49 49 49 49 49 41 4c 44 4f  >BKIIIIIIIALDO< 04: offset=2b9999 raw_gain=9991c
000042 43 0a 4a 46 40 40 40 40 40 40 40 40 40  >C.JF@@@@@@@@@< 05: offset=3aa600 raw_gain=00000
00004f 40 40 40 40 49 0a 49 48 40 43 48 41 41  >@@@@I.IH@CHAA< 06: offset=00009a raw_gain=98038
00005c 41 42 43 4d 42 49 49 49 48 0a 48 48 40  >ABCMBIIIH.HH@< 07: offset=123d29 raw_gain=998a8
000069 45 41 4c 41 4b 49 49 49 49 49 48 48 40  >EALAKIIIIIHH@< 08: offset=51c1b9 raw_gain=99998
000076 0a 45 4d 45 44 4b 40 49 49 49 49 49 49  >.EMEDK@IIIIII< 09: offset=a5d54b raw_gain=09999
000083 40 45 4d 43 0a 4d 4a 47 49 49 49 49 49  >@EMC.MJGIIIII< 10: offset=05d3ad raw_gain=a7999
000090 48 40 45 4f 41 4f 4a 46 0a 49 49 49 49  >H@EOAOJF.IIII< 11: offset=805f1f raw_gain=a6a99
00009d 49 49 40 45 4f 42 40 4b 43 49 49 49 0a  >II@EOB@KCIII.< 12: offset=9905f2 raw_gain=0b399
0000aa 49 49 48 40 45 4e 43 41 4b 43 49 49 49  >IIH@ENCAKCIII< 13: offset=99805e raw_gain=31b39
0000b7 49 49 48 0a 41 4c 4f 43 4c 49 4f 49 49  >IIH.ALOCLIOII< 14: offset=998a1c raw_gain=f3c9f
0000c4 49 48 44 45 42 4d 4c 0a 41 41 4b 46 49  >IHDEBML.AAKFI< 15: offset=98452d raw_gain=ca11b
0000d1 49 49 49 48 43 42 4c 44 42 43 4b 0a 49  >IIIHCBLDBCK.I< 16: offset=999832 raw_gain=c423b
0000de 40 40 40 40 40 40 40 40 40 40 40 40 40  >@@@@@@@@@@@@@< 17: offset=000000 raw_gain=00000
0000eb 49 49 0a 47 49 43 42 42 40 43 40 42 4d  >II.GICBB@C@BM< 18: offset=99a793 raw_gain=22030
0000f8 41 40 40 40 40 40 0a 40 40 40 40 40 40  >A@@@@@.@@@@@@< 19: offset=100000 raw_gain=a0000
000105 40 40 40 40 40 40 40 40 40 40 0a        >@@@@@@@@@@.< 20: offset=000000 raw_gain=0000a

--- End code ---

I believe the correct output should be (without any added line-feed characters):
(Note that my gain column may be wrong although I've taken it from hp3478util.c getgain(). Please confirm otherwise.  "crc=ff" means valid crc.)

--- Code: ---000001 40 40 40 40 46 47 41 4d 40 4e 4f 4c 47  >@@@@FGAM@NOLG< 00: offset=000067 raw_gain=1d0ef gain=1.006979 crc=ff  30 mV DC
00000e 40 40 40 40 40 47 41 4d 4d 4f 4e 4c 40  >@@@@@GAMMONL@< 01: offset=000007 raw_gain=1ddfe gain=1.006688 crc=ff  300 mV DC
00001b 40 40 40 40 40 41 41 4d 4d 4d 4e 4c 48  >@@@@@AAMMMNLH< 02: offset=000001 raw_gain=1ddde gain=1.006668 crc=ff  3 V DC
000028 49 49 49 49 49 44 41 4c 44 42 42 4b 49  >IIIIIDALDBBKI< 03: offset=999994 raw_gain=1c422 gain=1.006422 crc=ff  30 V DC
000035 49 49 49 49 49 49 41 4c 44 4f 43 4a 46  >IIIIIIALDOCJF< 04: offset=999999 raw_gain=1c4f3 gain=1.006393 crc=ff  300 V DC
000042 40 40 40 40 40 40 40 40 40 40 40 40 40  >@@@@@@@@@@@@@< 05: offset=000000 raw_gain=00000 gain=1.000000 crc=00  <not used>
00004f 49 49 48 40 43 48 41 41 41 42 43 4d 42  >IIH@CHAAABCMB< 06: offset=998038 raw_gain=11123 gain=1.011123 crc=ff  AC V
00005c 49 49 49 48 48 48 40 45 41 4c 41 4b 49  >IIIHHH@EALAKI< 07: offset=999888 raw_gain=051c1 gain=1.005061 crc=ff  30 Ohm 2W/4W
000069 49 49 49 49 48 48 40 45 4d 45 44 4b 40  >IIIIHH@EMEDK@< 08: offset=999988 raw_gain=05d54 gain=1.004754 crc=ff  300 Ohm 2W/4W
000076 49 49 49 49 49 49 40 45 4d 43 4d 4a 47  >IIIIII@EMCMJG< 09: offset=999999 raw_gain=05d3d gain=1.004727 crc=ff  3 kOhm 2W/4W
000083 49 49 49 49 49 48 40 45 4f 41 4f 4a 46  >IIIIIH@EOAOJF< 10: offset=999998 raw_gain=05f1f gain=1.004909 crc=ff  30 kOhm 2W/4W
000090 49 49 49 49 49 49 40 45 4f 42 40 4b 43  >IIIIII@EOB@KC< 11: offset=999999 raw_gain=05f20 gain=1.004920 crc=ff  300 kOhm 2W/4W
00009d 49 49 49 49 49 48 40 45 4e 43 41 4b 43  >IIIIIH@ENCAKC< 12: offset=999998 raw_gain=05e31 gain=1.004831 crc=ff  3 MOhm 2W/4W
0000aa 49 49 49 49 49 48 41 4c 4f 43 4c 49 4f  >IIIIIHALOCLIO< 13: offset=999998 raw_gain=1cf3c gain=1.005926 crc=ff  30 MOhm 2W/4W
0000b7 49 49 49 48 44 45 42 4d 4c 41 41 4b 46  >IIIHDEBMLAAKF< 14: offset=999845 raw_gain=2dc11 gain=1.016611 crc=ff  300 mA DC
0000c4 49 49 49 49 48 43 42 4c 44 42 43 4b 49  >IIIIHCBLDBCKI< 15: offset=999983 raw_gain=2c423 gain=1.016423 crc=ff  3A DC
0000d1 40 40 40 40 40 40 40 40 40 40 40 40 40  >@@@@@@@@@@@@@< 16: offset=000000 raw_gain=00000 gain=1.000000 crc=00  <not used>
0000de 49 49 47 49 43 42 42 40 43 40 42 4d 41  >IIGICBB@C@BMA< 17: offset=997932 raw_gain=20302 gain=1.020302 crc=ff  300 mA/3A AC
0000eb 40 40 40 40 40 40 40 40 40 40 40 40 40  >@@@@@@@@@@@@@< 18: offset=000000 raw_gain=00000 gain=1.000000 crc=00  <not used>
0000f8 40 40 40 40 40 40 40 40                 >@@@@@@@@< 19: <padding>

--- End code ---
cbueche:
Hi,

after a laptop upgrade (now running Kubuntu 20.04) and recompiling all tools and GPIB setup is done, I have a new GPIB adapter as well (bought used on Ebay, BEIMING F82357), I read the calibration data again and got the same as the last time :


--- Code: ---@@@@@FGAM@NOLG@@
@@@GAMMONL@@@@@@
AAMMMNLHIIIIIDAL
DBBKIIIIIIIALDOC
JF@@@@@@@@@@@@@I
IH@CHAAABCMBIIIH
HH@EALAKIIIIIHH@
EMEDK@IIIIII@EMC
MJGIIIIIH@EOAOJF
IIIIII@EOB@KCIII
IIH@ENCAKCIIIIIH
ALOCLIOIIIHDEBML
AAKFIIIIHCBLDBCK
I@@@@@@@@@@@@@II
GICBB@C@BMA@@@@@
@@@@@@@@@@@@@@@@

--- End code ---

Then running through hp3478util :


--- Code: ---hp3478a_utils/hp3478util -a calibration_data/hp3478_cal_dump_1.bin -t

************ hp3478util, (c) 2018-2020 fenugrec ************
entry 0x00: OK (30 mV DC)
entry 0x01: OK (300 mV DC)
entry 0x02: OK (3 V DC)
entry 0x03: OK (30 V DC)
entry 0x04: OK (300 V DC)
entry 0x05 ((Not used)): bad cks (0x00) (unused entry)
entry 0x06: OK (ACV)
entry 0x07: OK (30 Ohm 2W/4W)
entry 0x08: OK (300 Ohm 2W/4W)
entry 0x09: OK (3 KOhm 2W/4W)
entry 0x0A: OK (30 KOhm 2W/4W)
entry 0x0B: OK (300 KOhm 2W/4W)
entry 0x0C: OK (3 MOhm 2W/4W)
entry 0x0D: OK (30 MOhm 2W/4W)
entry 0x0E: OK (300 mA DC)
entry 0x0F: OK (3A DC)
entry 0x10 ((Not used)): bad cks (0x00) (unused entry)
entry 0x11: OK (300 mA/3A AC)
entry 0x12 ((Not used)): bad cks (0x00) (unused entry)

--- End code ---

so far so good, now look at this dump :


--- Code: ---hp3478a_utils/hp3478util -a calibration_data/hp3478_cal_dump_1.bin -d
************ hp3478util, (c) 2018-2020 fenugrec ************
entry # offset  (rawgain)       gain    range
00      000067  1D0EF   1.006979        30 mV DC
01      000007  1DDFE   1.006688        300 mV DC
02      000001  1DDDE   1.006668        3 V DC
03      999994  1C422   1.006422        30 V DC
04      999999  1C4F3   1.006393        300 V DC
05      000000  00000   1.000000        (Not used)
06      998038  11123   1.011123        ACV
07      999888  051C1   1.005061        30 Ohm 2W/4W
08      999988  05D54   1.004754        300 Ohm 2W/4W
09      999999  05D3D   1.004727        3 KOhm 2W/4W
0A      999998  05F1F   1.004909        30 KOhm 2W/4W
0B      999999  05F20   1.004920        300 KOhm 2W/4W
0C      999998  05E31   1.004831        3 MOhm 2W/4W
0D      999998  1CF3C   1.005926        30 MOhm 2W/4W
0E      999845  2DC11   1.016611        300 mA DC
0F      999983  2C423   1.016423        3A DC
10      000000  00000   1.000000        (Not used)
11      997932  20302   1.020302        300 mA/3A AC
12      000000  00000   1.000000        (Not used)

--- End code ---

I now get the gain values you have in your post. I'm not sure why my initial data extracted with "-d" was wrong. I wrote the getcal.py in steps and maybe I had some CR/LF in it while debugging, causing the errors.
pqass:

--- Quote from: cbueche on August 29, 2020, 12:02:03 pm ---Hi,

...snip...

I now get the gain values you have in your post. I'm not sure why my initial data extracted with "-d" was wrong. I wrote the getcal.py in steps and maybe I had some CR/LF in it while debugging, causing the errors.

--- End quote ---

Good to hear that it was just an input file mixup between the -t and -d outputs.  The raw offset column is a binary coded decimal (see fenugrec earlier in this thread) and we shouldn't see any alpha characters in it.
Thanks for confirming my gain output.

For future readers, this is the Linux shell script that I use to dump raw calibration data (don't feed it new-lines):

--- Code: ---#!/bin/sh

if [ -f "$1" ]; then
cat "$1" | od -A x -t x1z -w13 --skip=1 | awk 'BEGIN{
SEP="|";
rectypestr="30 mV DC" SEP "300 mV DC" SEP "3 V DC" SEP "30 V DC" SEP "300 V DC" SEP "<not used>" SEP "AC V" SEP "30 Ohm 2W/4W" SEP "300 Ohm 2W/4W" SEP "3 kOhm 2W/4W" SEP "30 kOhm 2W/4W" SEP "300 kOhm 2W/4W" SEP "3 MOhm 2W/4W" SEP "30 MOhm 2W/4W" SEP "300 mA DC" SEP "3A DC" SEP "<not used>" SEP "300 mA/3A AC" SEP "<not used>" SEP "<padding>";
rectype[0] = "";
split(rectypestr, rectype, SEP);
}{
if(NF==15) {
crc=0; oset = ""; gain = ""; cgain = 1.0; multi = 0.01;
for(i=1; i<NF; i++) {
if(length($i)==2) {
crc += strtonum("0x"(substr($i,2))""((i==13)?"0":""));
if (i < 8) { /* first 6 bytes */
oset = oset "" substr($i,2);
} else if (i < 13) { /* next 5 bytes */
gain = gain "" substr($i,2);
digit = strtonum("0x"(substr($i,2)));
cgain += (digit - ((digit > 7) ? 16 : 0)) * multi;
multi = multi / 10;
}
}
}
coset = strtonum(oset);                      /* raw offset is in bcd; not hex */
if (strtonum(oset)>499999) coset -= 1000000; /* if raw offset is greater than 499999 then its a negative number */
printf "%s\t%.2d: raw_offset=%s raw_gain=%s offset=%+07d gain=%1.6f crc=%.2x  %s\n", $0, (NR-1), oset, gain, coset, cgain, crc, rectype[NR];
} else if(NF>1) {
printf "%s\t%.2d: %s\n", $0, (NR-1), rectype[NR];
}
}'
else
echo "$0 <cal file>"
fi

--- End code ---

And this is the output using cbueche's calibration data as input (I now process the raw_offset to get +/- values):
(Use tr -d '\n' <cbueche2_lf.cal >cbueche2.cal to remove any new-line characters before feeding the script.)

--- Code: ---$ ./verify.sh cbueche2.cal
000001 40 40 40 40 46 47 41 4d 40 4e 4f 4c 47  >@@@@FGAM@NOLG< 00: raw_offset=000067 raw_gain=1d0ef offset=+000055 gain=1.006979 crc=ff  30 mV DC
00000e 40 40 40 40 40 47 41 4d 4d 4f 4e 4c 40  >@@@@@GAMMONL@< 01: raw_offset=000007 raw_gain=1ddfe offset=+000007 gain=1.006688 crc=ff  300 mV DC
00001b 40 40 40 40 40 41 41 4d 4d 4d 4e 4c 48  >@@@@@AAMMMNLH< 02: raw_offset=000001 raw_gain=1ddde offset=+000001 gain=1.006668 crc=ff  3 V DC
000028 49 49 49 49 49 44 41 4c 44 42 42 4b 49  >IIIIIDALDBBKI< 03: raw_offset=999994 raw_gain=1c422 offset=-000006 gain=1.006422 crc=ff  30 V DC
000035 49 49 49 49 49 49 41 4c 44 4f 43 4a 46  >IIIIIIALDOCJF< 04: raw_offset=999999 raw_gain=1c4f3 offset=-000001 gain=1.006393 crc=ff  300 V DC
000042 40 40 40 40 40 40 40 40 40 40 40 40 40  >@@@@@@@@@@@@@< 05: raw_offset=000000 raw_gain=00000 offset=+000000 gain=1.000000 crc=00  <not used>
00004f 49 49 48 40 43 48 41 41 41 42 43 4d 42  >IIH@CHAAABCMB< 06: raw_offset=998038 raw_gain=11123 offset=-001962 gain=1.011123 crc=ff  AC V
00005c 49 49 49 48 48 48 40 45 41 4c 41 4b 49  >IIIHHH@EALAKI< 07: raw_offset=999888 raw_gain=051c1 offset=-000112 gain=1.005061 crc=ff  30 Ohm 2W/4W
000069 49 49 49 49 48 48 40 45 4d 45 44 4b 40  >IIIIHH@EMEDK@< 08: raw_offset=999988 raw_gain=05d54 offset=-000012 gain=1.004754 crc=ff  300 Ohm 2W/4W
000076 49 49 49 49 49 49 40 45 4d 43 4d 4a 47  >IIIIII@EMCMJG< 09: raw_offset=999999 raw_gain=05d3d offset=-000001 gain=1.004727 crc=ff  3 kOhm 2W/4W
000083 49 49 49 49 49 48 40 45 4f 41 4f 4a 46  >IIIIIH@EOAOJF< 10: raw_offset=999998 raw_gain=05f1f offset=-000002 gain=1.004909 crc=ff  30 kOhm 2W/4W
000090 49 49 49 49 49 49 40 45 4f 42 40 4b 43  >IIIIII@EOB@KC< 11: raw_offset=999999 raw_gain=05f20 offset=-000001 gain=1.004920 crc=ff  300 kOhm 2W/4W
00009d 49 49 49 49 49 48 40 45 4e 43 41 4b 43  >IIIIIH@ENCAKC< 12: raw_offset=999998 raw_gain=05e31 offset=-000002 gain=1.004831 crc=ff  3 MOhm 2W/4W
0000aa 49 49 49 49 49 48 41 4c 4f 43 4c 49 4f  >IIIIIHALOCLIO< 13: raw_offset=999998 raw_gain=1cf3c offset=-000002 gain=1.005926 crc=ff  30 MOhm 2W/4W
0000b7 49 49 49 48 44 45 42 4d 4c 41 41 4b 46  >IIIHDEBMLAAKF< 14: raw_offset=999845 raw_gain=2dc11 offset=-000155 gain=1.016611 crc=ff  300 mA DC
0000c4 49 49 49 49 48 43 42 4c 44 42 43 4b 49  >IIIIHCBLDBCKI< 15: raw_offset=999983 raw_gain=2c423 offset=-000017 gain=1.016423 crc=ff  3A DC
0000d1 40 40 40 40 40 40 40 40 40 40 40 40 40  >@@@@@@@@@@@@@< 16: raw_offset=000000 raw_gain=00000 offset=+000000 gain=1.000000 crc=00  <not used>
0000de 49 49 47 49 43 42 42 40 43 40 42 4d 41  >IIGICBB@C@BMA< 17: raw_offset=997932 raw_gain=20302 offset=-002068 gain=1.020302 crc=ff  300 mA/3A AC
0000eb 40 40 40 40 40 40 40 40 40 40 40 40 40  >@@@@@@@@@@@@@< 18: raw_offset=000000 raw_gain=00000 offset=+000000 gain=1.000000 crc=00  <not used>
0000f8 40 40 40 40 40 40 40 40                 >@@@@@@@@< 19: <padding>

--- End code ---

fenugrec:

--- Quote from: pqass on August 21, 2020, 04:54:49 pm ---Specifically, the -d switch forgets to remove the end-of-line line-feed character (0x0A) before processing the line.

--- End quote ---

Hi, I got the notification on github concerning this issue, but I can't access my code and crap so I have nothing to suggest until I get back in ~2 weeks. Ping me again if you don't hear from me by then.
But if it's just a processing issue it should be trivial to patch in the meantime (I think we got the math part mostly perfect ? except maybe clamping the gain digits to [-4..+5] , I forget the details)
Navigation
Message Index
Next page
Previous page
There was an error while thanking
Thanking...

Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod