Mercurial > repos > blastem
annotate stateview.c @ 961:750995b587a0
Save State menu option is now fully functional. Load state sort of works, but is mostly broken.
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 17 Apr 2016 23:50:41 -0700 |
parents | 3b270fc43ed4 |
children | f52cb02a1466 |
rev | line source |
---|---|
467
140af5509ce7
Added copyright notice to source files and added GPL license text in COPYING
Mike Pavone <pavone@retrodev.com>
parents:
465
diff
changeset
|
1 /* |
140af5509ce7
Added copyright notice to source files and added GPL license text in COPYING
Mike Pavone <pavone@retrodev.com>
parents:
465
diff
changeset
|
2 Copyright 2013 Michael Pavone |
140af5509ce7
Added copyright notice to source files and added GPL license text in COPYING
Mike Pavone <pavone@retrodev.com>
parents:
465
diff
changeset
|
3 This file is part of BlastEm. |
140af5509ce7
Added copyright notice to source files and added GPL license text in COPYING
Mike Pavone <pavone@retrodev.com>
parents:
465
diff
changeset
|
4 BlastEm is free software distributed under the terms of the GNU General Public License version 3 or greater. See COPYING for full license text. |
140af5509ce7
Added copyright notice to source files and added GPL license text in COPYING
Mike Pavone <pavone@retrodev.com>
parents:
465
diff
changeset
|
5 */ |
20
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 #include <stdlib.h> |
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 #include <stdio.h> |
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 #include "vdp.h" |
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
9 #include "render.h" |
793
9aff36a172b2
Fix missing includes of util.h
Michael Pavone <pavone@retrodev.com>
parents:
792
diff
changeset
|
10 #include "util.h" |
75 | 11 #include "blastem.h" |
12 | |
13 //not used, but referenced by the renderer since it handles input | |
14 io_port gamepad_1; | |
15 io_port gamepad_2; | |
465
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
16 uint8_t reset = 1; |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
17 uint8_t busreq = 0; |
75 | 18 |
959
3b270fc43ed4
Get stateview building again
Michael Pavone <pavone@retrodev.com>
parents:
931
diff
changeset
|
19 uint16_t *ram; |
783
e64975fc5f98
Fix stateview build and fix Makefile to use /bin/echo since builtin echo does not always support -e
Michael Pavone <pavone@retrodev.com>
parents:
719
diff
changeset
|
20 uint8_t z80_ram[Z80_RAM_BYTES]; |
e64975fc5f98
Fix stateview build and fix Makefile to use /bin/echo since builtin echo does not always support -e
Michael Pavone <pavone@retrodev.com>
parents:
719
diff
changeset
|
21 |
75 | 22 uint16_t read_dma_value(uint32_t address) |
23 { | |
24 return 0; | |
25 } | |
20
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 |
465
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
27 void ym_data_write(ym2612_context * context, uint8_t value) |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
28 { |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
29 } |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
30 |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
31 void ym_address_write_part1(ym2612_context * context, uint8_t address) |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
32 { |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
33 } |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
34 |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
35 void ym_address_write_part2(ym2612_context * context, uint8_t address) |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
36 { |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
37 } |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
38 |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
39 void handle_keydown(int keycode) |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
40 { |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
41 } |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
42 |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
43 void handle_keyup(int keycode) |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
44 { |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
45 } |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
46 |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
47 void handle_joydown(int joystick, int button) |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
48 { |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
49 } |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
50 |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
51 void handle_joyup(int joystick, int button) |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
52 { |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
53 } |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
54 |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
55 void handle_joy_dpad(int joystick, int dpadnum, uint8_t value) |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
56 { |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
57 } |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
58 |
959
3b270fc43ed4
Get stateview building again
Michael Pavone <pavone@retrodev.com>
parents:
931
diff
changeset
|
59 void handle_mousedown(int mouse, int button) |
3b270fc43ed4
Get stateview building again
Michael Pavone <pavone@retrodev.com>
parents:
931
diff
changeset
|
60 { |
3b270fc43ed4
Get stateview building again
Michael Pavone <pavone@retrodev.com>
parents:
931
diff
changeset
|
61 } |
3b270fc43ed4
Get stateview building again
Michael Pavone <pavone@retrodev.com>
parents:
931
diff
changeset
|
62 |
3b270fc43ed4
Get stateview building again
Michael Pavone <pavone@retrodev.com>
parents:
931
diff
changeset
|
63 void handle_mouseup(int mouse, int button) |
3b270fc43ed4
Get stateview building again
Michael Pavone <pavone@retrodev.com>
parents:
931
diff
changeset
|
64 { |
3b270fc43ed4
Get stateview building again
Michael Pavone <pavone@retrodev.com>
parents:
931
diff
changeset
|
65 } |
3b270fc43ed4
Get stateview building again
Michael Pavone <pavone@retrodev.com>
parents:
931
diff
changeset
|
66 |
3b270fc43ed4
Get stateview building again
Michael Pavone <pavone@retrodev.com>
parents:
931
diff
changeset
|
67 void handle_mouse_moved(int mouse, uint16_t x, uint16_t y, int16_t deltax, int16_t deltay) |
3b270fc43ed4
Get stateview building again
Michael Pavone <pavone@retrodev.com>
parents:
931
diff
changeset
|
68 { |
3b270fc43ed4
Get stateview building again
Michael Pavone <pavone@retrodev.com>
parents:
931
diff
changeset
|
69 } |
3b270fc43ed4
Get stateview building again
Michael Pavone <pavone@retrodev.com>
parents:
931
diff
changeset
|
70 |
465
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
71 tern_node * config; |
703
6e751a8f46aa
Get save state viewer compiling again
Michael Pavone <pavone@retrodev.com>
parents:
467
diff
changeset
|
72 int headless = 0; |
465
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
73 |
20
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
74 int main(int argc, char ** argv) |
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
75 { |
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
76 if (argc < 2) { |
792
724bbec47f86
Use a new fatal_error function instead of calling fprintf and exit for fatal errors. This new function more gracefully handles the case in which BlastEm was not started from a terminal or disconnected from ther terminal (Windows).
Michael Pavone <pavone@retrodev.com>
parents:
783
diff
changeset
|
77 fatal_error("Usage: stateview FILENAME\n"); |
20
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
78 } |
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
79 FILE * state_file = fopen(argv[1], "rb"); |
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
80 if (!state_file) { |
792
724bbec47f86
Use a new fatal_error function instead of calling fprintf and exit for fatal errors. This new function more gracefully handles the case in which BlastEm was not started from a terminal or disconnected from ther terminal (Windows).
Michael Pavone <pavone@retrodev.com>
parents:
783
diff
changeset
|
81 fatal_error("Failed to open %s\n", argv[1]); |
20
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
82 } |
812
574495372d1c
Finish OS X support in build_release script. Fix a name conflict in vgmplay on OS X. Call set_exe_str in vgmplay and stateview
Michael Pavone <pavone@retrodev.com>
parents:
793
diff
changeset
|
83 set_exe_str(argv[0]); |
465
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
84 config = load_config(argv[0]); |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
85 int width = -1; |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
86 int height = -1; |
33
2e15fa26fe58
Add support for simple resolution scaling
Mike Pavone <pavone@retrodev.com>
parents:
20
diff
changeset
|
87 if (argc > 2) { |
2e15fa26fe58
Add support for simple resolution scaling
Mike Pavone <pavone@retrodev.com>
parents:
20
diff
changeset
|
88 width = atoi(argv[2]); |
2e15fa26fe58
Add support for simple resolution scaling
Mike Pavone <pavone@retrodev.com>
parents:
20
diff
changeset
|
89 if (argc > 3) { |
2e15fa26fe58
Add support for simple resolution scaling
Mike Pavone <pavone@retrodev.com>
parents:
20
diff
changeset
|
90 height = atoi(argv[3]); |
2e15fa26fe58
Add support for simple resolution scaling
Mike Pavone <pavone@retrodev.com>
parents:
20
diff
changeset
|
91 } |
2e15fa26fe58
Add support for simple resolution scaling
Mike Pavone <pavone@retrodev.com>
parents:
20
diff
changeset
|
92 } |
465
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
93 int def_width = 0; |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
94 char *config_width = tern_find_ptr(config, "videowidth"); |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
95 if (config_width) { |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
96 def_width = atoi(config_width); |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
97 } |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
98 if (!def_width) { |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
99 def_width = 640; |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
100 } |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
101 width = width < 320 ? def_width : width; |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
102 height = height < 240 ? (width/320) * 240 : height; |
dc322bc77ea2
Fix stateview. Update "all" target in Makefile.
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
103 |
20
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
104 vdp_context context; |
719
019d27995e32
Upgrade to SDL 2.0 and drop support for the non-OpenGL render path
Michael Pavone <pavone@retrodev.com>
parents:
703
diff
changeset
|
105 render_init(width, height, "GST State Viewer", 60, 0); |
703
6e751a8f46aa
Get save state viewer compiling again
Michael Pavone <pavone@retrodev.com>
parents:
467
diff
changeset
|
106 init_vdp_context(&context, 0); |
424
7e8e179116af
Add support for loading GST format savestates
Mike Pavone <pavone@retrodev.com>
parents:
322
diff
changeset
|
107 vdp_load_gst(&context, state_file); |
20
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
108 vdp_run_to_vblank(&context); |
322
8e2fa485c0f2
Remove z80_ram reference in SDL renderer to get stateview compiling again. Print out the sprite list in stateview.
Mike Pavone <pavone@retrodev.com>
parents:
75
diff
changeset
|
109 vdp_print_sprite_table(&context); |
75 | 110 printf("Display %s\n", (context.regs[REG_MODE_2] & DISPLAY_ENABLE) ? "enabled" : "disabled"); |
20
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
111 render_context(&context); |
43
3fc57e1a2c56
Add debug render mode and fix vertical flip bit for bg tiles
Mike Pavone <pavone@retrodev.com>
parents:
33
diff
changeset
|
112 render_wait_quit(&context); |
20
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
113 return 0; |
f664eeb55cb4
Mostly broken VDP core and savestate viewer
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
114 } |