// // Generated By: dol2asm // Translation Unit: JASRegisterParam // #include "JSystem/JAudio2/JASRegisterParam.h" #include "dolphin/types.h" // // Types: // // // Forward References: // // // External References: // // // Declarations: // /* 80293644-80293664 28DF84 0020+00 0/0 1/1 0/0 .text __ct__16JASRegisterParamFv */ JASRegisterParam::JASRegisterParam() { for (int i = 0; i < 14; i++) { field_0x0[i] = 0; } } /* 80293664-80293684 28DFA4 0020+00 0/0 1/1 0/0 .text init__16JASRegisterParamFv */ void JASRegisterParam::init() { for (int i = 0; i < 14; i++) { field_0x0[i] = 0; } } /* ############################################################################################## */ /* 80293684-802937B8 28DFC4 0134+00 1/0 4/4 0/0 .text * write__16JASRegisterParamFQ216JASRegisterParam5RegIDUl */ void JASRegisterParam::write(JASRegisterParam::RegID param_0, u32 param_1) { if (param_0 < 14) { if (param_0 <= 2) { field_0x0[param_0] = (u8)param_1; return; } field_0x0[param_0] = param_1; return; } switch (param_0) { case 32: field_0x0[0] = (param_1 >> 8) & 0xff; field_0x0[1] = param_1 & 0xff; break; case 33: field_0x0[4] = param_1 >> 16; field_0x0[5] = param_1; break; case 34: field_0x0[4] &= 0xff; field_0x0[4] |= ((param_1 & 0xff) << 8); break; case 35: field_0x0[4] &= 0xff00; field_0x0[4] |= param_1 & 0xff; break; case 36: field_0x0[5] &= 0xff; field_0x0[5] |= (param_1 & 0xff) << 8; break; case 37: field_0x0[5] &= 0xff00; field_0x0[5] |= param_1 & 0xff; break; case 38: field_0x0[6] = param_1 >> 16; field_0x0[7] = param_1; break; case 39: field_0x0[8] = param_1 >> 16; field_0x0[9] = param_1; break; case 40: field_0x0[10] = param_1 >> 16; field_0x0[11] = param_1; break; case 41: field_0x0[12] = param_1 >> 16; field_0x0[13] = param_1; break; } } /* ############################################################################################## */ /* 802937B8-802938BC 28E0F8 0104+00 1/0 1/1 0/0 .text * read__16JASRegisterParamFQ216JASRegisterParam5RegID */ u32 JASRegisterParam::read(JASRegisterParam::RegID param_0) { if (param_0 < 14) { return field_0x0[param_0]; } u32 rv = 0; switch (param_0) { case 32: rv = ((field_0x0[0] & 0xff) << 8) | (field_0x0[1] & 0xff) ; break; case 33: rv = field_0x0[4]; rv <<= 16; rv |= field_0x0[5]; break; case 34: rv = (u8)(field_0x0[4] >> 8); break; case 35: rv = (u8)field_0x0[4]; break; case 36: rv = (u8)(field_0x0[5] >> 8); break; case 37: rv = (u8)field_0x0[5]; break; case 38: rv = field_0x0[6]; rv <<= 16; rv |= field_0x0[7]; break; case 39: rv = field_0x0[8]; rv <<= 16; rv |= field_0x0[9]; break; case 40: rv = field_0x0[10]; rv <<= 16; rv |= field_0x0[11]; break; case 41: // !@bug I think this should get field_0x0[12] and field_0x0[13]. Looks like a copy paste bug. rv = field_0x0[10]; rv <<= 16; rv |= field_0x0[11]; break; } return rv; }