112 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/***************************************************************************3 * au88x0_a3d.h4 *5 * Fri Jul 18 14:16:03 20036 * Copyright 2003 mjander7 * mjander@users.sourceforge.net8 ****************************************************************************/9 10/*11 */12 13#ifndef _AU88X0_A3D_H14#define _AU88X0_A3D_H15 16//#include <openal.h>17 18#define HRTF_SZ 0x3819#define DLINE_SZ 0x2820 21#define CTRLID_HRTF 122#define CTRLID_ITD 223#define CTRLID_ILD 424#define CTRLID_FILTER 825#define CTRLID_GAINS 1626 27/* 3D parameter structs */28typedef unsigned short int a3d_Hrtf_t[HRTF_SZ];29typedef unsigned short int a3d_ItdDline_t[DLINE_SZ];30typedef unsigned short int a3d_atmos_t[5];31typedef unsigned short int a3d_LRGains_t[2];32typedef unsigned short int a3d_Itd_t[2];33typedef unsigned short int a3d_Ild_t[2];34 35typedef struct {36 void *vortex; // Formerly CAsp4HwIO*, now vortex_t*.37 unsigned int source; /* this_04 */38 unsigned int slice; /* this_08 */39 a3d_Hrtf_t hrtf[2];40 a3d_Itd_t itd;41 a3d_Ild_t ild;42 a3d_ItdDline_t dline;43 a3d_atmos_t filter;44} a3dsrc_t;45 46/* First Register bank */47 48#define A3D_A_HrtfCurrent 0x18000 /* 56 ULONG */49#define A3D_A_GainCurrent 0x180E050#define A3D_A_GainTarget 0x180E451#define A3D_A_A12Current 0x180E8 /* Atmospheric current. */52#define A3D_A_A21Target 0x180EC /* Atmospheric target */53#define A3D_A_B01Current 0x180F0 /* Atmospheric current */54#define A3D_A_B10Target 0x180F4 /* Atmospheric target */55#define A3D_A_B2Current 0x180F8 /* Atmospheric current */56#define A3D_A_B2Target 0x180FC /* Atmospheric target */57#define A3D_A_HrtfTarget 0x18100 /* 56 ULONG */58#define A3D_A_ITDCurrent 0x181E059#define A3D_A_ITDTarget 0x181E460#define A3D_A_HrtfDelayLine 0x181E8 /* 56 ULONG */61#define A3D_A_ITDDelayLine 0x182C8 /* 40/45 ULONG */62#define A3D_A_HrtfTrackTC 0x1837C /* Time Constants */63#define A3D_A_GainTrackTC 0x1838064#define A3D_A_CoeffTrackTC 0x1838465#define A3D_A_ITDTrackTC 0x1838866#define A3D_A_x1 0x1838C67#define A3D_A_x2 0x1839068#define A3D_A_y1 0x1839469#define A3D_A_y2 0x1839870#define A3D_A_HrtfOutL 0x1839C71#define A3D_A_HrtfOutR 0x183A072#define A3D_A_TAIL 0x183A473 74/* Second register bank */75#define A3D_B_HrtfCurrent 0x19000 /* 56 ULONG */76#define A3D_B_GainCurrent 0x190E077#define A3D_B_GainTarget 0x190E478#define A3D_B_A12Current 0x190E879#define A3D_B_A21Target 0x190EC80#define A3D_B_B01Current 0x190F081#define A3D_B_B10Target 0x190F482#define A3D_B_B2Current 0x190F883#define A3D_B_B2Target 0x190FC84#define A3D_B_HrtfTarget 0x19100 /* 56 ULONG */85#define A3D_B_ITDCurrent 0x191E086#define A3D_B_ITDTarget 0x191E487#define A3D_B_HrtfDelayLine 0x191E8 /* 56 ULONG */88#define A3D_B_TAIL 0x192C889 90/* There are 4 slices, 4 a3d each = 16 a3d sources. */91#define A3D_SLICE_BANK_A 0x18000 /* 4 sources */92#define A3D_SLICE_BANK_B 0x19000 /* 4 sources */93#define A3D_SLICE_VDBDest 0x19C00 /* 8 ULONG */94#define A3D_SLICE_VDBSource 0x19C20 /* 4 ULONG */95#define A3D_SLICE_ABReg 0x19C3096#define A3D_SLICE_CReg 0x19C3497#define A3D_SLICE_Control 0x19C3898#define A3D_SLICE_DebugReserved 0x19C3c /* Dangerous! */99#define A3D_SLICE_Pointers 0x19C40100#define A3D_SLICE_TAIL 0x1A000101 102// Slice size: 0x2000103// Source size: 0x3A4, 0x2C8104 105/* Address generator macro. */106#define a3d_addrA(slice,source,reg) (((slice)<<0xd)+((source)*0x3A4)+(reg))107#define a3d_addrB(slice,source,reg) (((slice)<<0xd)+((source)*0x2C8)+(reg))108#define a3d_addrS(slice,reg) (((slice)<<0xd)+(reg))109//#define a3d_addr(slice,source,reg) (((reg)>=0x19000) ? a3d_addr2((slice),(source),(reg)) : a3d_addr1((slice),(source),(reg)))110 111#endif /* _AU88X0_A3D_H */112