Fixed bug with collisions

This commit is contained in:
BayThylacine 2025-02-17 06:45:01 +11:00
parent 5fdde760ce
commit bb57729492

View File

@ -159,6 +159,7 @@ impl Chip8 {
}
},
0x03 => {
//info!("{},{},{}",(self.registers[opcodes[1] as usize]),(((opcodes[2]) << 4) + opcodes[3]),(self.registers[opcodes[1] as usize]) == (((opcodes[2]) << 4) + opcodes[3]));
if (self.registers[opcodes[1] as usize]) == (((opcodes[2]) << 4) + opcodes[3]) {
self.pc += 2;
}
@ -209,7 +210,7 @@ impl Chip8 {
self.registers[opcodes[1] as usize] = (added_base & 255) as u8;
},
0x05 => {
info!("{},{}", self.registers[opcodes[1] as usize], self.registers[opcodes[2] as usize]);
//info!("{},{}", self.registers[opcodes[1] as usize], self.registers[opcodes[2] as usize]);
let no_underflow = (self.registers[opcodes[1] as usize] >= self.registers[opcodes[2] as usize]);
self.registers[0x0f] = no_underflow as u8;
if no_underflow {
@ -286,6 +287,9 @@ impl Chip8 {
let bit = get_bit_u8(spritedata, i);
checkdata += (bit as u8) << (7 - i);
if (x+i <= 63) && (y+n <= 31) {
if (get_bit(self.display[(y+n) as usize], (x+i)) && bit) {
self.registers[0x0f] = 1;
}
self.display[(y + n) as usize] = self.display[(y + n) as usize] ^ ((bit as u64) << (x + i));
}
}
@ -297,7 +301,7 @@ impl Chip8 {
0x09 => {
match opcodes[3] {
0x0e => {
info!("23: {}", self.registers[opcodes[1] as usize]);
//info!("23: {}", self.registers[opcodes[1] as usize]);
if self.registers[opcodes[1] as usize] < 16{
if self.keys[(self.registers[opcodes[1] as usize] & 15) as usize] {
self.pc += 2;
@ -312,7 +316,7 @@ impl Chip8 {
0x0a => {
match opcodes[3] {
0x01 => {
info!("a1 {}", self.registers[opcodes[1] as usize]);
//info!("a1 {}", self.registers[opcodes[1] as usize]);
if self.registers[opcodes[1] as usize] < 16{
if !self.keys[(self.registers[opcodes[1] as usize] & 15) as usize] {
self.pc += 2;