/* * This file is part of the Aaru Data Preservation Suite. * Copyright (c) 2019-2025 Natalia Portillo. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include char *byte_array_to_hex_string(const unsigned char *array, int array_size) { char *hex_string = NULL; int j = 0; hex_string = malloc(array_size * 2 + 1); if(hex_string == NULL) return NULL; j = 0; for(int i = 0; i < array_size; i++) { hex_string[j] = (array[i] >> 4) + '0'; if(hex_string[j] > '9') hex_string[j] += 0x7; j++; hex_string[j] = (array[i] & 0xF) + '0'; if(hex_string[j] > '9') hex_string[j] += 0x7; j++; } hex_string[j] = 0; return hex_string; } const char *media_type_to_string(MediaType type) { switch(type) { // Generics, types 0 to 9 case UnknownMedia: return "Unknown"; case UnknownMO: return "Unknown Magneto-Optical"; case GENERIC_HDD: return "Generic Hard Disk"; case Microdrive: return "Microdrive"; case Zone_HDD: return "Zoned Hard Disk"; case FlashDrive: return "USB Flash Drive"; // Compact Disc formats, types 10 to 39 case CD: return "Compact Disc"; case CDDA: return "CD Digital Audio (Red Book)"; case CDG: return "CD+G"; case CDEG: return "CD+EG"; case CDI: return "CD-i (Green Book)"; case CDROM: return "CD-ROM (Yellow Book)"; case CDROMXA: return "CD-ROM XA"; case CDPLUS: return "CD+ (Blue Book)"; case CDMO: return "CD-MO (Orange Book)"; case CDR: return "CD-R"; case CDRW: return "CD-RW"; case CDMRW: return "Mount-Rainier CD-RW"; case VCD: return "Video CD"; case SVCD: return "Super Video CD"; case PCD: return "Photo CD"; case SACD: return "Super Audio CD"; case DDCD: return "Double-Density CD-ROM"; case DDCDR: return "DD CD-R"; case DDCDRW: return "DD CD-RW"; case DTSCD: return "DTS CD"; case CDMIDI: return "CD-MIDI"; case CDV: return "CD-Video"; case PD650: return "PD650"; case PD650_WORM: return "PD650 WORM"; case CDIREADY: return "CD-i Ready"; case FMTOWNS: return "FM Towns CD"; // DVD formats, types 40 to 50 case DVDROM: return "DVD-ROM"; case DVDR: return "DVD-R"; case DVDRW: return "DVD-RW"; case DVDPR: return "DVD+R"; case DVDPRW: return "DVD+RW"; case DVDPRWDL: return "DVD+RW DL"; case DVDRDL: return "DVD-R DL"; case DVDPRDL: return "DVD+R DL"; case DVDRAM: return "DVD-RAM"; case DVDRWDL: return "DVD-RW DL"; case DVDDownload: return "DVD-Download"; // HD-DVD formats, types 51 to 59 case HDDVDROM: return "HD DVD-ROM"; case HDDVDRAM: return "HD DVD-RAM"; case HDDVDR: return "HD DVD-R"; case HDDVDRW: return "HD DVD-RW"; case HDDVDRDL: return "HD DVD-R DL"; case HDDVDRWDL: return "HD DVD-RW DL"; // Blu-ray formats, types 60 to 69 case BDROM: return "BD-ROM"; case BDR: return "BD-R"; case BDRE: return "BD-RE"; case BDRXL: return "BD-R XL"; case BDREXL: return "BD-RE XL"; // Rare optical formats, types 70 to 79 case EVD: return "Enhanced Versatile Disc"; case FVD: return "Forward Versatile Disc"; case HVD: return "Holographic Versatile Disc"; case CBHD: return "China Blue High Definition"; case HDVMD: return "High Definition Versatile Multilayer Disc"; case VCDHD: return "Versatile Compact Disc High Density"; case SVOD: return "Stacked Volumetric Optical Disc"; case FDDVD: return "Five Dimensional Disc"; // LaserDisc, types 80 to 89 case LD: return "LaserDisc"; case LDROM: return "LaserDisc Data"; case LDROM2: return "LaserDisc ROM 2"; case LVROM: return "LVROM"; case MegaLD: return "MegaLD"; // MiniDisc, types 90 to 99 case HiMD: return "Hi-MD"; case MD: return "MiniDisc"; case MDData: return "MiniDisc DATA"; case MDData2: return "MiniDisc DATA 2"; // Plasmon UDO, types 100 to 109 case UDO: return "Ultra Density Optical"; case UDO2: return "Ultra Density Optical 2"; case UDO2_WORM: return "Ultra Density Optical 2 WORM"; // Sony game media, types 110 to 129 case PlayStationMemoryCard: return "PlayStation Memory Card"; case PlayStationMemoryCard2: return "PlayStation 2 Memory Card"; case PS1CD: return "PlayStation Game CD"; case PS2CD: return "PlayStation 2 Game CD"; case PS2DVD: return "PlayStation 2 Game DVD"; case PS3DVD: return "PlayStation 3 Game DVD"; case PS3BD: return "PlayStation 3 Game Blu-ray"; case PS4BD: return "PlayStation 4 Game Blu-ray"; case UMD: return "Universal Media Disc"; case PlayStationVitaGameCard: return "PS Vita Game Card"; // Microsoft game media, types 130 to 149 case XGD: return "Xbox Game Disc"; case XGD2: return "Xbox 360 Game Disc"; case XGD3: return "Xbox 360 Game Disc v3"; case XGD4: return "Xbox One Game Disc"; // Sega game media, types 150 to 169 case MEGACD: return "Mega CD"; case SATURNCD: return "Saturn CD"; case GDROM: return "GD-ROM"; case GDR: return "GD-R"; case SegaCard: return "Sega Card"; case MilCD: return "MIL-CD"; // Other game media, types 170 to 179 case HuCard: return "HuCard"; case SuperCDROM2: return "Super CD-ROM²"; case JaguarCD: return "Jaguar CD"; case ThreeDO: return "3DO CD"; case PCFX: return "PC-FX"; case NeoGeoCD: return "Neo Geo CD"; case CDTV: return "CDTV"; case CD32: return "CD32"; case Nuon: return "Nuon"; case Playdia: return "Playdia"; // Apple floppies, types 180 to 189 case Apple32SS: return "Apple 5.25\" SS DD 13 spt"; case Apple32DS: return "Apple 5.25\" DS DD 13 spt"; case Apple33SS: return "Apple 5.25\" SS DD 16 spt"; case Apple33DS: return "Apple 5.25\" DS DD 16 spt"; case AppleSonySS: return "Apple 3.5\" SS DD GCR"; case AppleSonyDS: return "Apple 3.5\" DS DD GCR"; case AppleFileWare: return "Apple FileWare (Twiggy)"; // PC floppies, types 190 to 209 case DOS_525_SS_DD_8: return "5.25\" SS DD 8 spt"; case DOS_525_SS_DD_9: return "5.25\" SS DD 9 spt"; case DOS_525_DS_DD_8: return "5.25\" DS DD 8 spt"; case DOS_525_DS_DD_9: return "5.25\" DS DD 9 spt"; case DOS_525_HD: return "5.25\" DS HD"; case DOS_35_SS_DD_8: return "3.5\" SS DD 8 spt"; case DOS_35_SS_DD_9: return "3.5\" SS DD 9 spt"; case DOS_35_DS_DD_8: return "3.5\" DS DD 8 spt"; case DOS_35_DS_DD_9: return "3.5\" DS DD 9 spt"; case DOS_35_HD: return "3.5\" DS HD"; case DOS_35_ED: return "3.5\" DS ED"; case DMF: return "DMF (3.5\" 21 spt)"; case DMF_82: return "DMF 82 tracks"; case XDF_525: return "XDF 5.25\""; case XDF_35: return "XDF 3.5\""; // IBM floppies, types 210 to 219 case IBM23FD: return "IBM 23FD"; case IBM33FD_128: return "IBM 33FD 128 bps"; case IBM33FD_256: return "IBM 33FD 256 bps"; case IBM33FD_512: return "IBM 33FD 512 bps"; case IBM43FD_128: return "IBM 43FD 128 bps"; case IBM43FD_256: return "IBM 43FD 256 bps"; case IBM53FD_256: return "IBM 53FD 256 bps"; case IBM53FD_512: return "IBM 53FD 512 bps"; case IBM53FD_1024: return "IBM 53FD 1024 bps"; // DEC floppies, types 220 to 229 case RX01: return "RX01"; case RX02: return "RX02"; case RX03: return "RX03"; case RX50: return "RX50"; // Acorn floppies, types 230 to 239 case ACORN_525_SS_SD_40: return "Acorn 5.25\" SS SD 40 tracks"; case ACORN_525_SS_SD_80: return "Acorn 5.25\" SS SD 80 tracks"; case ACORN_525_SS_DD_40: return "Acorn 5.25\" SS DD 40 tracks"; case ACORN_525_SS_DD_80: return "Acorn 5.25\" SS DD 80 tracks"; case ACORN_525_DS_DD: return "Acorn 5.25\" DS DD"; case ACORN_35_DS_DD: return "Acorn 3.5\" DS DD"; case ACORN_35_DS_HD: return "Acorn 3.5\" DS HD"; // Atari floppies, types 240 to 249 case ATARI_525_SD: return "Atari 5.25\" SD"; case ATARI_525_ED: return "Atari 5.25\" ED"; case ATARI_525_DD: return "Atari 5.25\" DD"; case ATARI_35_SS_DD: return "Atari 3.5\" SS DD"; case ATARI_35_DS_DD: return "Atari 3.5\" DS DD"; case ATARI_35_SS_DD_11: return "Atari 3.5\" SS DD 11 spt"; case ATARI_35_DS_DD_11: return "Atari 3.5\" DS DD 11 spt"; // Commodore floppies, types 250 to 259 case CBM_35_DD: return "Commodore 3.5\" DD (1581)"; case CBM_AMIGA_35_DD: return "Amiga 3.5\" DD"; case CBM_AMIGA_35_HD: return "Amiga 3.5\" HD"; case CBM_1540: return "Commodore 1540/1541"; case CBM_1540_Ext: return "Commodore 1540 Extended"; case CBM_1571: return "Commodore 1571"; // NEC/SHARP floppies, types 260 to 269 case NEC_8_SD: return "NEC 8\" SD"; case NEC_8_DD: return "NEC 8\" DD"; case NEC_525_SS: return "NEC 5.25\" SS"; case NEC_525_DS: return "NEC 5.25\" DS"; case NEC_525_HD: return "NEC 5.25\" HD"; case NEC_35_HD_8: return "NEC 3.5\" HD 8 spt"; case NEC_35_HD_15: return "NEC 3.5\" HD 15 spt"; case NEC_35_TD: return "NEC 3.5\" TD"; case SHARP_525_9: return "Sharp 5.25\" 9 spt"; case SHARP_35_9: return "Sharp 3.5\" 9 spt"; // ECMA floppies, types 270 to 289 case ECMA_99_8: return "ECMA-99 8 spt"; case ECMA_99_15: return "ECMA-99 15 spt"; case ECMA_99_26: return "ECMA-99 26 spt"; case ECMA_54: return "ECMA-54"; case ECMA_59: return "ECMA-59"; case ECMA_66: return "ECMA-66"; case ECMA_69_8: return "ECMA-69 8 spt"; case ECMA_69_15: return "ECMA-69 15 spt"; case ECMA_69_26: return "ECMA-69 26 spt"; case ECMA_70: return "ECMA-70"; case ECMA_78: return "ECMA-78"; case ECMA_78_2: return "ECMA-78-2"; // Non-standard PC formats, types 290 to 308 case FDFORMAT_525_DD: return "FDFORMAT 5.25\" DD"; case FDFORMAT_525_HD: return "FDFORMAT 5.25\" HD"; case FDFORMAT_35_DD: return "FDFORMAT 3.5\" DD"; case FDFORMAT_35_HD: return "FDFORMAT 3.5\" HD"; // Apricot, type 309 case Apricot_35: return "Apricot 3.5\""; // OnStream ADR, types 310 to 319 case ADR2120: return "ADR 2120"; case ADR260: return "ADR 260"; case ADR30: return "ADR 30"; case ADR50: return "ADR 50"; // AIT, types 320 to 339 case AIT1: return "AIT-1"; case AIT1Turbo: return "AIT-1 Turbo"; case AIT2: return "AIT-2"; case AIT2Turbo: return "AIT-2 Turbo"; case AIT3: return "AIT-3"; case AIT3Ex: return "AIT-3 Ex"; case AIT3Turbo: return "AIT-3 Turbo"; case AIT4: return "AIT-4"; case AIT5: return "AIT-5"; case AITETurbo: return "AITE Turbo"; case SAIT1: return "SAIT-1"; case SAIT2: return "SAIT-2"; // Iomega, types 340 to 359 case Bernoulli: return "Bernoulli"; case Bernoulli2: return "Bernoulli II"; case Ditto: return "Ditto"; case DittoMax: return "Ditto Max"; case Jaz: return "Jaz"; case Jaz2: return "Jaz 2"; case PocketZip: return "PocketZip"; case REV120: return "REV 120"; case REV35: return "REV 35"; case REV70: return "REV 70"; case ZIP100: return "Zip 100"; case ZIP250: return "Zip 250"; case ZIP750: return "Zip 750"; // Audio/video, types 360 to 369 case CompactCassette: return "Compact Cassette"; case Data8: return "Data8"; case MiniDV: return "MiniDV"; case Dcas25: return "D/CAS-25"; case Dcas85: return "D/CAS-85"; case Dcas103: return "D/CAS-103"; // CompactFlash, types 370 to 379 case CFast: return "CFast"; case CompactFlash: return "CompactFlash"; case CompactFlashType2: return "CompactFlash Type II"; // DAT/DDS, types 380 to 389 case DigitalAudioTape: return "Digital Audio Tape"; case DAT160: return "DAT 160"; case DAT320: return "DAT 320"; case DAT72: return "DAT 72"; case DDS1: return "DDS-1"; case DDS2: return "DDS-2"; case DDS3: return "DDS-3"; case DDS4: return "DDS-4"; // DEC tapes, types 390 to 399 case CompactTapeI: return "CompactTape I"; case CompactTapeII: return "CompactTape II"; case DECtapeII: return "DECtape II"; case DLTtapeIII: return "DLTtape III"; case DLTtapeIIIxt: return "DLTtape IIIxt"; case DLTtapeIV: return "DLTtape IV"; case DLTtapeS4: return "DLTtape S4"; case SDLT1: return "SDLT-1"; case SDLT2: return "SDLT-2"; case VStapeI: return "VStape I"; // Exabyte, types 400 to 419 case Exatape15m: return "Exatape 15m"; case Exatape22m: return "Exatape 22m"; case Exatape22mAME: return "Exatape 22m AME"; case Exatape28m: return "Exatape 28m"; case Exatape40m: return "Exatape 40m"; case Exatape45m: return "Exatape 45m"; case Exatape54m: return "Exatape 54m"; case Exatape75m: return "Exatape 75m"; case Exatape76m: return "Exatape 76m"; case Exatape80m: return "Exatape 80m"; case Exatape106m: return "Exatape 106m"; case Exatape160mXL: return "Exatape 160m XL"; case Exatape112m: return "Exatape 112m"; case Exatape125m: return "Exatape 125m"; case Exatape150m: return "Exatape 150m"; case Exatape170m: return "Exatape 170m"; case Exatape225m: return "Exatape 225m"; // PCMCIA/ExpressCard, types 420 to 429 case ExpressCard34: return "ExpressCard/34"; case ExpressCard54: return "ExpressCard/54"; case PCCardTypeI: return "PC Card Type I"; case PCCardTypeII: return "PC Card Type II"; case PCCardTypeIII: return "PC Card Type III"; case PCCardTypeIV: return "PC Card Type IV"; // SyQuest, types 430 to 449 case EZ135: return "EZ 135"; case EZ230: return "EZ 230"; case Quest: return "Quest"; case SparQ: return "SparQ"; case SQ100: return "SyQuest 100"; case SQ200: return "SyQuest 200"; case SQ300: return "SyQuest 300"; case SQ310: return "SyQuest 310"; case SQ327: return "SyQuest 327"; case SQ400: return "SyQuest 400"; case SQ800: return "SyQuest 800"; case SQ1500: return "SyQuest 1500"; case SQ2000: return "SyQuest 2000"; case SyJet: return "SyJet"; // Nintendo, types 450 to 469 case FamicomGamePak: return "Famicom Cartridge"; case GameBoyAdvanceGamePak: return "Game Boy Advance Cartridge"; case GameBoyGamePak: return "Game Boy Cartridge"; case GOD: return "GameCube Optical Disc"; case N64DD: return "Nintendo 64DD"; case N64GamePak: return "Nintendo 64 Cartridge"; case NESGamePak: return "NES Cartridge"; case Nintendo3DSGameCard: return "Nintendo 3DS Game Card"; case NintendoDiskCard: return "Famicom Disk System"; case NintendoDSGameCard: return "Nintendo DS Game Card"; case NintendoDSiGameCard: return "Nintendo DSi Game Card"; case SNESGamePak: return "SNES Cartridge"; case SNESGamePakUS: return "SNES Cartridge (US)"; case WOD: return "Wii Optical Disc"; case WUOD: return "Wii U Optical Disc"; case SwitchGameCard: return "Switch Game Card"; // IBM tapes, types 470 to 479 case IBM3470: return "IBM 3470"; case IBM3480: return "IBM 3480"; case IBM3490: return "IBM 3490"; case IBM3490E: return "IBM 3490E"; case IBM3592: return "IBM 3592"; // LTO, types 480 to 509 case LTO: return "LTO Ultrium"; case LTO2: return "LTO-2"; case LTO3: return "LTO-3"; case LTO3WORM: return "LTO-3 WORM"; case LTO4: return "LTO-4"; case LTO4WORM: return "LTO-4 WORM"; case LTO5: return "LTO-5"; case LTO5WORM: return "LTO-5 WORM"; case LTO6: return "LTO-6"; case LTO6WORM: return "LTO-6 WORM"; case LTO7: return "LTO-7"; case LTO7WORM: return "LTO-7 WORM"; // MemoryStick, types 510 to 519 case MemoryStick: return "Memory Stick"; case MemoryStickDuo: return "Memory Stick Duo"; case MemoryStickMicro: return "Memory Stick Micro"; case MemoryStickPro: return "Memory Stick PRO"; case MemoryStickProDuo: return "Memory Stick PRO Duo"; // SecureDigital, types 520 to 529 case microSD: return "microSD"; case miniSD: return "miniSD"; case SecureDigital: return "Secure Digital"; // MultiMediaCard, types 530 to 539 case MMC: return "MultiMediaCard"; case MMCmicro: return "MMCmicro"; case RSMMC: return "RS-MMC"; case MMCplus: return "MMCplus"; case MMCmobile: return "MMCmobile"; // SLR, types 540 to 569 case MLR1: return "MLR1"; case MLR1SL: return "MLR1 SL"; case MLR3: return "MLR3"; case SLR1: return "SLR1"; case SLR2: return "SLR2"; case SLR3: return "SLR3"; case SLR32: return "SLR32"; case SLR32SL: return "SLR32 SL"; case SLR4: return "SLR4"; case SLR5: return "SLR5"; case SLR5SL: return "SLR5 SL"; case SLR6: return "SLR6"; case SLRtape7: return "SLRtape 7"; case SLRtape7SL: return "SLRtape 7 SL"; case SLRtape24: return "SLRtape 24"; case SLRtape24SL: return "SLRtape 24 SL"; case SLRtape40: return "SLRtape 40"; case SLRtape50: return "SLRtape 50"; case SLRtape60: return "SLRtape 60"; case SLRtape75: return "SLRtape 75"; case SLRtape100: return "SLRtape 100"; case SLRtape140: return "SLRtape 140"; // QIC, types 570 to 589 case QIC11: return "QIC-11"; case QIC120: return "QIC-120"; case QIC1350: return "QIC-1350"; case QIC150: return "QIC-150"; case QIC24: return "QIC-24"; case QIC3010: return "QIC-3010"; case QIC3020: return "QIC-3020"; case QIC3080: return "QIC-3080"; case QIC3095: return "QIC-3095"; case QIC320: return "QIC-320"; case QIC40: return "QIC-40"; case QIC525: return "QIC-525"; case QIC80: return "QIC-80"; // StorageTek, types 590 to 609 case STK4480: return "STK 4480"; case STK4490: return "STK 4490"; case STK9490: return "STK 9490"; case T9840A: return "T9840A"; case T9840B: return "T9840B"; case T9840C: return "T9840C"; case T9840D: return "T9840D"; case T9940A: return "T9940A"; case T9940B: return "T9940B"; case T10000A: return "T10000A"; case T10000B: return "T10000B"; case T10000C: return "T10000C"; case T10000D: return "T10000D"; // Travan, types 610 to 619 case Travan1: return "Travan"; case Travan1Ex: return "Travan-1 Ex"; case Travan3: return "Travan-3"; case Travan3Ex: return "Travan-3 Ex"; case Travan4: return "Travan-4"; case Travan5: return "Travan-5"; case Travan7: return "Travan-7"; // VXA, types 620 to 629 case VXA1: return "VXA-1"; case VXA2: return "VXA-2"; case VXA3: return "VXA-3"; // Magneto-optical, types 630 to 659 case ECMA_153: return "ECMA-153 (M.O.)"; case ECMA_153_512: return "ECMA-153 512 bps (M.O.)"; case ECMA_154: return "ECMA-154 (M.O.)"; case ECMA_183_512: return "ECMA-183 512 bps (M.O.)"; case ECMA_183: return "ECMA-183 (M.O.)"; case ECMA_184_512: return "ECMA-184 512 bps (M.O.)"; case ECMA_184: return "ECMA-184 (M.O.)"; case ECMA_189: return "ECMA-189 (M.O.)"; case ECMA_190: return "ECMA-190 (M.O.)"; case ECMA_195: return "ECMA-195 (M.O.)"; case ECMA_195_512: return "ECMA-195 512 bps (M.O.)"; case ECMA_201: return "ECMA-201 (M.O.)"; case ECMA_201_ROM: return "ECMA-201 ROM (M.O.)"; case ECMA_223: return "ECMA-223 (M.O.)"; case ECMA_223_512: return "ECMA-223 512 bps (M.O.)"; case ECMA_238: return "ECMA-238 (M.O.)"; case ECMA_239: return "ECMA-239 (M.O.)"; case ECMA_260: return "ECMA-260 (M.O.)"; case ECMA_260_Double: return "ECMA-260 Double (M.O.)"; case ECMA_280: return "ECMA-280 (M.O.)"; case ECMA_317: return "ECMA-317 (M.O.)"; case ECMA_322: return "ECMA-322 (M.O.)"; case ECMA_322_2k: return "ECMA-322 2k (M.O.)"; case GigaMo: return "GigaMo"; case GigaMo2: return "GigaMo 2"; // Other floppies, types 660 to 689 case CompactFloppy: return "Compact Floppy"; case DemiDiskette: return "Demi Diskette"; case Floptical: return "Floptical"; case HiFD: return "HiFD"; case QuickDisk: return "QuickDisk"; case UHD144: return "UHD 144"; case VideoFloppy: return "Video Floppy"; case Wafer: return "Wafer"; case ZXMicrodrive: return "ZX Microdrive"; // Miscellaneous, types 670 to 689 case BeeCard: return "BeeCard"; case Borsu: return "Borsu"; case DataStore: return "DataStore"; case DIR: return "DIR"; case DST: return "DST"; case DTF: return "DTF"; case DTF2: return "DTF2"; case Flextra3020: return "Flextra 3020"; case Flextra3225: return "Flextra 3225"; case HiTC1: return "HiTC1"; case HiTC2: return "HiTC2"; case LT1: return "LT-1"; case MiniCard: return "MiniCard"; case Orb: return "Orb"; case Orb5: return "Orb 5"; case SmartMedia: return "SmartMedia"; case xD: return "xD-Picture Card"; case XQD: return "XQD"; case DataPlay: return "DataPlay"; // Apple media, types 690 to 699 case AppleProfile: return "Apple Profile"; case AppleWidget: return "Apple Widget"; case AppleHD20: return "Apple HD20"; case PriamDataTower: return "Priam DataTower"; case Pippin: return "Pippin"; // DEC hard disks, types 700 to 729 case RA60: return "RA60"; case RA80: return "RA80"; case RA81: return "RA81"; case RC25: return "RC25"; case RD31: return "RD31"; case RD32: return "RD32"; case RD51: return "RD51"; case RD52: return "RD52"; case RD53: return "RD53"; case RD54: return "RD54"; case RK06: return "RK06"; case RK06_18: return "RK06 18-bit"; case RK07: return "RK07"; case RK07_18: return "RK07 18-bit"; case RM02: return "RM02"; case RM03: return "RM03"; case RM05: return "RM05"; case RP02: return "RP02"; case RP02_18: return "RP02 18-bit"; case RP03: return "RP03"; case RP03_18: return "RP03 18-bit"; case RP04: return "RP04"; case RP04_18: return "RP04 18-bit"; case RP05: return "RP05"; case RP05_18: return "RP05 18-bit"; case RP06: return "RP06"; case RP06_18: return "RP06 18-bit"; // Imation, types 730 to 739 case LS120: return "LS-120 SuperDisk"; case LS240: return "LS-240 SuperDisk"; case FD32MB: return "32MB Floppy"; case RDX: return "RDX"; case RDX320: return "RDX 320"; // VideoNow, types 740 to 749 case VideoNow: return "VideoNow"; case VideoNowColor: return "VideoNow Color"; case VideoNowXp: return "VideoNow XP"; // Iomega, types 750 to 759 case Bernoulli10: return "Bernoulli Box (10Mb)"; case Bernoulli20: return "Bernoulli Box (20Mb)"; case BernoulliBox2_20: return "Bernoulli Box II (20Mb)"; // Kodak, types 760 to 769 case KodakVerbatim3: return "Kodak/Verbatim (3Mb)"; case KodakVerbatim6: return "Kodak/Verbatim (6Mb)"; case KodakVerbatim12: return "Kodak/Verbatim (12Mb)"; // Sony and Panasonic Blu-ray derived, types 770 to 799 case ProfessionalDisc: return "Professional Disc for video"; case ProfessionalDiscDual: return "Professional Disc for video"; case ProfessionalDiscTriple: return "Professional Disc for video"; case ProfessionalDiscQuad: return "Professional Disc for video"; case PDD: return "Professional Disc for DATA"; case PDD_WORM: return "Professional Disc for DATA"; case ArchivalDisc: return "Archival Disc"; case ArchivalDisc2: return "Archival Disc"; case ArchivalDisc3: return "Archival Disc"; case ODC300R: return "Optical Disc archive"; case ODC300RE: return "Optical Disc archive"; case ODC600R: return "Optical Disc archive"; case ODC600RE: return "Optical Disc archive"; case ODC1200RE: return "Optical Disc archive"; case ODC1500R: return "Optical Disc archive"; case ODC3300R: return "Optical Disc archive"; case ODC5500R: return "Optical Disc archive"; // Magneto-optical, types 800 to 819 case ECMA_322_1k: return "5,25\", M.O., 4383356 sectors, 1024 bytes/sector, ECMA-322, ISO 22092, 9.1Gb/cart"; case ECMA_322_512: return "5,25\", M.O., ??????? sectors, 512 bytes/sector, ECMA-322, ISO 22092, 9.1Gb/cart"; case ISO_14517: return "5,25\", M.O., 1273011 sectors, 1024 bytes/sector, ISO 14517, 2.6Gb/cart"; case ISO_14517_512: return "5,25\", M.O., 2244958 sectors, 512 bytes/sector, ISO 14517, 2.3Gb/cart"; case ISO_15041_512: return "3,5\", M.O., 1041500 sectors, 512 bytes/sector, ISO 15041, 540Mb/cart"; case HSM650: return "Sony HyperStorage"; // More floppy formats, types 820 to deprecated case MetaFloppy_Mod_I: return "5.25\", SS, DD, 35 tracks, 16 spt, 256 bytes/sector, MFM, 48 tpi, ???rpm"; case HF12: return "HyperFlex (12Mb)"; case HF24: return "HyperFlex (24Mb)"; case AtariLynxCard: return "Atari Lynx card"; case AtariJaguarCartridge: return "Atari Jaguar cartridge"; default: return "Unknown Media Type"; } }