DrawSprite passes test now.

This commit is contained in:
Trevor Merritt 2024-10-07 08:37:47 -04:00
parent 24634637b2
commit 495745c19c

View File

@ -1409,13 +1409,6 @@ mod test {
let y_offset = 2;
let char_offset = 0x0A;
// use the font characters to draw to video memory
// assert_eq!(x.memory.peek(0x0), CHIP8FONT_0[0]);
// assert_eq!(x.memory.peek(0x1), CHIP8FONT_0[1]);
// assert_eq!(x.memory.peek(0x2), CHIP8FONT_0[2]);
// assert_eq!(x.memory.peek(0x3), CHIP8FONT_0[3]);
// assert_eq!(x.memory.peek(0x4), CHIP8FONT_0[4]);
// now lets set the X and Y to 1,2
x.registers.poke(x_register, x_offset);
x.registers.poke(y_register, y_offset);
@ -1433,12 +1426,16 @@ mod test {
for row_in_sprite in 0..5 {
let row_data = CHIP8FONT_2[row_in_sprite];
for bit_in_byte in 0..8 {
let data_offset = (x_offset + row_in_sprite as u8) * 64 + (bit_in_byte + y_offset);
let should_be_set = (row_data.shr(bit_in_byte) & 0x1) == 1;
println!("DATA_OFFSET FOR {}x{} is {} when offsetting by {}x{} and should be {} working with byte {:08b}",
bit_in_byte, row_in_sprite, data_offset, x_offset, y_offset, should_be_set, row_data);
let data_offset = (x_offset
as u16 + row_in_sprite as u16) * 64 + (bit_in_byte + y_offset) as u16;
let real_bit_in_byte = 7-bit_in_byte;
let shifted_one = 0x01 << real_bit_in_byte;
let one_shift_set = (shifted_one & row_data )> 0;
println!("ROWDATA = \t\t[{row_data:08b}]\tBIT IN BYTE = \t[{bit_in_byte}]\tONE_SHIFT_SET = [{one_shift_set}]\tSHIFTED ONE = [{shifted_one:08b}]");
println!("DATA_OFFSET FOR SOURCE DATA {}x{} is {} / offset by {}x{} and should be {} working with byte {:08b}",
bit_in_byte, row_in_sprite, data_offset, x_offset, y_offset, one_shift_set, row_data);
// assert_eq!(should_be_set, );
assert_eq!(should_be_set, x.video_memory.peek(data_offset as u16));
assert_eq!(one_shift_set, x.video_memory.peek(data_offset as u16));
}
}
}