static void translate_robot(struct Vertex position) { printf("%s: translate to %f %f\n", __func__, position.x, position.y); translate_object(position); }
Orb_t Orb_deref_nopropobj(Orb_t obj, Orb_t field, Orb_t* p) { Orb_t* a; Orb_t* format; size_t numfields; Orb_t parent; int found; size_t index; *p = Orb_NOTFOUND; top: obj = translate_object(obj); if(Orb_t_is_propertyfunction(obj)) { /*property-function*/ Orb_t* innerfunc = Orb_t_as_pointer(obj); *p = innerfunc[0]; return Orb_NOTFOUND; } a = Orb_t_as_pointer(obj); format = Orb_t_as_pointer(a[0]); numfields = Orb_t_as_integer(format[0]); index = binsearchfields(&format[1], numfields, field, &found); if(found) { return a[1+index]; } parent = format[numfields+1]; if(parent == Orb_NOTFOUND) return Orb_NOTFOUND; obj = parent; goto top; }
int main() { clock_t t; long fr; for (int k=0; k<64000; k++) back[k] = back[k] / 7; srand(666); if (!add_stars()) { printf("err\n"); exit(1); } open_vid(); // set_mode(0x13); // for (int i=0; i<256; i++) set_col(i, i/12, i/8, i/4); translate_object(stars, 0.0, 0.0, 2.0); fr = 0; t = clock(); while (!ptc_console_key(console)) { // memfill_d((long)screen, 16000, 0); // memcopy_d((long)back, (long)screen, 16000); memcpy(screen, back, 64000); // memset(screen, 0, 64000); rotate_object_local(stars); cast_object(stars); vis_object(stars); render_object(stars); alfa(); // memcpy((char *)0xA0000, old_screen, 64000); // memcopy_d((long)old_screen, 0xA0000, 16000); show(old_screen); rotate_object(stars, 9, 9, 9); fr++; } t = clock() - t; // getch(); close_vid(); // set_mode(3); printf("f/s = %f\n", ((float)fr * CLOCKS_PER_SEC / (float)t)); return 0; }