Added colour (Final version

This commit is contained in:
Luxdragon 2024-01-20 19:37:17 +01:00
parent 105e128092
commit 71cab2023e
2 changed files with 24 additions and 11 deletions

View file

@ -1569,6 +1569,7 @@ typedef struct cpu_data {
int total_cycles_count;
GtkWidget* drawing_area;
State8080 *state;
pthread_t pid;
} cpu_data;
@ -1616,10 +1617,14 @@ static void draw_callback(GtkWidget *widget, cairo_t *cr, gpointer user_data) {
int x = i; // swap x and y
int y = 255 - (j*8 + p); // flip the y-coordinate
if (x >= 0 && x < 256 && y >= 0 && y < 256) { // Check bounds
if (pixel) {
cairo_set_source_rgb(cr, 1.0, 1.0, 1.0); // Set color to white
if (pixel && (y > 191) && (y < 240)) {
cairo_set_source_rgb(cr, 0.1, 1.0, 0.1); // Set colour to green
} else if (pixel && (y < 50) && (y > 32)) {
cairo_set_source_rgb(cr, 1.0, 0.1, 0.1); // Set colour to red
} else if (pixel) {
cairo_set_source_rgb(cr, 1.0, 1.0, 1.0); // Set colour to white
} else {
cairo_set_source_rgb(cr, 0.0, 0.0, 0.0); // Set color to black
cairo_set_source_rgb(cr, 0.0, 0.0, 0.0); // Set colour to black
}
cairo_rectangle(cr, x * upscaleFactor, y * upscaleFactor, upscaleFactor, upscaleFactor);
@ -1684,6 +1689,14 @@ gboolean open_screen(gpointer data) {
return FALSE;
}
void on_window_destroy(GtkWidget *widget, cpu_data *cpu_eco) {
pthread_cancel(cpu_eco->pid); // Assuming 'pid' is a member of 'cpu_data'
free(cpu_eco->state->memory);
free(cpu_eco->state);
free(cpu_eco);
gtk_main_quit();
}
int main (int argc, char *argv[]) {
@ -1775,17 +1788,17 @@ int main (int argc, char *argv[]) {
cpu_eco->total_cycles_count = 0;
// Pthread
pthread_t pid;
pthread_create(&pid, NULL, cpu, (void*) cpu_eco);
pthread_create(&(cpu_eco->pid), NULL, cpu, (void*) cpu_eco);
g_signal_connect(window, "destroy", G_CALLBACK(on_window_destroy), cpu_eco);
// Main GTK Loop
g_timeout_add(80, update_ui, drawing_area);
g_timeout_add(50, update_ui, drawing_area);
gtk_main();
cpu_eco->done = 1;
pthread_join(pid, NULL);
free(state->memory);
free(state);
free(cpu_eco);
// cpu_eco->done = 1;
// pthread_join(pid, NULL);
// free(state->memory);
// free(state);
// free(cpu_eco);
return 0;
}

BIN
space.png~ Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,012 KiB