Database file structure: Located on the root directory of the player, it is called iRivNavi.iDB. All data is stored on least significant byte first. All data is structured in 64 bytes clusters. in this schemes the dash are 0x00 bytes. -0123456789ABDCEF0123456789ABCDEF- -> Header cluster 00000|iRivDB Ver 0.12-----------------| 00020|iRiver iHP-100 DB File----------| -> Number of files on DB cluster 00040|[NF]----------------------------| 00060|--------------------------------| -> FAT clusters 00080|[O1][O2][O3]--------------------| 000A0|--------------------------------| 000C0|--------------------------------| 000E0|--------------------------------| ... Many 64bytes "clusters" ... -> End of FAT mark cluster 0A080|Designed by iRiver--------------| 0A0A0|--------------------------------| -> Data clusters to the end 0A0C0|F1S1A1C1G1[Filename1]-[Songname1| 0A0E0|]-[Artist1]-[CDName1]-[Genre1]-F| 0A100|2S2A2C2G2[Filename2]-[Songname2]| 0A120|-[Artist2]-[CDName2]-[Genre2]-F3| [NF] Number of files in 32 bits LSO [O1] Offset of file1 (always 0x0000) 32 bits LSO from start of data 0xA0C0 [O2] Offset of file2, 32 bits LSO and so on... For file1 : F1 : Length of filename field (including final 0x00) 16 bits LSO S1 : Length of songname field ( '' '' ) 16 bits LSO A1 : Length of artist name field ( '' '' ) 16 bits LSO C1 : Length of CD name field ( '' '' ) 16 bits LSO G1 : Length of genre field ( '' '' ) 16 bits LSO [Filename1]- : Filename ended in 0x00 [Songame1]- : Song title ended in 0x00 [Artist1]- : Artist name ended in 0x00 [CDName1]- : Album name ended in 0x00 [Genre1]- : Genre ended in 0x00 and so on