Skip to content
chris-gilmorePublic

About

A dcm reader and converter to xm file format for N64's The New Tetris and Tetrisphere.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dcm2xm

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.

Make dcm2xm

$ mkdir ~/src
$ cd ~/src
$ git clone https://github.com/chris-gilmore/dcm2xm.git
$ cd dcm2xm
$ make

Extract samples and dcm assets from ROM

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

Install dependencies

Redhat-based

$ sudo dnf install lzo-devel python3-devel
$ pip3 install python-lzo

Debian-based

$ sudo apt-get install python3-lzo

Download n64tetristools

$ cd ~/src
$ git clone https://github.com/chris-gilmore/n64tetristools.git

Extract all samples

$ 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

Extract all dcm assets

$ 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

Usage

$ ./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

About

A dcm reader and converter to xm file format for N64's The New Tetris and Tetrisphere.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages