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
