summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Jonathan Gevaryahu <Lord-Nightmare@users.noreply.github.com>2011-07-06 03:41:41 +0000
committer Jonathan Gevaryahu <Lord-Nightmare@users.noreply.github.com>2011-07-06 03:41:41 +0000
commitdc74c5f753c323fe7602eaacd70805ed12a0e7ba (patch)
tree22fa93c09c9634e6b6ffd4b4863d89208d2e4e79 /src
parent6be4bb32bcb2a99d41680c988ac5895c2f27cfa4 (diff)
Further upd7725 fixes, new code might actually work properly now, fixed uninitialized variables. [Lord Nightmare, Wilbert Pol]
Diffstat (limited to 'src')
-rwxr-xr-xsrc/emu/cpu/upd7725/upd7725.c10
-rwxr-xr-xsrc/emu/cpu/upd7725/upd7725.h7
2 files changed, 11 insertions, 6 deletions
diff --git a/src/emu/cpu/upd7725/upd7725.c b/src/emu/cpu/upd7725/upd7725.c
index f4c13260689..1c7966ccf51 100755
--- a/src/emu/cpu/upd7725/upd7725.c
+++ b/src/emu/cpu/upd7725/upd7725.c
@@ -230,7 +230,9 @@ void necdsp_device::state_string_export(const device_state_entry &entry, astring
regs.flaga.c ? "C" : "c",
regs.flaga.z ? "Z" : "z",
regs.flaga.ov1 ? "OV1" : "ov1",
- regs.flaga.ov0 ? "OV0" : "ov0");
+ regs.flaga.ov0 ? "OV0" : "ov0",
+ regs.flaga.ov0p ? "OV0P" : "ov0p",
+ regs.flaga.ov0pp ? "OV0PP" : "ov0pp");
break;
case UPD7725_FLAGB:
@@ -240,7 +242,9 @@ void necdsp_device::state_string_export(const device_state_entry &entry, astring
regs.flagb.c ? "C" : "c",
regs.flagb.z ? "Z" : "z",
regs.flagb.ov1 ? "OV1" : "ov1",
- regs.flagb.ov0 ? "OV0" : "ov0");
+ regs.flagb.ov0 ? "OV0" : "ov0",
+ regs.flagb.ov0p ? "OV0P" : "ov0p",
+ regs.flagb.ov0pp ? "OV0PP" : "ov0pp");
break;
}
}
@@ -395,6 +399,8 @@ void necdsp_device::exec_op(UINT32 opcode) {
flag.s1 = 0;
flag.ov0 = 0;
flag.ov1 = 0;
+ flag.ov0p = 0;
+ flag.ov0pp = 0;
switch(pselect) {
case 0: p = dataRAM[regs.dp]; break;
diff --git a/src/emu/cpu/upd7725/upd7725.h b/src/emu/cpu/upd7725/upd7725.h
index 44f39099eef..1ad811144fa 100755
--- a/src/emu/cpu/upd7725/upd7725.h
+++ b/src/emu/cpu/upd7725/upd7725.h
@@ -96,17 +96,16 @@ protected:
private:
struct Flag
{
- bool s1, s0, c, z, ov1, ov0;
- bool ov0p, ov0pp; // these are the previous states of the ov0 bit and are used for updating ov1
+ bool s1, s0, c, z, ov1, ov0, ov0p, ov0pp;
inline operator unsigned() const
{
- return (s1 << 5) + (s0 << 4) + (c << 3) + (z << 2) + (ov1 << 1) + (ov0 << 0);
+ return (s1 << 7) + (s0 << 6) + (c << 5) + (z << 4) + (ov1 << 3) + (ov0 << 2) + (ov0p << 1) + (ov0pp << 0);
}
inline unsigned operator=(unsigned d)
{
- s1 = d & 0x20; s0 = d & 0x10; c = d & 0x08; z = d & 0x04; ov1 = d & 0x02; ov0 = d & 0x01;
+ s1 = d & 0x80; s0 = d & 0x40; c = d & 0x20; z = d & 0x10; ov1 = d & 0x08; ov0 = d & 0x04; ov0p = d & 0x02; ov0pp = d & 0x01;
return d;
}
};