FF7/PSX/Sound/Opcodes/0xb4
Jump to navigation
Jump to search
0xB4 (Unknown Yet)
Has 3 8-bit parameters.
Source
// p[x] - parameter x (x counting from 0)
// ch[x] - main channel structure at offset x
static const uint32_t b4_table[] =
{
0x8004a044, 0x8004a05c, 0x8004a068, 0x8004a07c, 0x8004a088, 0x8004a09c, 0x8004a0a8, 0x8004a1e8, 0x8004a314, 0x8004a39c, 0x8004a23c, 0x8004a2e4, 0x8004a3c4, 0x8004a39c, 0x8004a314, 0x8004a39c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000030c, 0x00000000, 0x00000000, 0x00000000, 0x80138250, 0x00000001, 0x80034420, 0x8003447c, 0x800344c0, 0x800345bc, 0x80034600, 0x800346f8, 0x80034754, 0x80034428, 0x80035744, 0x80035430, 0x80034420, 0x800347b4, 0x800347f8, 0x800348f4, 0x80034974, 0x80034420, 0x80034444, 0x80034430, 0x80034420, 0x80034a58, 0x80034a90, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xc000c000, 0xc000c000, 0xc000c000, 0xc000c000, 0xc000c000, 0xc000c000, 0xc000c000, 0xc000c000, 0xc000c000, 0xc000c000, 0xc000c000, 0xc000c000
};
void OpcodeB4(uint8_t *ch, uint8_t *p)
{
ch[0x18] = p[2] < 0x48 ? b4_table[p[2]] : 0x00;
ch[0x38] |= 1;
if(ch[0x54]) { ch[0x72] = 0x00;
if(p[0]) ch[0x7E] = p[0] << 8; } else ch[0x72] = p[0];
ch[0x74] = ch[0x72];
ch[0x76] = p[1] ? p[1] : 0x100;
ch[0x78] = 0x01;
ch[0x7A] = p[2];
ch[0x7C] = (((ch[0x7e] & 0x7F00) >> 8) * (ch[0x7e] & 0x8000 ? ch[0x30] : ((ch[0x30] * 15) / 256))) >> 7;
}