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))

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]

Data

Data are stored in the sub_chunk_2.

HEADER
...
+0x2C       DATA                [BYTE] * SUB_CHUNK_2_SIZE

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|