Anonymous

Changes

From Final Fantasy Inside

FF7/PSX/Sound/Opcodes/0xb4b5

7,495 bytes added, 17:53, 9 June 2020
Add raw LFO data. In the future it will be desirable to add waveform visualizations and detailed explanations.
== LFO ==

=== LFO Forms ===

The two zeros are a special prefix for moving the LFO pointer, and the following value indicates the relative offset to move to.

const int16_t LFO_FORM_00[] = {
-0x1FFF, 0x3FFF, -0x3FFF, 0x5FFF, -0x5FFF,
0x7FFF, -0x7FFF,
0, 0, -2
};

const int16_t LFO_FORM_01[] = {
0x7FFF, -0x7FFF,
0, 0, -2
};

const int16_t LFO_FORM_02[] = {
0x1FFF, 0x0000, 0x3FFF, 0x0000, 0x5FFF,
0x0000, 0x7FFF,
0, 0, -2
};

const int16_t LFO_FORM_03[] = {
0x7FFF,
0x0000, 0x7FFF,
0, 0, -2
};

const int16_t LFO_FORM_04[] = {
-0x1FFF, 0x0000, -0x3FFF, 0x0000, -0x5FFF,
0x0000, -0x7FFF,
0, 0, -2
};

const int16_t LFO_FORM_05[] = {
-0x7FFF,
0x0000, -0x7FFF,
0, 0, -2
};

const int16_t LFO_FORM_06[] = {
0x0000, 0x0500, 0x09E2, 0x12CD, 0x169E, 0x19E1, 0x1C81, 0x1E6D,
0x1F9A, 0x1FFF, 0x1F9C, 0x1E71, 0x1C86, 0x19E8, 0x16A7, 0x12D7,
0x0E90, 0x09EE, 0x050D, 0x0000, -0x04F4, -0x09D6, -0x0E7A, -0x12C3,
-0x1696, -0x19DA, -0x1C7C, -0x1E6A, -0x1F99, -0x2000, -0x1F9F, -0x1E76,
-0x1C8D, -0x19F1, -0x16B1, -0x12E3, -0x0E9D, -0x09FC, -0x051B, 0x0000,
0x0A01, 0x13C4, 0x259A, 0x2D3C, 0x33C2, 0x3902, 0x3CDA, 0x3F34,
0x3FFF, 0x3F38, 0x3CE2, 0x390D, 0x33D1, 0x2D4F, 0x25AF, 0x1D21,
0x13DD, 0x0A1B, 0x0000, -0x09E8, -0x13AC, -0x1CF4, -0x2585, -0x2D2B,
-0x33B3, -0x38F7, -0x3CD3, -0x3F31, -0x4000, -0x3F3D, -0x3CEB, -0x391A,
-0x33E1, -0x2D62, -0x25C5, -0x1D3A, -0x13F7, -0x0A36, 0x0000, 0x0F02,
0x1DA6, 0x3867, 0x43DA, 0x4DA3, 0x5583, 0x5B47, 0x5ECE, 0x5FFF,
0x5ED4, 0x5B53, 0x5594, 0x4DBA, 0x43F6, 0x3886, 0x2BB2, 0x1DCB,
0x0F29, 0x0000, -0x0EDC, -0x1D82, -0x2B6E, -0x3848, -0x43C0, -0x4D8D,
-0x5572, -0x5B3D, -0x5EC9, -0x6000, -0x5EDC, -0x5B61, -0x55A7, -0x4DD2,
-0x4413, -0x38A7, -0x2BD7, -0x1DF2, -0x0F51,
0x0000, 0x1403, 0x2788, 0x4B34, 0x5A79, 0x6784, 0x7204, 0x79B5,
0x7E68, 0x7FFF, 0x7E71, 0x79C5, 0x721B, 0x67A3, 0x5A9E, 0x4B5E,
0x3A43, 0x27BA, 0x1437, 0x0000, -0x13D0, -0x2758, -0x39E7, -0x4B0A,
-0x5A55, -0x6766, -0x71ED, -0x79A6, -0x7E61, -0x8000, -0x7E7A, -0x79D6,
-0x7234, -0x67C2, -0x5AC3, -0x4B89, -0x3A73, -0x27ED, -0x146B,
0, 0, -39
};

const int16_t LFO_FORM_07[] = {
0x0000, 0x1403, 0x2788, 0x4B34, 0x5A79, 0x6784, 0x7204, 0x79B5,
0x7E68, 0x7FFF, 0x7E71, 0x79C5, 0x721B, 0x67A3, 0x5A9E, 0x4B5E,
0x3A43, 0x27BA, 0x1437, 0x0000, -0x13D0, -0x2758, -0x39E7, -0x4B0A,
-0x5A55, -0x6766, -0x71ED, -0x79A6, -0x7E61, -0x8000, -0x7E7A, -0x79D6,
-0x7234, -0x67C2, -0x5AC3, -0x4B89, -0x3A73, -0x27ED, -0x146B,
0, 0, -39
};

const int16_t LFO_FORM_0A[] = {
0x0000, 0x09E2, 0x12CD, 0x19E1, 0x1E6D, 0x1FFF, 0x1E71, 0x19E8,
0x12D7, 0x09EE, 0x000D, -0x09D6, -0x12C3, -0x19DA, -0x1E6A, -0x2000,
-0x1E76, -0x19F1, -0x12E3, -0x09FC, 0x0000, 0x13C4, 0x259A, 0x33C2,
0x3CDA, 0x3FFF, 0x3CE2, 0x33D1, 0x25AF, 0x13DD, 0x001A, -0x13AC,
-0x2585, -0x33B3, -0x3CD3, -0x4000, -0x3CEB, -0x33E1, -0x25C5, -0x13F7,
0x0000, 0x1DA6, 0x3867, 0x4DA3, 0x5B47, 0x5FFF, 0x5B53, 0x4DBA,
0x3886, 0x1DCB, 0x0027, -0x1D82, -0x3848, -0x4D8D, -0x5B3D, -0x6000,
-0x5B61, -0x4DD2, -0x38A7, -0x1DF2,
0x0000, 0x2788, 0x4B34, 0x6784, 0x79B5, 0x7FFF, 0x79C5, 0x67A3,
0x4B5E, 0x27BA, 0x0034, -0x2758, -0x4B0A, -0x6766, -0x79A6, -0x8000,
-0x79D6, -0x67C2, -0x4B89, -0x27ED,
0, 0, -20
};

const int16_t LFO_FORM_0B[] = {
0x0000, 0x2788, 0x4B34, 0x6784, 0x79B5, 0x7FFF, 0x79C5, 0x67A3,
0x4B5E, 0x27BA, 0x0034, -0x2758, -0x4B0A, -0x6766, -0x79A6, -0x8000,
-0x79D6, -0x67C2, -0x4B89, -0x27ED,
0, 0, -20
};

const int16_t LFO_FORM_08[] = {
0x0000, 0x07FF, 0x0FFF, 0x17FF, 0x1FFF, 0x17FF, 0x0FFF, 0x07FF,
0x0000, -0x07FF, -0x0FFF, -0x17FF, -0x1FFF, -0x17FF, -0x0FFF, -0x07FF,
0x0000, 0x0FFF, 0x1FFF, 0x2FFF, 0x3FFF, 0x2FFF, 0x1FFF, 0x0FFF,
0x0000, -0x0FFF, -0x1FFF, -0x2FFF, -0x3FFF, -0x2FFF, -0x1FFF, -0x0FFF,
0x0000, 0x17FF, 0x2FFF, 0x47FF, 0x5FFF, 0x47FF, 0x2FFF, 0x17FF,
0x0000, -0x17FF, -0x2FFF, -0x47FF, -0x5FFF, -0x47FF, -0x2FFF, -0x17FF,
0x0000, 0x1FFF, 0x3FFF, 0x5FFF, 0x7FFF, 0x5FFF, 0x3FFF, 0x1FFF,
0x0000, -0x1FFF, -0x3FFF, -0x5FFF, -0x7FFF, -0x5FFF, -0x3FFF, -0x1FFF,
0, 0, -16
};

const int16_t LFO_FORM_09[] = {
0x0000, 0x1FFF, 0x3FFF, 0x5FFF, 0x7FFF, 0x5FFF, 0x3FFF, 0x1FFF,
0x0000, -0x1FFF, -0x3FFF, -0x5FFF, -0x7FFF, -0x5FFF, -0x3FFF, -0x1FFF,
0, 0, -16
};

const int16_t LFO_FORM_0C[] = {
0x0000, 0x31FD, 0x7D05, -0x0A03, -0x1312, 0x793C, 0x75D0, 0x07FC,
-0x0BEF, -0x3D0B, 0x660F, 0x330E, 0x3FEA, -0x411F, -0x73EE, 0x1821,
-0x5005, 0x4A00, -0x2C19, -0x0B0B, -0x1EC9, -0x182D, 0x520D, 0x1103,
-0x5121, 0x4AF8, 0x0746, 0x70F4, -0x713F, -0x68E7, 0x3512, -0x0A00,
0x1B00, -0x4B17, 0x3B1E, -0x51EB, -0x6338, 0x65F9, -0x3CDD, 0x71F8,
0x2CF1, -0x59FC, -0x6D04, -0x36F2, -0x4FF7, 0x10E5, 0x0804, -0x7FFF,
0x12FA, 0x1118, -0x18F7, 0x47F8, -0x6A27, -0x22E4, 0x1B09, 0x0BF4,
0x7BFC, 0x20FF, -0x6BFC, 0x7DFC, -0x750B, -0x48E9, 0x74F9, 0x2AFC,
-0x22FA, -0x280D, -0x0B03, 0x0608, -0x0DE8, 0x69DF, -0x43F9, 0x4AF7,
-0x7615, -0x44D9, 0x1109, 0x7FEF, 0x3615, -0x1333, 0x7621, -0x67EB,
0x56CF, -0x2BFA, 0x3322, -0x201A, -0x50F6, -0x460B, -0x31F8, 0x5D05,
-0x4012, -0x0FE6, 0x20E8, -0x60EA, -0x730E, -0x3D19, -0x2DD2, -0x39FF,
-0x4630, -0x7EF4, 0x4323, 0x28DD, -0x6909, 0x5C3C, -0x6022, -0x5118,
-0x49E5, 0x3EF3, 0x1408, -0x2517, 0x2C0B, -0x4ECD, -0x571F, 0x05DA,
0x0914, 0x4E22, -0x0018, -0x780F, 0x21F0, -0x72DB, 0x7DFC, 0x1CF0,
0x5E11, 0x3DE8, -0x38F6, -0x70E9, -0x0010, 0x6A0D, -0x001D, 0x12F3,
0x041F, 0x780C, -0x3B11, 0x5B02, 0x3D02, 0x02F2, 0x1519, -0x252B,
-0x42F7, -0x6DE7, -0x0AFD, 0x62DD, 0x3806, 0x0F26, -0x5705, -0x1F02,
-0x091D, 0x0E02, 0x0210, 0x4406, -0x6B2C, -0x2EF6, -0x57BA, 0x10F1,
0x1ACC, -0x4203, 0x1A30, -0x5F15, 0x5FEA, -0x40F0, -0x4411, -0x20E5,
-0x3DF4, 0x2AE0, 0x3EF2, -0x51D9, 0x5001, -0x0623, 0x3611, -0x52E6,
0x07DF, 0x6D05, 0x1A0D, -0x4925, 0x6D2B, 0x3607, -0x0434, 0x4208,
0x0F21, 0x36F6, -0x37FA, 0x0603, -0x0229, 0x7817, 0x0605, -0x50F5,
-0x6A04, 0x10EC, -0x58F2, -0x520D, 0x660F, -0x420E, -0x2108, -0x1BDF,
-0x4E19, -0x0313, 0x5B1C, -0x5EF7, -0x330E, -0x0A0D, -0x6505, -0x4BE9,
-0x6D18, 0x7F08, 0x4BFA, -0x7603, 0x3C1C, -0x0311, -0x0D25, 0x4A1D,
0x671D, -0x2901, 0x65DA, -0x0E04, 0x6E0A, 0x0A0C, 0x11F8, 0x4A02,
0x5BFC, -0x14FA, -0x5A13, 0x30E6, -0x7FEF, -0x2DCC, 0x08F8, 0x43DC,
-0x09F7, -0x590E, -0x65F3, 0x7006, -0x0A16, -0x6304, -0x7EE2, -0x521A,
-0x19F2, -0x6A09, -0x4CFC, -0x6301, -0x1016, -0x0AE7, -0x0600, 0x3AF6,
-0x382B, 0x2722, -0x44C8, 0x43D1, 0x77ED, 0x4908, -0x31FE, -0x54F1,
0x3DEB, -0x24F6, 0x6401, 0x3FF9, 0x76F2, -0x6CF7, -0x2DF1, 0x74E5,
0, 0, -256
};

const int16_t *LFO_FORMS[] = {
LFO_FORM_00, // 0x00
LFO_FORM_01, // 0x01
LFO_FORM_02, // 0x02
LFO_FORM_03, // 0x03
LFO_FORM_04, // 0x04
LFO_FORM_05, // 0x05
LFO_FORM_06, // 0x06
LFO_FORM_07, // 0x07
LFO_FORM_08, // 0x08
LFO_FORM_09, // 0x09
LFO_FORM_0a, // 0x0a
LFO_FORM_0b, // 0x0b
LFO_FORM_0c, // 0x0c
LFO_FORM_09, // 0x0d
LFO_FORM_08, // 0x0e
LFO_FORM_09 // 0x0f
};
112
edits