/* TMS5220 ROM Tables */ /* This is the energy lookup table (4-bits -> 10-bits) */ const unsigned short energytable[0x10]={ 0x0000,0x00C0,0x0140,0x01C0,0x0280,0x0380,0x0500,0x0740, 0x0A00,0x0E40,0x1440,0x1C80,0x2840,0x38C0,0x5040,0x7FC0}; /* This is the pitch lookup table (6-bits -> 8-bits) */ const unsigned short pitchtable [0x40]={ 0x0000,0x1000,0x1100,0x1200,0x1300,0x1400,0x1500,0x1600, 0x1700,0x1800,0x1900,0x1A00,0x1B00,0x1C00,0x1D00,0x1E00, 0x1F00,0x2000,0x2100,0x2200,0x2300,0x2400,0x2500,0x2600, 0x2700,0x2800,0x2900,0x2A00,0x2B00,0x2D00,0x2F00,0x3100, 0x3300,0x3500,0x3600,0x3900,0x3B00,0x3D00,0x3F00,0x4200, 0x4500,0x4700,0x4900,0x4D00,0x4F00,0x5100,0x5500,0x5700, 0x5C00,0x5F00,0x6300,0x6600,0x6A00,0x6E00,0x7300,0x7700, 0x7B00,0x8000,0x8500,0x8A00,0x8F00,0x9500,0x9A00,0xA000}; /* These are the reflection coefficient lookup tables */ /* K1 is (5-bits -> 9 bits+sign, 2's comp. fractional (-1 < x < 1) */ const short k1table [0x20]={ 0x82C0,0x8380,0x83C0,0x8440,0x84C0,0x8540,0x8600,0x8780, 0x8880,0x8980,0x8AC0,0x8C00,0x8D40,0x8F00,0x90C0,0x92C0, 0x9900,0xA140,0xAB80,0xB840,0xC740,0xD8C0,0xEBC0,0x0000, 0x1440,0x2740,0x38C0,0x47C0,0x5480,0x5EC0,0x6700,0x6D40}; /* K2 is (5-bits -> 9 bits+sign, 2's comp. fractional (-1 < x < 1) */ const short k2table [0x20]={ 0xAE00,0xB480,0xBB80,0xC340,0xCB80,0xD440,0xDDC0,0xE780, 0xF180,0xFBC0,0x0600,0x1040,0x1A40,0x2400,0x2D40,0x3600, 0x3E40,0x45C0,0x4CC0,0x5300,0x5880,0x5DC0,0x6240,0x6640, 0x69C0,0x6CC0,0x6F80,0x71C0,0x73C0,0x7580,0x7700,0x7E80}; /* K3 is (4-bits -> 9 bits+sign, 2's comp. fractional (-1 < x < 1) */ const short k3table [0x10]={ 0x9200,0x9F00,0xAD00,0xBA00,0xC800,0xD500,0xE300,0xF000, 0xFE00,0x0B00,0x1900,0x2600,0x3400,0x4100,0x4F00,0x5C00}; /* K4 is (4-bits -> 9 bits+sign, 2's comp. fractional (-1 < x < 1) */ const short k4table [0x10]={ 0xAE00,0xBC00,0xCA00,0xD800,0xE600,0xF400,0x0100,0x0F00, 0x1D00,0x2B00,0x3900,0x4700,0x5500,0x6300,0x7100,0x7E00}; /* K5 is (4-bits -> 9 bits+sign, 2's comp. fractional (-1 < x < 1) */ const short k5table [0x10]={ 0xAE00,0xBA00,0xC500,0xD100,0xDD00,0xE800,0xF400,0xFF00, 0x0B00,0x1700,0x2200,0x2E00,0x3900,0x4500,0x5100,0x5C00}; /* K6 is (4-bits -> 9 bits+sign, 2's comp. fractional (-1 < x < 1) */ const short k6table [0x10]={ 0xC000,0xCB00,0xD600,0xE100,0xEC00,0xF700,0x0300,0x0E00, 0x1900,0x2400,0x2F00,0x3A00,0x4500,0x5000,0x5B00,0x6600}; /* K7 is (4-bits -> 9 bits+sign, 2's comp. fractional (-1 < x < 1) */ const short k7table [0x10]={ 0xB300,0xBF00,0xCB00,0xD700,0xE300,0xEF00,0xFB00,0x0700, 0x1300,0x1F00,0x2B00,0x3700,0x4300,0x4F00,0x5A00,0x6600}; /* K8 is (3-bits -> 9 bits+sign, 2's comp. fractional (-1 < x < 1) */ const short k8table [0x08]={ 0xC000,0xD800,0xF000,0x0700,0x1F00,0x3700,0x4F00,0x6600}; /* K9 is (3-bits -> 9 bits+sign, 2's comp. fractional (-1 < x < 1) */ const short k9table [0x08]={ 0xC000,0xD400,0xE800,0xFC00,0x1000,0x2500,0x3900,0x4D00}; /* K10 is (3-bits -> 9 bits+sign, 2's comp. fractional (-1 < x < 1) */ const short k10table [0x08]={ 0xCD00,0xDF00,0xF100,0x0400,0x1600,0x2000,0x3B00,0x4D00}; /* chirp table */ static char chirptable[41]={ 0x00, 0x2a, 0xd4, 0x32, 0xb2, 0x12, 0x25, 0x14, 0x02, 0xe1, 0xc5, 0x02, 0x5f, 0x5a, 0x05, 0x0f, 0x26, 0xfc, 0xa5, 0xa5, 0xd6, 0xdd, 0xdc, 0xfc, 0x25, 0x2b, 0x22, 0x21, 0x0f, 0xff, 0xf8, 0xee, 0xed, 0xef, 0xf7, 0xf6, 0xfa, 0x00, 0x03, 0x02, 0x01 }; /* interpolation coefficients */ static char interp_coeff[8] = { 8, 8, 8, 4, 4, 2, 2, 1 };