diff options
| author | 2011-07-06 03:41:41 +0000 | |
|---|---|---|
| committer | 2011-07-06 03:41:41 +0000 | |
| commit | dc74c5f753c323fe7602eaacd70805ed12a0e7ba (patch) | |
| tree | 22fa93c09c9634e6b6ffd4b4863d89208d2e4e79 | |
| parent | 6be4bb32bcb2a99d41680c988ac5895c2f27cfa4 (diff) | |
Further upd7725 fixes, new code might actually work properly now, fixed uninitialized variables. [Lord Nightmare, Wilbert Pol]
| -rwxr-xr-x | src/emu/cpu/upd7725/upd7725.c | 10 | ||||
| -rwxr-xr-x | src/emu/cpu/upd7725/upd7725.h | 7 |
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; } }; |
