bool HomTransform::write(const yarp::os::idl::WireWriter& writer) const { if (!write_x(writer)) return false; if (!write_y(writer)) return false; if (!write_z(writer)) return false; if (!write_xx(writer)) return false; if (!write_xy(writer)) return false; if (!write_xz(writer)) return false; if (!write_yx(writer)) return false; if (!write_yy(writer)) return false; if (!write_yz(writer)) return false; if (!write_zx(writer)) return false; if (!write_zy(writer)) return false; if (!write_zz(writer)) return false; return !writer.isError(); }
bool ContactPoint::write(yarp::os::idl::WireWriter& writer) { if (!write_x(writer)) return false; if (!write_y(writer)) return false; if (!write_z(writer)) return false; return !writer.isError(); }
int main(int argc, char** argv) { int i; unsigned int cmd; unsigned int val; unsigned int addr; char* file_path; clear_screen(); #ifdef DEBUG_MODE for (i = 0; i < argc; ++i) debug_message("argv[%2d] : '%s'", i, argv[i]); #endif printf("This is NES emulator.\n"); if (argc >= 2) { char* arg = argv[1]; int arg_len = strlen(arg); if (arg_len == 2) { if (arg[0] == '-' && (arg[1] == 't' || arg[1] == 'T')) // TEST ROM init_test_rom(&hdr, ROM, pattern_table); else if (arg[0] == '-' && (arg[1] == 'd' || arg[1] == 'D')) // Dumped image { FILE* rom_image; FILE* chr_image; if (argc < 3) return 1; #if defined _WIN32 && defined _MSC_VER fopen_s(&rom_image, argv[2], "rb"); fopen_s(&chr_image, argv[3], "rb"); #elif defined __linux__ || defined __GNUC__ rom_image = fopen(argv[2], "rb"); chr_image = fopen(argv[3], "rb"); #endif if (!rom_image || !chr_image) { debug_message("Could not open dumped ROM image!"); return 1; } if (fread(ROM, ROM_SIZE, 1, rom_image) != 1) return 1; if (fread(pattern_table, PPU_PATTERN_TABLE_SIZE, 1, chr_image) != 1) return 1; fclose(rom_image); fclose(chr_image); } else if (arg[0] == '-' && (arg[1] == 'r' || arg[1] == 'R')) { if (argc < 3) { debug_message("File name required."); return 1; } if (dump_test_rom(argv[2]) != 1) { debug_message("Could not dump test ROM!"); return 1; } debug_message("Test ROM dumped!"); return 0; } else { debug_message("Invalid command line arguments!"); return 1; } } else { file_path = argv[1]; if (read_rom_image(file_path) != 1) { printf("Reading ROM image failed!\n"); return 1; } } } else if (argc < 2) { printf("Emulation failed! No ROM image supplied!\n"); return 1; } if (emulator_init() != 1) { printf("Emulator initialization failed!\n"); return 1; } run(); // Comment this line for debuging. //clear_screen(); gotoxy(REGS_X, REGS_Y); update_regs(); gotoxy(CMD_X, CMD_Y); while (!finished_emulation) { clear_cmd_line(); cmd = getch(); putchar(cmd); switch (cmd) { case 's': case 'S': step(); update_regs(); break; // Finish emulation case 'q': case 'Q': finished_emulation = 1; break; case 'w': case 'W': if (scanf_s("%4x %2x", &addr, &val)) write(addr, val); break; case 'r': case 'R': if (scanf_s("%4x", &addr)) { val = read(addr); printf(" $%04x : %02X", addr, val); } break; case 'd': case 'D': if (scanf_s("%4x %u", &addr, &val)) for (i = 0; i < (int)val; ++i) printf("\n %04X : %02X\n", addr + i, read(addr + i)); break; case 'h': case 'H': printf("\n" " S : Step\n" " Q : Quit\n" " W Addr Val : Write memory\n" " R Addr : Read memory\n" " D Addr Sz : Dump memory\n" " C Val : Run for Val cycles\n" " H : Help\n" " E : Run to PC equals to Val\n" ); break; case 'a': case 'A': if (scanf_s("%2x", &val)) write_a(&p, val); break; case 'x': case 'X': if (scanf_s("%2x", &val)) write_x(&p, val); break; case 'y': case 'Y': if (scanf_s("%2x", &val)) write_y(&p, val); break; case 'p': case 'P': if (scanf_s("%2x", &val)) write_p(&p, val | FLAG_1); break; case 'c': case 'C': if (scanf_s("%u", &val)) { run_cycles(val); update_regs(); } break; case 'e': case 'E': if (scanf_s("%4x", &val)) { while (p.pc.w != val) step(); update_regs(); } break; default: break; } } emulator_close(); return 0; }
bool Pixel::write(const yarp::os::idl::WireWriter& writer) const { if (!write_x(writer)) return false; if (!write_y(writer)) return false; return !writer.isError(); }