void screen_stop_game_show_winner(jugador_t *j) { int offy = 14; //(50/2 - 11); int offx = 20; //(80/2 - 20); int ancho = 40; int alto = 17; uchar color = screen_color_jugador(j); screen_pintar_rect(' ', C_MAKE_BG(color) | C_FG_WHITE, offy, offx, alto, ancho); offy++; offx++; alto -= 2; ancho-=2; screen_pintar_rect('*', C_BW, offy, offx, alto, ancho); offy++; offx++; alto -= 2; ancho-=2; screen_pintar_rect(' ', C_BG_LIGHT_GREY | C_FG_BLACK, offy, offx, alto, ancho); print("EL GANADOR ES EL JUGADOR", offx+5 , offy+3 , C_BG_LIGHT_GREY | C_FG_BLACK); if(j == NULL) print("EMPATE", offx+14, offy+6, C_MAKE_BG(color) | C_FG_BLACK); if(j == &jugadorA) print("<-- A", offx+15, offy+6, C_BG_LIGHT_GREY | color); if(j == &jugadorB) print("B -->", offx+15, offy+6, C_BG_LIGHT_GREY | color); // a partir de aca se termina el unviverso (STOP GAME) __asm __volatile( "cli\n" : : : ); while(1){} }
void game_debuggear_tarea(uint eflags, uint eip, uint edi, uint esi, uint ebp, uint esp, uint ebx, uint edx, uint ecx, uint eax){ uint ss, gs, fs, es, ds, cs; ss = tss_obtener_ss(sched_tarea_actual_id()); gs = tss_obtener_gs(sched_tarea_actual_id()); fs = tss_obtener_fs(sched_tarea_actual_id()); es = tss_obtener_es(sched_tarea_actual_id()); ds = tss_obtener_ds(sched_tarea_actual_id()); cs = tss_obtener_cs(sched_tarea_actual_id()); uint x, y; for(y = 0; y < MAPA_ALTO; y++){ for(x = 0; x < MAPA_ANCHO; x++){ // temporal_pantalla[y][x].c = screen_valor_actual(y,x); // temporal_pantalla[y][x].a = screen_attr_actual(y,x); } } screen_pintar_rect(0, C_BG_LIGHT_GREY, 8, 30, 8, 1); screen_pintar_rect(0, C_BG_LIGHT_GREY, 10, 30, 42, 1); screen_pintar_rect(0, C_BG_LIGHT_GREY, 10, 30, 20, 1); print("eax" , 25, 10, C_FG_RED); print("ecx" , 25, 11, C_FG_RED); print("edx" , 25, 12, C_FG_RED); print("ebx" , 25, 13, C_FG_RED); print("esp" , 25, 14, C_FG_RED); print("ebp" , 25, 15, C_FG_RED); print("esi" , 25, 16, C_FG_RED); print("edi" , 25, 17, C_FG_RED); print("eip" , 25, 18, C_FG_RED); print("cs" , 26, 19, C_FG_RED); print("ds" , 26, 20, C_FG_RED); print("es" , 26, 21, C_FG_RED); print("fs" , 26, 22, C_FG_RED); print("gs" , 26, 23, C_FG_RED); print("ss" , 26, 24, C_FG_RED); print("eflags" , 20, 25, C_FG_RED); //cambiarlo para que use de la pila print_hex(eax, 9, 30, 10, C_FG_BROWN); print_hex(ebx, 9, 30, 11, C_FG_BROWN); print_hex(ecx, 9, 30, 12, C_FG_BROWN); print_hex(edx, 9, 30, 13, C_FG_BROWN); print_hex(esi, 9, 30, 14, C_FG_BROWN); print_hex(edi, 9, 30, 15, C_FG_BROWN); print_hex(ebp, 9, 30, 16, C_FG_BROWN); print_hex(esp, 9, 30, 17, C_FG_BROWN); print_hex(eip, 9, 30, 18, C_FG_BROWN); print_hex(cs , 9, 30, 19, C_FG_BROWN); print_hex(ds , 9, 30, 20, C_FG_BROWN); print_hex(es , 9, 30, 21, C_FG_BROWN); print_hex(fs , 9, 30, 22, C_FG_BROWN); print_hex(gs , 9, 30, 23, C_FG_BROWN); print_hex(ss , 9, 30, 24, C_FG_BROWN); print_hex(eflags , 9, 30, 25, C_FG_BROWN); }
void screen_inicializar() { screen_pintar_rect(' ', C_BG_BLACK | C_FG_WHITE, 0, 0, VIDEO_FILS, VIDEO_COLS); screen_pintar_rect(' ', C_BG_RED | C_FG_WHITE, 45, 33, 5, 7); screen_pintar_rect(' ', C_BG_BLUE | C_FG_WHITE, 45, 40, 5, 7); screen_pintar_relojes(); screen_pintar_puntajes(); int i, j; for (i = 0; i < MAPA_ALTO; i++) { for (j = 0; j < MAPA_ANCHO; j++) screen_actualizar_posicion_mapa(j, i); } }
void game_jugador_debug(){ if(debug_screen_on == TRUE){ debug_screen_on = FALSE; screen_restore_backup(); } else{ if(debug_on == FALSE){ debug_on = TRUE; print("MODO DEBUG ACTIVADO", 55, 0, 0x0f0f); } else{ debug_on = FALSE; screen_pintar_rect(0, 0x00, 0, 53, 1, 23); } } }
void screen_pintar_info_debug(uint eax, uint ebx, uint ecx, uint edx, uint esi, uint edi, uint ebp, uint cs, uint ds, uint fs, uint gs, uint ss, uint eflags, uint esp, uint eip, uint stack0, uint stack1, uint stack2, uint stack3, uint stack4){ screen_guardar_atras_debug(); screen_pintar_rect(' ', C_BG_BLACK, POSICION_CUADRO_DEBUG_Y, POSICION_CUADRO_DEBUG_X, ALTO_CUADRO_DEBUG, ANCHO_CUADRO_DEBUG); screen_pintar_rect(' ', C_BG_RED, POSICION_CUADRO_DEBUG_Y + 1, POSICION_CUADRO_DEBUG_X + 1, ALTO_BANDA_DEBUG, ANCHO_CUADRO_DEBUG - 2); screen_pintar_rect(' ', C_BG_LIGHT_GREY, POSICION_CUADRO_DEBUG_Y + 1 + ALTO_BANDA_DEBUG, POSICION_CUADRO_DEBUG_X + 1, ALTO_CUADRO_DEBUG - ALTO_BANDA_DEBUG - 2, ANCHO_CUADRO_DEBUG - 2); print("eax", POSICION_CUADRO_DEBUG_X + 2, POSICION_CUADRO_DEBUG_Y + 3, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(eax, 8, POSICION_CUADRO_DEBUG_X + 6, POSICION_CUADRO_DEBUG_Y + 3, C_BG_LIGHT_GREY | C_FG_WHITE); print("ebx", POSICION_CUADRO_DEBUG_X + 2, POSICION_CUADRO_DEBUG_Y + 5, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(ebx, 8, POSICION_CUADRO_DEBUG_X + 6, POSICION_CUADRO_DEBUG_Y + 5, C_BG_LIGHT_GREY | C_FG_WHITE); print("ecx", POSICION_CUADRO_DEBUG_X + 2, POSICION_CUADRO_DEBUG_Y + 7, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(ecx, 8, POSICION_CUADRO_DEBUG_X + 6, POSICION_CUADRO_DEBUG_Y + 7, C_BG_LIGHT_GREY | C_FG_WHITE); print("edx", POSICION_CUADRO_DEBUG_X + 2, POSICION_CUADRO_DEBUG_Y + 9, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(edx, 8, POSICION_CUADRO_DEBUG_X + 6, POSICION_CUADRO_DEBUG_Y + 9, C_BG_LIGHT_GREY | C_FG_WHITE); print("esi", POSICION_CUADRO_DEBUG_X + 2, POSICION_CUADRO_DEBUG_Y + 11, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(esi, 8, POSICION_CUADRO_DEBUG_X + 6, POSICION_CUADRO_DEBUG_Y + 11, C_BG_LIGHT_GREY | C_FG_WHITE); print("edi", POSICION_CUADRO_DEBUG_X + 2, POSICION_CUADRO_DEBUG_Y + 13, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(edi, 8, POSICION_CUADRO_DEBUG_X + 6, POSICION_CUADRO_DEBUG_Y + 13, C_BG_LIGHT_GREY | C_FG_WHITE); print("ebp", POSICION_CUADRO_DEBUG_X + 2, POSICION_CUADRO_DEBUG_Y + 15, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(ebp, 8, POSICION_CUADRO_DEBUG_X + 6, POSICION_CUADRO_DEBUG_Y + 15, C_BG_LIGHT_GREY | C_FG_WHITE); print("esp", POSICION_CUADRO_DEBUG_X + 2, POSICION_CUADRO_DEBUG_Y + 17, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(esp, 8, POSICION_CUADRO_DEBUG_X + 6, POSICION_CUADRO_DEBUG_Y + 17, C_BG_LIGHT_GREY | C_FG_WHITE); print("eip", POSICION_CUADRO_DEBUG_X + 2, POSICION_CUADRO_DEBUG_Y + 19, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(eip, 8, POSICION_CUADRO_DEBUG_X + 6, POSICION_CUADRO_DEBUG_Y + 19, C_BG_LIGHT_GREY | C_FG_WHITE); print("cs", POSICION_CUADRO_DEBUG_X + 3, POSICION_CUADRO_DEBUG_Y + 21, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(cs, 8, POSICION_CUADRO_DEBUG_X + 6, POSICION_CUADRO_DEBUG_Y + 21, C_BG_LIGHT_GREY | C_FG_WHITE); print("ds", POSICION_CUADRO_DEBUG_X + 3, POSICION_CUADRO_DEBUG_Y + 23, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(ds, 8, POSICION_CUADRO_DEBUG_X + 6, POSICION_CUADRO_DEBUG_Y + 23, C_BG_LIGHT_GREY | C_FG_WHITE); print("fs", POSICION_CUADRO_DEBUG_X + 3, POSICION_CUADRO_DEBUG_Y + 25, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(fs, 8, POSICION_CUADRO_DEBUG_X + 6, POSICION_CUADRO_DEBUG_Y + 25, C_BG_LIGHT_GREY | C_FG_WHITE); print("gs", POSICION_CUADRO_DEBUG_X + 3, POSICION_CUADRO_DEBUG_Y + 27, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(gs, 8, POSICION_CUADRO_DEBUG_X + 6, POSICION_CUADRO_DEBUG_Y + 27, C_BG_LIGHT_GREY | C_FG_WHITE); print("ss", POSICION_CUADRO_DEBUG_X + 3, POSICION_CUADRO_DEBUG_Y + 29, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(ss, 8, POSICION_CUADRO_DEBUG_X + 6, POSICION_CUADRO_DEBUG_Y + 29, C_BG_LIGHT_GREY | C_FG_WHITE); print("eflags", POSICION_CUADRO_DEBUG_X + 3, POSICION_CUADRO_DEBUG_Y + 31, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(eflags, 8, POSICION_CUADRO_DEBUG_X + 10, POSICION_CUADRO_DEBUG_Y + 31, C_BG_LIGHT_GREY | C_FG_WHITE); print("cr0", POSICION_CUADRO_DEBUG_X + 16, POSICION_CUADRO_DEBUG_Y + 3, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(rcr0(), 8, POSICION_CUADRO_DEBUG_X + 20, POSICION_CUADRO_DEBUG_Y + 3, C_BG_LIGHT_GREY | C_FG_WHITE); print("cr2", POSICION_CUADRO_DEBUG_X + 16, POSICION_CUADRO_DEBUG_Y + 5, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(rcr2(), 8, POSICION_CUADRO_DEBUG_X + 20, POSICION_CUADRO_DEBUG_Y + 5, C_BG_LIGHT_GREY | C_FG_WHITE); print("cr3", POSICION_CUADRO_DEBUG_X + 16, POSICION_CUADRO_DEBUG_Y + 7, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(rcr3(), 8, POSICION_CUADRO_DEBUG_X + 20, POSICION_CUADRO_DEBUG_Y + 7, C_BG_LIGHT_GREY | C_FG_WHITE); print("cr4", POSICION_CUADRO_DEBUG_X + 16, POSICION_CUADRO_DEBUG_Y + 9, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(rcr4(), 8, POSICION_CUADRO_DEBUG_X + 20, POSICION_CUADRO_DEBUG_Y + 9, C_BG_LIGHT_GREY | C_FG_WHITE); print("stack", POSICION_CUADRO_DEBUG_X + 16, POSICION_CUADRO_DEBUG_Y + 20, C_BG_LIGHT_GREY | C_FG_BLACK); print_hex(stack0, 8, POSICION_CUADRO_DEBUG_X + 16, POSICION_CUADRO_DEBUG_Y + 23, C_BG_LIGHT_GREY | C_FG_WHITE); print_hex(stack1, 8, POSICION_CUADRO_DEBUG_X + 16, POSICION_CUADRO_DEBUG_Y + 24, C_BG_LIGHT_GREY | C_FG_WHITE); print_hex(stack2, 8, POSICION_CUADRO_DEBUG_X + 16, POSICION_CUADRO_DEBUG_Y + 25, C_BG_LIGHT_GREY | C_FG_WHITE); print_hex(stack3, 8, POSICION_CUADRO_DEBUG_X + 16, POSICION_CUADRO_DEBUG_Y + 26, C_BG_LIGHT_GREY | C_FG_WHITE); print_hex(stack4, 8, POSICION_CUADRO_DEBUG_X + 16, POSICION_CUADRO_DEBUG_Y + 27, C_BG_LIGHT_GREY | C_FG_WHITE); }
void screen_pintar_linea_v(uchar c, uchar color, int fila, int columna, int alto) { screen_pintar_rect(c, color, fila, columna, alto, 1); }
void screen_pintar_linea_h(uchar c, uchar color, int fila, int columna, int ancho) { screen_pintar_rect(c, color, fila, columna, 1, ancho); }