pavone@467: /* pavone@467: Copyright 2013 Michael Pavone pavone@467: This file is part of BlastEm. pavone@467: BlastEm is free software distributed under the terms of the GNU General Public License version 3 or greater. See COPYING for full license text. pavone@467: */ pavone@20: #include pavone@20: #include pavone@20: #include "vdp.h" pavone@20: #include "render.h" pavone@793: #include "util.h" pavone@75: #include "blastem.h" pavone@75: pavone@75: //not used, but referenced by the renderer since it handles input pavone@75: io_port gamepad_1; pavone@75: io_port gamepad_2; pavone@465: uint8_t reset = 1; pavone@465: uint8_t busreq = 0; pavone@75: pavone@783: uint8_t z80_ram[Z80_RAM_BYTES]; pavone@783: pavone@75: uint16_t read_dma_value(uint32_t address) pavone@75: { pavone@75: return 0; pavone@75: } pavone@20: pavone@962: m68k_context *m68k_handle_code_write(uint32_t address, m68k_context *context) pavone@962: { pavone@962: return NULL; pavone@962: } pavone@962: pavone@962: z80_context *z80_handle_code_write(uint32_t address, z80_context *context) pavone@962: { pavone@962: return NULL; pavone@962: } pavone@962: pavone@982: uint16_t get_open_bus_value() pavone@982: { pavone@982: return 0; pavone@982: } pavone@982: pavone@465: void ym_data_write(ym2612_context * context, uint8_t value) pavone@465: { pavone@465: } pavone@465: pavone@465: void ym_address_write_part1(ym2612_context * context, uint8_t address) pavone@465: { pavone@465: } pavone@465: pavone@465: void ym_address_write_part2(ym2612_context * context, uint8_t address) pavone@465: { pavone@465: } pavone@465: pavone@465: void handle_keydown(int keycode) pavone@465: { pavone@465: } pavone@465: pavone@465: void handle_keyup(int keycode) pavone@465: { pavone@465: } pavone@465: pavone@465: void handle_joydown(int joystick, int button) pavone@465: { pavone@465: } pavone@465: pavone@465: void handle_joyup(int joystick, int button) pavone@465: { pavone@465: } pavone@465: pavone@465: void handle_joy_dpad(int joystick, int dpadnum, uint8_t value) pavone@465: { pavone@465: } pavone@465: pavone@959: void handle_mousedown(int mouse, int button) pavone@959: { pavone@959: } pavone@959: pavone@959: void handle_mouseup(int mouse, int button) pavone@959: { pavone@959: } pavone@959: pavone@959: void handle_mouse_moved(int mouse, uint16_t x, uint16_t y, int16_t deltax, int16_t deltay) pavone@959: { pavone@959: } pavone@959: pavone@465: tern_node * config; pavone@703: int headless = 0; pavone@465: pavone@20: int main(int argc, char ** argv) pavone@20: { pavone@20: if (argc < 2) { pavone@792: fatal_error("Usage: stateview FILENAME\n"); pavone@20: } pavone@20: FILE * state_file = fopen(argv[1], "rb"); pavone@20: if (!state_file) { pavone@792: fatal_error("Failed to open %s\n", argv[1]); pavone@20: } pavone@812: set_exe_str(argv[0]); pavone@465: config = load_config(argv[0]); pavone@465: int width = -1; pavone@465: int height = -1; pavone@33: if (argc > 2) { pavone@33: width = atoi(argv[2]); pavone@33: if (argc > 3) { pavone@33: height = atoi(argv[3]); pavone@33: } pavone@33: } pavone@465: int def_width = 0; pavone@465: char *config_width = tern_find_ptr(config, "videowidth"); pavone@465: if (config_width) { pavone@465: def_width = atoi(config_width); pavone@465: } pavone@465: if (!def_width) { pavone@465: def_width = 640; pavone@465: } pavone@465: width = width < 320 ? def_width : width; pavone@465: height = height < 240 ? (width/320) * 240 : height; pavone@465: pavone@20: vdp_context context; pavone@719: render_init(width, height, "GST State Viewer", 60, 0); pavone@703: init_vdp_context(&context, 0); pavone@424: vdp_load_gst(&context, state_file); pavone@20: vdp_run_to_vblank(&context); pavone@322: vdp_print_sprite_table(&context); pavone@75: printf("Display %s\n", (context.regs[REG_MODE_2] & DISPLAY_ENABLE) ? "enabled" : "disabled"); pavone@20: render_context(&context); pavone@43: render_wait_quit(&context); pavone@20: return 0; pavone@20: }