8000 move emu to mod and fix rep vs repe and fix adc/add8 by brandonros · Pull Request #73 · sha0coder/libscemu · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Dec 27, 2024. It is now read-only.

move emu to mod and fix rep vs repe and fix adc/add8 #73

Merged
merged 11 commits into from
Dec 26, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
adc change?
  • Loading branch information
brandonros committed Dec 25, 2024
commit 8e902af69a71439c3be2d4375251dbafb6d1074a
20 changes: 13 additions & 7 deletions src/emu/mod.rs
AF54
Original file line number Diff line number Diff line change
Expand Up @@ -5162,15 +5162,21 @@ impl Emu {
None => return false,
};

let rflags = self.flags.dump();
log::info!("DEBUG: adc value0: 0x{:x}, value1: 0x{:x}, cf: 0x{:x}, rflags: 0x{:x}", value0, value1, cf, rflags);

let res: u64;
match self.get_operand_sz(&ins, 1) {
64 => res = self.flags.add64(value0, value1 + cf),
32 => res = self.flags.add32(value0, value1 + cf),
16 => res = self.flags.add16(value0, value1 + cf),
8 => res = self.flags.add8(value0, value1 + cf),
64 => res = self.flags.add64(value0, value1.wrapping_add(cf)),
32 => res = self.flags.add32(value0, (value1 & 0xffffffff).wrapping_add(cf)),
16 => res = self.flags.add16(value0, (value1 & 0xffff).wrapping_add(cf)),
8 => res = self.flags.add8(value0, (value1 & 0xff).wrapping_add(cf)),
_ => unreachable!("weird size"),
}

let rflags = self.flags.dump();
log::info!("DEBUG: adc res: 0x{:x}, rflags: 0x{:x}", res, rflags);

if !self.set_operand_value(&ins, 0, res) {
return false;
}
Expand All @@ -5197,9 +5203,9 @@ impl Emu {
let sz = self.get_operand_sz(&ins, 1);
match sz {
64 => res = self.flags.sub64(value0, value1.wrapping_add(cf)),
32 => res = self.flags.sub32(value0, value1.wrapping_add(cf)),
16 => res = self.flags.sub16(value0, value1.wrapping_add(cf)),
8 => res = self.flags.sub8(value0, value1.wrapping_add(cf)),
32 => res = self.flags.sub32(value0, (value1 & 0xffffffff).wrapping_add(cf)),
16 => res = self.flags.sub16(value0, (value1 & 0xffff).wrapping_add(cf)),
8 => res = self.flags.sub8(value0, (value1 & 0xff).wrapping_add(cf)),
_ => panic!("weird size"),
}

Expand Down
0