Reads and interprets dcm assets from N64's The New Tetris and Tetrisphere and converts them to xm files. This is not a full reconstruction of the original xm files created by Neil D. Voss, since a dcm asset is processed xm pattern data. This tool can re-create the 16 tracks from The New Tetris and the 23 tracks from Tetrisphere (as partially reconstructed xm files), which can then be played from most media players and trackers.
$ mkdir ~/src
$ cd ~/src
$ git clone https://github.com/chris-gilmore/dcm2xm.git
$ cd dcm2xm
$ make
Place tnt.z64 and sphere.z64 under ~/.
$ crc32 tnt.z64
528a07fa
$ md5sum tnt.z64
7a28179b00734c9aa0f0609fafaafd5f
$ sha1sum tnt.z64
83fff25e82181a6993f28c91b9eeb8430396838b
$ crc32 sphere.z64
70a3a5ce
$ md5sum sphere.z64
3f88078e2d9dbf6c9372f6373cf9ae09
$ sha1sum sphere.z64
32adaa274ceed246aeee9f53592d642a121f3bdb
Redhat-based
$ sudo dnf install lzo-devel python3-devel
$ pip3 install python-lzo
Debian-based
$ sudo apt-get install python3-lzo
$ cd ~/src
$ git clone https://github.com/chris-gilmore/n64tetristools.git
$ cd ~/src/dcm2xm
$ mkdir sample
$ cd sample
$ ~/src/n64tetristools/tnt-extract.py -v --all-samples ~/tnt.z64
$ ~/src/n64tetristools/sphere-extract.py -v --all-samples ~/sphere.z64
$ cd ~/src/dcm2xm
$ mkdir dcm
$ cd dcm
$ ~/src/n64tetristools/tnt-extract.py -v --all-dcms ~/tnt.z64
$ ~/src/n64tetristools/sphere-extract.py -v --all-dcms ~/sphere.z64
$ ./build/dcm2xm --tnt --song 0 > tnt_00.stdout # Creates Title.xm
$ ./build/dcm2xm --tnt --song 1 > tnt_01.stdout # Creates Morocco.xm
$ ./build/dcm2xm --tnt --song 2 > tnt_02.stdout # Creates Dvie.xm
$ ./build/dcm2xm --tnt --song 3 > tnt_03.stdout # Creates Polyasia.xm
$ ./build/dcm2xm --tnt --song 4 > tnt_04.stdout # Creates Floppy.xm
$ ./build/dcm2xm --tnt --song 5 > tnt_05.stdout # Creates Pyramid.xm
$ ./build/dcm2xm --tnt --song 6 > tnt_06.stdout # Creates Giali.xm
$ ./build/dcm2xm --tnt --song 7 > tnt_07.stdout # Creates Thread6.xm
$ ./build/dcm2xm --tnt --song 8 > tnt_08.stdout # Creates Haluci.xm
$ ./build/dcm2xm --tnt --song 9 > tnt_09.stdout # Creates Mayan.xm
$ ./build/dcm2xm --tnt --song 10 > tnt_10.stdout # Creates Greek.xm
$ ./build/dcm2xm --tnt --song 11 > tnt_11.stdout # Creates Egypt.xm
$ ./build/dcm2xm --tnt --song 12 > tnt_12.stdout # Creates Celtic.xm
$ ./build/dcm2xm --tnt --song 13 > tnt_13.stdout # Creates Africa.xm
$ ./build/dcm2xm --tnt --song 14 > tnt_14.stdout # Creates Japan.xm
$ ./build/dcm2xm --tnt --song 15 > tnt_15.stdout # Creates Kalinka.xm
$ ./build/dcm2xm --sphere --song 0 > sphere_00.stdout # Creates Prophetic_-_Title.xm
$ ./build/dcm2xm --sphere --song 1 > sphere_01.stdout # Creates Azule_Lux.xm
$ ./build/dcm2xm --sphere --song 2 > sphere_02.stdout # Creates Martist.xm
$ ./build/dcm2xm --sphere --song 3 > sphere_03.stdout # Creates Compliant_Confuse.xm
$ ./build/dcm2xm --sphere --song 4 > sphere_04.stdout # Creates Faze.xm
$ ./build/dcm2xm --sphere --song 5 > sphere_05.stdout # Creates Flim_Flam.xm
$ ./build/dcm2xm --sphere --song 6 > sphere_06.stdout # Creates Manicdrummix.xm
$ ./build/dcm2xm --sphere --song 7 > sphere_07.stdout # Creates Hallucid.xm
$ ./build/dcm2xm --sphere --song 8 > sphere_08.stdout # Creates Perpetuate303.xm
$ ./build/dcm2xm --sphere --song 9 > sphere_09.stdout # Creates Phony.xm
$ ./build/dcm2xm --sphere --song 10 > sphere_10.stdout # Creates T._Grey.xm
$ ./build/dcm2xm --sphere --song 11 > sphere_11.stdout # Creates Learn.xm
$ ./build/dcm2xm --sphere --song 12 > sphere_12.stdout # Creates Zyp_Zyp.xm
$ ./build/dcm2xm --sphere --song 13 > sphere_13.stdout # Creates Extol.xm
$ ./build/dcm2xm --sphere --song 14 --enable-loops > sphere_14.stdout # Creates Magic_Fluter.xm
$ ./build/dcm2xm --sphere --song 15 --enable-loops > sphere_15.stdout # Creates Spooky_Baby.xm
$ ./build/dcm2xm --sphere --song 16 --enable-loops > sphere_16.stdout # Creates Zooming_Car.xm
$ ./build/dcm2xm --sphere --song 17 --enable-loops > sphere_17.stdout # Creates Cheddar_Funk.xm
$ ./build/dcm2xm --sphere --song 18 --enable-loops > sphere_18.stdout # Creates Snowymushrooms.xm
$ ./build/dcm2xm --sphere --song 19 --enable-loops > sphere_19.stdout # Creates Dog_Robot.xm
$ ./build/dcm2xm --sphere --song 20 --enable-loops > sphere_20.stdout # Creates Sappy.xm
$ ./build/dcm2xm --sphere --song 21 --enable-loops > sphere_21.stdout # Creates Skankbowlfight.xm
$ ./build/dcm2xm --sphere --song 22 --enable-loops > sphere_22.stdout # Creates Birthday_Bumps.xm