less drawing
This commit is contained in:
64
src/main.rs
64
src/main.rs
@@ -113,8 +113,12 @@ fn render(window: &mut PistonWindow, event: &Event, glyphs: &mut Glyphs, cpu: &C
|
|||||||
fn render_cpu(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, cpu: &CPU, offset: [f64; 2]) {
|
fn render_cpu(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, cpu: &CPU, offset: [f64; 2]) {
|
||||||
let mut transform = c.transform
|
let mut transform = c.transform
|
||||||
.trans(offset[0], offset[1] + FT_SIZE_PX);
|
.trans(offset[0], offset[1] + FT_SIZE_PX);
|
||||||
let mut color = FT_COLOR_WHITE;
|
let text_white = Text::new_color(FT_COLOR_WHITE, FT_SIZE_PT);
|
||||||
Text::new_color(color, FT_SIZE_PT).draw(
|
let text_on = Text::new_color(FT_COLOR_GREEN, FT_SIZE_PT);
|
||||||
|
let text_off = Text::new_color(FT_COLOR_RED, FT_SIZE_PT);
|
||||||
|
|
||||||
|
let mut text = text_white;
|
||||||
|
text.draw(
|
||||||
&"Flags:",
|
&"Flags:",
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
@@ -123,8 +127,8 @@ fn render_cpu(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, cpu: &CPU, offset:
|
|||||||
).unwrap();
|
).unwrap();
|
||||||
|
|
||||||
transform = transform.trans(70.0, 0.0);
|
transform = transform.trans(70.0, 0.0);
|
||||||
color = if cpu.get_flag(NEGATIVE) == 1 { FT_COLOR_GREEN} else { FT_COLOR_RED };
|
text = if cpu.get_flag(NEGATIVE) == 1 { text_on } else { text_off };
|
||||||
Text::new_color(color , FT_SIZE_PT).draw(
|
text.draw(
|
||||||
&"N",
|
&"N",
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
@@ -132,8 +136,8 @@ fn render_cpu(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, cpu: &CPU, offset:
|
|||||||
g
|
g
|
||||||
).unwrap();
|
).unwrap();
|
||||||
transform = transform.trans(16.0, 0.0);
|
transform = transform.trans(16.0, 0.0);
|
||||||
color = if cpu.get_flag(OVERFLOW) == 1 { FT_COLOR_GREEN} else { FT_COLOR_RED };
|
text = if cpu.get_flag(OVERFLOW) == 1 { text_on } else { text_off };
|
||||||
Text::new_color(color, FT_SIZE_PT).draw(
|
text.draw(
|
||||||
&"V",
|
&"V",
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
@@ -141,8 +145,7 @@ fn render_cpu(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, cpu: &CPU, offset:
|
|||||||
g
|
g
|
||||||
).unwrap();
|
).unwrap();
|
||||||
transform = transform.trans(16.0, 0.0);
|
transform = transform.trans(16.0, 0.0);
|
||||||
color = FT_COLOR_WHITE;
|
text_white.draw(
|
||||||
Text::new_color(color, FT_SIZE_PT).draw(
|
|
||||||
&"-",
|
&"-",
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
@@ -150,8 +153,8 @@ fn render_cpu(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, cpu: &CPU, offset:
|
|||||||
g
|
g
|
||||||
).unwrap();
|
).unwrap();
|
||||||
transform = transform.trans(16.0, 0.0);
|
transform = transform.trans(16.0, 0.0);
|
||||||
color = if cpu.get_flag(BREAK) == 1 { FT_COLOR_GREEN} else { FT_COLOR_RED };
|
text = if cpu.get_flag(BREAK) == 1 { text_on } else { text_off };
|
||||||
Text::new_color(color, FT_SIZE_PT).draw(
|
text.draw(
|
||||||
&"B",
|
&"B",
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
@@ -159,8 +162,8 @@ fn render_cpu(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, cpu: &CPU, offset:
|
|||||||
g
|
g
|
||||||
).unwrap();
|
).unwrap();
|
||||||
transform = transform.trans(16.0, 0.0);
|
transform = transform.trans(16.0, 0.0);
|
||||||
color = if cpu.get_flag(DECIMAL) == 1 { FT_COLOR_GREEN} else { FT_COLOR_RED };
|
text = if cpu.get_flag(DECIMAL) == 1 { text_on } else { text_off };
|
||||||
Text::new_color(color, FT_SIZE_PT).draw(
|
text.draw(
|
||||||
&"D",
|
&"D",
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
@@ -168,8 +171,8 @@ fn render_cpu(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, cpu: &CPU, offset:
|
|||||||
g
|
g
|
||||||
).unwrap();
|
).unwrap();
|
||||||
transform = transform.trans(16.0, 0.0);
|
transform = transform.trans(16.0, 0.0);
|
||||||
color = if cpu.get_flag(IRQ) == 1 { FT_COLOR_GREEN} else { FT_COLOR_RED };
|
text = if cpu.get_flag(IRQ) == 1 { text_on } else { text_off };
|
||||||
Text::new_color(color, FT_SIZE_PT).draw(
|
text.draw(
|
||||||
&"I",
|
&"I",
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
@@ -177,8 +180,8 @@ fn render_cpu(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, cpu: &CPU, offset:
|
|||||||
g
|
g
|
||||||
).unwrap();
|
).unwrap();
|
||||||
transform = transform.trans(16.0, 0.0);
|
transform = transform.trans(16.0, 0.0);
|
||||||
color = if cpu.get_flag(ZERO) == 1 { FT_COLOR_GREEN} else { FT_COLOR_RED };
|
text = if cpu.get_flag(ZERO) == 1 { text_on } else { text_off };
|
||||||
Text::new_color(color, FT_SIZE_PT).draw(
|
text.draw(
|
||||||
&"Z",
|
&"Z",
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
@@ -186,8 +189,8 @@ fn render_cpu(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, cpu: &CPU, offset:
|
|||||||
g
|
g
|
||||||
).unwrap();
|
).unwrap();
|
||||||
transform = transform.trans(16.0, 0.0);
|
transform = transform.trans(16.0, 0.0);
|
||||||
color = if cpu.get_flag(CARRY) == 1 { FT_COLOR_GREEN} else { FT_COLOR_RED };
|
text = if cpu.get_flag(CARRY) == 1 { text_on } else { text_off };
|
||||||
Text::new_color(color, FT_SIZE_PT).draw(
|
text.draw(
|
||||||
&"C",
|
&"C",
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
@@ -195,8 +198,7 @@ fn render_cpu(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, cpu: &CPU, offset:
|
|||||||
g
|
g
|
||||||
).unwrap();
|
).unwrap();
|
||||||
transform = transform.trans(16.0, 0.0);
|
transform = transform.trans(16.0, 0.0);
|
||||||
color = FT_COLOR_WHITE;
|
text_white.draw(
|
||||||
Text::new_color(color, FT_SIZE_PT).draw(
|
|
||||||
&format!("({:#4x})", cpu.regs.flags),
|
&format!("({:#4x})", cpu.regs.flags),
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
@@ -216,7 +218,7 @@ fn render_cpu(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, cpu: &CPU, offset:
|
|||||||
for (i, &text) in cpu_register_texts.iter().enumerate() {
|
for (i, &text) in cpu_register_texts.iter().enumerate() {
|
||||||
let y_offset = (i+2) as f64 * (FT_LINE_DISTANCE + FT_SIZE_PX);
|
let y_offset = (i+2) as f64 * (FT_LINE_DISTANCE + FT_SIZE_PX);
|
||||||
let transform = c.transform.trans(offset[0], offset[1] + y_offset);
|
let transform = c.transform.trans(offset[0], offset[1] + y_offset);
|
||||||
Text::new_color(FT_COLOR_WHITE, FT_SIZE_PT).draw(
|
text_white.draw(
|
||||||
&text,
|
&text,
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
@@ -241,17 +243,20 @@ fn render_disasm(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, disasm: &Disasm,
|
|||||||
};
|
};
|
||||||
|
|
||||||
let mut transform = c.transform.trans(offset[0], offset[1]);
|
let mut transform = c.transform.trans(offset[0], offset[1]);
|
||||||
|
let text_current = Text::new_color(FT_COLOR_RED, FT_SIZE_PT);
|
||||||
|
let text_other = Text::new_color(FT_COLOR_WHITE, FT_SIZE_PT);
|
||||||
|
|
||||||
for i in (start..disasm.addresses.len()).take(lines_above_below*2+1) {
|
for i in (start..disasm.addresses.len()).take(lines_above_below*2+1) {
|
||||||
let addr = disasm.addresses[i];
|
let addr = disasm.addresses[i];
|
||||||
let txt = &disasm.instructions[i];
|
let txt = &disasm.instructions[i];
|
||||||
|
|
||||||
transform = transform.trans(0.0, FT_LINE_DISTANCE + FT_SIZE_PX);
|
transform = transform.trans(0.0, FT_LINE_DISTANCE + FT_SIZE_PX);
|
||||||
let color = if addr == pc {
|
let text = if addr == pc {
|
||||||
FT_COLOR_RED
|
text_current
|
||||||
} else {
|
} else {
|
||||||
FT_COLOR_WHITE
|
text_other
|
||||||
};
|
};
|
||||||
Text::new_color(color, FT_SIZE_PT).draw(
|
text.draw(
|
||||||
txt,
|
txt,
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
@@ -265,9 +270,10 @@ fn render_disasm(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, disasm: &Disasm,
|
|||||||
|
|
||||||
fn render_memory(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, bus: &MemoryBus, offset: [f64; 2]) {
|
fn render_memory(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, bus: &MemoryBus, offset: [f64; 2]) {
|
||||||
let mut transform_y = c.transform.trans(offset[0], offset[1]);
|
let mut transform_y = c.transform.trans(offset[0], offset[1]);
|
||||||
|
let text = Text::new_color(FT_COLOR_WHITE, FT_SIZE_PT);
|
||||||
for page in (0x0000..0x01FF).step_by(16) {
|
for page in (0x0000..0x01FF).step_by(16) {
|
||||||
transform_y = transform_y.trans(0.0, FT_LINE_DISTANCE+FT_SIZE_PX);
|
transform_y = transform_y.trans(0.0, FT_LINE_DISTANCE+FT_SIZE_PX);
|
||||||
Text::new_color(FT_COLOR_WHITE, FT_SIZE_PT).draw(
|
text.draw(
|
||||||
&format!("{:#06x}:", page),
|
&format!("{:#06x}:", page),
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
@@ -278,7 +284,7 @@ fn render_memory(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, bus: &MemoryBus,
|
|||||||
for offset in 0u16..16u16 {
|
for offset in 0u16..16u16 {
|
||||||
transform_x = transform_x.trans(20.0, 0.0);
|
transform_x = transform_x.trans(20.0, 0.0);
|
||||||
let addr = page + offset;
|
let addr = page + offset;
|
||||||
Text::new_color(FT_COLOR_WHITE, FT_SIZE_PT).draw(
|
text.draw(
|
||||||
&format!("{:02x}", bus.readb(addr)),
|
&format!("{:02x}", bus.readb(addr)),
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
@@ -291,7 +297,7 @@ fn render_memory(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, bus: &MemoryBus,
|
|||||||
transform_y = transform_y.trans(0.0, (FT_LINE_DISTANCE+FT_SIZE_PX) * 1.5);
|
transform_y = transform_y.trans(0.0, (FT_LINE_DISTANCE+FT_SIZE_PX) * 1.5);
|
||||||
for page in (0x6000..0x6030).step_by(16) {
|
for page in (0x6000..0x6030).step_by(16) {
|
||||||
transform_y = transform_y.trans(0.0, (FT_LINE_DISTANCE+FT_SIZE_PX));
|
transform_y = transform_y.trans(0.0, (FT_LINE_DISTANCE+FT_SIZE_PX));
|
||||||
Text::new_color(FT_COLOR_WHITE, FT_SIZE_PT).draw(
|
text.draw(
|
||||||
&format!("{:#06x}:", page),
|
&format!("{:#06x}:", page),
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
@@ -302,7 +308,7 @@ fn render_memory(c: &Context, g: &mut G2d, glyphs: &mut Glyphs, bus: &MemoryBus,
|
|||||||
for offset in 0u16..16u16 {
|
for offset in 0u16..16u16 {
|
||||||
transform_x = transform_x.trans(20.0, 0.0);
|
transform_x = transform_x.trans(20.0, 0.0);
|
||||||
let addr = page + offset;
|
let addr = page + offset;
|
||||||
Text::new_color(FT_COLOR_WHITE, FT_SIZE_PT).draw(
|
text.draw(
|
||||||
&format!("{:02x}", bus.readb(addr)),
|
&format!("{:02x}", bus.readb(addr)),
|
||||||
glyphs,
|
glyphs,
|
||||||
&c.draw_state,
|
&c.draw_state,
|
||||||
|
|||||||
Reference in New Issue
Block a user