1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
(define (row first . rest)
`(tr (td (@ (align "right")) ,first)
,@(map (lambda (field) `(td (@ (align "left")) ,field)) rest)))
(post
:title "Firmware comparison between Wavedrums Original, Black and Oriental"
:date (string->date* "2013-10-31 00:00")
:tags '("DIY" "electronics" "music" "hacking" "wavedrum")
(p [Since ,(ref "/posts/2013-08-11-hacking-the-wavedrum.html" "my
first post on hacking the Wavedrum") two fellow musicians have
sent me copies of the contents of their Wavedrum instruments, so
I now have the data for the original silver issue, the black
re-issue and the Oriental.])
(p [The differences between the data from the silver and the data
from the black Wavedrum are very few. Of the files sent to me
only five differ: ,(code [USER.BIN]), ,(code [CALIB.BIN]), ,(code
[WD2_PROG.BIN]), ,(code [SYSTEM/VERSION.INF]), and ,(code
[SYSTEM/WDX_M100.BIN]). ,(code [USER.BIN]) contains only the
mapping of programmes to slots and banks, which have been altered
by the respective owners of the two instruments, so it can safely
be ignored. Likewise, ,(code [WD2_PROG.BIN]) contains custom
user programmes and hence is of no interest.])
(p [,(code [CALIB.BIN]) contains as of yet unknown calibration
information, just like the similarly named ,(code [CALIB.BOR]) on
my Wavedrum Oriental. The contents of ,(code [CALIB.BIN]) from
the original Wavedrum are identical to those of the matching file
on the Oriental. The only difference that the Black has over the
other two is a single digit. This is from the Oriental:])
(pre (code [01 00 00 75 00 00 00 00 02 00 00 00 00 00 00 00]))
(p [And this is from the Black:])
(pre (code [01 00 00 75 00 00 00 00 01 00 00 00 00 00 00 00]))
(p [Not very exciting.])
(p [,(code [SYSTEM/VERSION.INF]) contains the hardware/software
versions. Here are the contents of the Original, followed by the
Black and the Oriental:])
(pre (code [01 20 01 10 01 20 00 00 00 00 00 00 00 00 00 00
01 32 01 10 01 32 00 00 57 44 58 5F 00 00 00 00
02 02 01 10 02 02 00 00 57 44 4f 52 00 00 00 00]))
(p [Again, these are in decimal notation and are in this format:
firmware version (two bytes), sub-version (two bytes), data
version (two-bytes), two empty bytes, four bytes for an optional
identifier followed by four empty bytes.])
(table :align '("right")
:headers '("Type" "Firmware" "Sub-version" "Data version" "Identifier")
:rows
'(("Original" "1.20" "1.10" "1.20" "none")
("Black" "1.32" "1.10" "1.32" "WDX_")
("Oriental" "2.02" "1.10" "2.02" "WDOR")))
(p [Looking at the version numbers above it becomes apparent that the
sounds themselves are not covered by these numbers as the sounds
on the Black are no different from those on the Original, yet the
data version differs.])
(p [The file ,(code [SYSTEM/WDX_M100.BIN]) must be the firmware on
both the Original and the Black Wavedrum, serving the same
purpose as ,(code [SYSTEM/WDORM202.BIN]) on the Oriental. There
are quite a few changes even between version 1.20 and 1.32, but I
haven’t yet taken the time to analyse them. It is interesting to
note, though, that every firmware file is ,(em [exactly]) one
megabyte long, independent of the Wavedrum type. This is due to
padding which in the Original firmware begins at offset 0xC967C,
in the Black firmware at offset 0xC9C68, and in the Oriental
firmware at offset 0xDCB64.])
(p [More to follow.])
(p [Read ,(ref "/tags/wavedrum.html" "more posts about the Wavedrum
here").]))
|