DBASE500¶
Sound dialog.
Kind of modified WAVE.
Each entry is normally accessed by an offset that can be found in the file DBASE400.DAT (Offset found in this file must be multiplied by 8).
Note
All entry offset must be a mutiple of 8.
Align entry offset python pseudo-code¶
def align_8(x):
return (((x) + 8 - 1) & ~(8 - 1))
next_entry_offset = align_8(len(data) + sizeof(entry_header))
Header¶
+0x00 SIGNATURE [BYTE] * 0x08 // "DBASE500"
Entry¶
Each entry have the header “RIFF” reversed to “FFIR”.
They set the audio format to 0x2A (42), but in fact it’s Pulse Code Modulation (0x01 : PCM).
Header¶
+0x00 CHUNK_ID [BYTE][4] // "FFIR"
+0x04 CHUNK_LENGHT [DWORD]
+0x08 FORMAT [BYTE][4] // "WAVE"
+0x0C SUB_CHUNK_1_ID [BYTE][4] // "fmt "
+0x10 SUB_CHUNK_1_SIZE [DWORD]
+0x14 AUDIO_FORMAT [WORD]
+0x16 NUM_CHANNEL [WORD]
+0x18 SAMPLE_RATE [DWORD]
+0x1C BYTE_RATE [DWORD]
+0x20 BLOCK_ALIGN [WORD]
+0x22 BIT_PER_SAMPLE [WORD]
+0x24 SUB_CHUNK_2_ID [BYTE][4] // "data"
+0x28 SUB_CHUNK_2_SIZE [DWORD]
Example¶
> md5sum.exe DBASE500.DAT
bcee03ec2b751bc0015e8bec55d6ce5a DBASE500.DAT
> hexdump -C -s 7720056 -n 100 DBASE500.DAT
0075cc78 46 46 49 52 fd ab 00 00 57 41 56 45 66 6d 74 20 |FFIR....WAVEfmt |
0075cc88 10 00 00 00 2a 00 01 00 22 56 00 00 22 56 00 00 |....*..."V.."V..|
0075cc98 01 00 08 00 64 61 74 61 d9 ab 00 00 0b 02 01 03 |....data........|
0075cca8 04 00 05 00 06 00 03 04 00 03 00 04 00 03 02 04 |................|
0075ccb8 00 02 03 04 00 03 04 04 03 04 02 02 01 00 00 04 |................|
0075ccc8 04 01 04 00 01 04 00 04 02 00 02 01 00 04 01 00 |................|
0075ccd8 04 00 02 02 |....|
0075ccdc
WAV output:
Warning
HTML5 <audio> tag is used
Dbase400 associated info:
> md5sum /tmp/DBASE400.DAT
465eee4100d3cafb2662c966029b34f5 DBASE400.DAT
> hexdump -C -s 9532 -n 100 DBASE400.DAT
0000253c 8f b9 0e 00 1b 00 d7 00 44 61 6d 6e 2e 20 50 6f |........Damn. Po|
0000254c 77 65 72 27 73 20 6f 66 66 20 69 6e 20 68 65 72 |wer's off in her|
0000255c 65 2e 00 00 10 cf 0e 00 22 00 d7 00 54 68 69 73 |e......."...This|