rizin/libr/bin/format/spc700/spc_specs.h
2015-11-27 13:03:18 +01:00

78 lines
1.5 KiB
C

/* radare - LGPL - 2015 - maijin */
#ifndef _SPC_H
#define _SPC_H
#define SPC_MAGIC "SNES-SPC700 Sound File Data"
#define SPC_HDR_SIZE sizeof (spc_hdr)
#define RAM_START_ADDRESS 0x100
#define RAM_SIZE 0x10000
#define DSP_REG_START_ADDRESS 0x10100
#define DSP_REG_SIZE 0x80
#define EXTRA_RAM_START_ADDRESS 0x101C0
#define EXTRA_RAM_SIZE 0x40
#define EXTENDED_ID666_START_ADDRESS 0x10200
typedef enum {
UNKNOWN,
ZSNES,
SNES9X,
} emulator_used;
typedef struct __attribute__((__packed__)) { //SNES9x
char song_title [32];
char game_title [32];
char name_of_dumper [16];
char comments [32];
ut8 date[11];
ut8 num_sec_bef_fade_out[3];
ut8 len_fade_out[5];
char artist_song [32];
bool default_channel_disabled;
emulator_used emulator_used[1];
ut8 reserved[1];
} id666_tag_text;
typedef struct __attribute__((__packed__)) { //ZSNES
char song_title [32];
char game_title [32];
char name_of_dumper [16];
char comments [32];
ut8 date[4];
ut8 unused[8];
ut8 num_sec_bef_fade_out[3];
ut8 len_fade_out[4];
char artist_song [32];
bool default_channel_disabled;
ut8 reserved[1];
} id666_tag_binary;
typedef struct __attribute__((__packed__)) {
char signature [33];
ut8 signature2 [2];
ut8 has_id666;
ut8 version;
} spc_hdr;
typedef struct __attribute__((__packed__)) {
ut8 pcl, pch;
ut8 a;
ut8 x;
ut8 y;
ut8 psw;
ut8 sp;
ut8 reserved_1, reserved_2;
} spc_reg;
typedef struct __attribute__((__packed__)) {
ut8 ram [0x10000];
ut8 dsp [128];
ut8 unused [0x40];
ut8 ipl_rom [0x40];
} spc_data;
#endif // _SPC_H