mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
Update_SR_Register64 sets SR_TOP2BITS based on m, not h (does someone have tests saying otherwise?)
clean up dsp_base.inc a little, use some irom funcs where possible git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5069 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -112,6 +112,7 @@
|
||||
#define DSP_DSMAL 0xcf // DSP DMA Address Low (External)
|
||||
|
||||
#define DSP_FORMAT 0xd1 // Sample format
|
||||
#define DSP_ACUNK 0xd2 // Set to 3 on my dumps
|
||||
#define DSP_ACDATA1 0xd3 // used only by Zelda ucodes
|
||||
#define DSP_ACSAH 0xd4 // Start of loop
|
||||
#define DSP_ACSAL 0xd5
|
||||
@ -124,8 +125,9 @@
|
||||
#define DSP_YN2 0xdc
|
||||
#define DSP_ACCELERATOR 0xdd // ADPCM accelerator read. Used by AX.
|
||||
#define DSP_GAIN 0xde
|
||||
#define DSP_ACUNK2 0xdf // Set to 0xc on my dumps
|
||||
|
||||
#define DSP_DREQ_MASK 0xef // ARAM DMA Request Mask
|
||||
#define DSP_AMDM 0xef // ARAM DMA Request Mask 0: DMA with ARAM unmasked 1: masked
|
||||
|
||||
#define DSP_DIRQ 0xfb // DSP Irq Rest
|
||||
#define DSP_DMBH 0xfc // DSP Mailbox H
|
||||
|
@ -51,9 +51,9 @@ void Update_SR_Register64(s64 _Value, bool carry, bool overflow)
|
||||
g_dsp.r[DSP_REG_SR] |= SR_OVERFLOW;
|
||||
}
|
||||
|
||||
// Checks if top bits are equal, what is it good for?
|
||||
if (((_Value >> 62) == 0) || (_Value >> 62 == 3))
|
||||
{
|
||||
// Checks if top bits of m are equal, what is it good for?
|
||||
if (((_Value & 0xc0000000) == 0) || ((_Value & 0xc0000000) == 0xc0000000))
|
||||
{
|
||||
g_dsp.r[DSP_REG_SR] |= SR_TOP2BITS;
|
||||
}
|
||||
}
|
||||
|
@ -551,7 +551,7 @@ bool DSPAssembler::VerifyParams(const opc_t *opc, param_t *par, int count, bool
|
||||
{
|
||||
if (ext) fprintf(stderr, "(ext) ");
|
||||
if (par[i].val >= 0x1e && par[i].val <= 0x1f) {
|
||||
fprintf(stderr, "%i : %s", code_line, cur_line.c_str());
|
||||
fprintf(stderr, "%i : %s ", code_line, cur_line.c_str());
|
||||
fprintf(stderr, "WARNING: $ACM%d register used instead of $ACC%d register Line: %d Param: %d Ext: %d\n",
|
||||
(par[i].val & 1), (par[i].val & 1), code_line, current_param, ext);
|
||||
}
|
||||
@ -584,12 +584,12 @@ bool DSPAssembler::VerifyParams(const opc_t *opc, param_t *par, int count, bool
|
||||
if (ext) fprintf(stderr, "(ext) ");
|
||||
if (par[i].val >= 0x1e && par[i].val <= 0x1f)
|
||||
{
|
||||
fprintf(stderr, "%s", cur_line.c_str());
|
||||
fprintf(stderr, "%s ", cur_line.c_str());
|
||||
fprintf(stderr, "WARNING: $ACM%d register used instead of $ACL%d register Line: %d Param: %d\n",
|
||||
(par[i].val & 1), (par[i].val & 1), code_line, current_param);
|
||||
}
|
||||
else if (par[i].val >= 0x20 && par[i].val <= 0x21) {
|
||||
fprintf(stderr, "%s", cur_line.c_str());
|
||||
fprintf(stderr, "%s ", cur_line.c_str());
|
||||
fprintf(stderr, "WARNING: $ACC%d register used instead of $ACL%d register Line: %d Param: %d\n",
|
||||
(par[i].val & 1), (par[i].val & 1), code_line, current_param);
|
||||
}
|
||||
|
Reference in New Issue
Block a user