Mercurial > repos > blastem
annotate README @ 1036:fc29a122f817
Added Buck Rogers to ROM DB as it needs SRAM, but does not specify it in the header
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 30 Jun 2016 09:42:17 -0700 |
parents | 216fa63749b3 |
children | 58e3d50f6a4e |
rev | line source |
---|---|
1013 | 1 BlastEm 0.4.0 |
468 | 2 ------------- |
3 | |
4 Installation | |
5 ------------ | |
6 | |
808
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
7 Extract this archive to a directory of your choosing. If you wish to change the |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
8 configuration settings, copy default.cfg to $HOME/.config/blastem/blastem.cfg and |
468 | 9 modify the copy. You may also whish to add the blastem directory to your PATH |
10 environment variable. | |
11 | |
808
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
12 Usage |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
13 ----- |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
14 |
1013 | 15 This version of BlastEm has an experimental GUI that is implemented as a Genesis |
16 ROM running inside the emulator. This UI can be operated with either a mouse or | |
17 the first emulated gamepad. By default, both the keyboard and the first game | |
18 controller are mapped to said gamepad. For more information on bindings see the | |
19 Bindings section. | |
20 | |
21 Some operations are currently only supported through the command line. To get a | |
22 list of supported command line options on Linux or OSX type: | |
808
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
23 |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
24 ./blastem -h |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
25 |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
26 From within your BlastEm directory. On Windows type: |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
27 |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
28 blastem.exe -h |
1017
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
29 |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
30 Lock-On Support |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
31 --------------- |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
32 |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
33 This version of BlastEm has some preliminary support for Sonic & Knuckles lock |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
34 on technology. This is only available from the command line at the moment. To |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
35 use it specify the Sonic & Knuckles ROM as the primary ROM and specify the ROM |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
36 to be locked on using the -o option. As an example: |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
37 |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
38 ./blastem ~/romz/sonic_and_knuckles.bin -o ~/romz/sonic3.bin |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
39 |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
40 Please note that Sonic 2 lock-on does not work at this time. Additionally the |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
41 save RAM added by Sonic 3 won't work either. |
808
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
42 |
468 | 43 Configuration |
44 ------------- | |
45 | |
808
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
46 Configuration is read from the file at $HOME/.config/blastem/blastem.cfg if it |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
47 exists, othwerise it is read from default.cfg from the same directory as the |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
48 BlastEm executable. Sections are denoted by a section name followed by an open |
468 | 49 curly bracket, the section's contents and a closing curly bracket. Individual |
50 configuration values are set by entering the value's name followed by a space | |
51 or tab and followed by the desired value. | |
52 | |
53 Bindings | |
54 -------- | |
55 | |
56 The keys subsection of bindings maps keyboard keys to gamepad buttons or UI | |
57 actions. The key name goes on the left and the action is on the right. | |
58 Most keys are named for the character they produce when pressed. Additionally, | |
59 the arrow, enter and escape keys have the symbolic names up, down, left, right, | |
60 enter and esc respectively. Other keys that do not produce characters are not | |
61 yet supported. | |
62 | |
63 The pads subsection is used to map gamepads and joysticks. Analog axes are not | |
64 currently supported. An example configuration is provided in default.cfg to map | |
1013 | 65 SDL joystick 0 to the first controller and SDL joystick 1 to the second |
66 controller. The button assignments there work well for a 360 controller (at | |
67 least on Linux, it's possible the physical button to button number is different | |
68 on other operating systems). | |
69 | |
70 The mice subsection is used to map mice to emulated Mega/Sega mice. The default | |
71 configuration maps both the first and second host mice to the first emulated | |
72 mouse. This should not need modification for most users. | |
73 | |
74 One special mapping deserves a mention. By default, the 'r' key is mapped to | |
75 ui.release_mouse. When operating in windowed mode the mouse has a capture | |
76 behavior. Mouse events are ignored until you click in the window. The mouse | |
77 will then be "captured" and the cursor will be both made invisible and locked | |
78 to the window. The ui.release_mouse binding releases the mouse so it can be | |
79 used normally. | |
80 | |
81 IO | |
82 -- | |
83 | |
84 This section controls which peripherals are attached to the emulated console. | |
85 IO assignments can be overridden by the ROM database when appropriate. For | |
86 instance, games with mouse support can automatically use the mouse and games | |
87 that only support 3-button pads can automatically force an appropriate pad. | |
88 Unforunately, the ROM database is not yet exhaustive so manual configuration | |
89 may be needed here in some cases. | |
468 | 90 |
91 Video | |
92 ----- | |
93 | |
1013 | 94 The video section contains settings that affect the visual output of BlastEm. |
95 | |
96 "width" is used to control the window size when not in fullscreen mode. The | |
97 height of the window is calculated from this value. Both width and height can | |
98 be overridden from the command line. | |
99 | |
100 "vertex_shader" and "fragment_shader" define the GLSL shader program that | |
101 produces the final image for each frame. Shaders can be used to add various | |
102 visual effects or enhancements. Currently BlastEm only ships with the default | |
103 shader. If you write your own shaders, place them in | |
104 $HOME/.config/blastem/shaders and then specify the basename of the new shader | |
105 files in the "vertex_shader" and "fragment_shader" config options. Note that | |
106 shaders are not available in the SDL fallback renderer. | |
107 | |
108 "scanlines" controls whether there is any emulation of the gaps between display | |
109 lines that are present when driving a CRT television with a 240p signal. This | |
110 emulation is very basic at the moment so this option is off by default. | |
111 | |
112 "vsync" controls whether the drawing of frames is synchronized to the monitor | |
113 refresh rate. Valid values for this setting are "off", "on" and "tear". The | |
114 latter will attempt to use the "late tear" option if it's available and normal | |
115 vsync otherwise. Currently it's recommended to leave this at the default of | |
116 "off" as BlastEm synchronizes to audio and does not yet have the necessary code | |
117 to fully handle conflicts between the audio rate and monitor refresh rate. | |
118 Additionally, the "turbo" feature does not function properly with vsync | |
119 enabled. These issues will be addressed in a future release. If you wish to use | |
120 vsync, please see the VSync section at the bottom of the README. | |
468 | 121 |
1017
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
122 "fullscreen" controls whether BlastEm starts in fullscreen or windowed mode. |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
123 This can be overridden on the command line with the -f flag. If fullscreen |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
124 is set to "off", -f will turn it on. Conversely, if fullscreen is set to "on" |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
125 in the config, -f will turn it off. |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
126 |
468 | 127 Audio |
128 ----- | |
129 | |
1014 | 130 The audio section contains settings that affect the audio output of BlastEm. |
1013 | 131 |
132 "rate" selects the preferred sample rate for audio output. Your operating | |
133 system may not accept this value in which case a different rate will be chosen. | |
134 This should generally be either the native sample rate of your sound card or an | |
135 integral divisor of it. Most modern sound cards have a native output rate that | |
136 is a multiple of 48000 Hz so the default setting should work well for most users. | |
137 | |
138 "buffer size" controls how large of a buffer uses for audio data. Smaller values | |
139 will reduce latency, but too small of a value can lead to dropouts. 512 works | |
140 well for me, but a higher or lower value may be more appropriate for your system. | |
141 | |
142 "lowpass_cutoff" controls the cutoff, or knee, frequency of the RC-style | |
143 low-pass filter. The default value of 3390 Hz is supposedly what is present in | |
144 at least some Genesis/Megadrive models. Other models reportedly use an even | |
145 lower value. | |
468 | 146 |
1014 | 147 Clocks |
148 ------ | |
149 | |
150 The clocks section contains settings that affect how fast things run. | |
151 | |
152 "m68k_divider" describes the relationsip between the master clock (which is | |
153 53693175 Hz for NTSC mode and 53203395 Hz for PAL mode). The default value of 7 | |
154 matches the real hardware. Set this to a lower number to overclock the 68000 | |
155 and set it to a higher number to underclock it. | |
156 | |
157 "max_cycles" controls how often the system is forced to synchronize all | |
158 hardware. BlastEm generally uses a sync on demand approach to synchronizing | |
159 components in the system. This can provide perfect synchronization for most | |
160 components, but since the Z80 can steal cycles from the 68000 at unpredictable | |
161 times 68000/Z80 synchronization is imperfect. The default value of 3420 | |
162 corresponds to the number of master clock cycles per line. Larger numbers may | |
163 produce a modest performance improvement whereas smaller numbers will improve | |
164 68000/Z80 synchronization. | |
165 | |
166 "speeds" controls the speed of the overall emulated console at different | |
167 presets. Preset 0 is the default speed and should normally be set to 100. The | |
168 other presets enable the slow/turbo mode functionality. | |
169 | |
170 UI | |
171 -- | |
172 | |
173 The UI section contains settings that affect the graphical user interface. | |
174 | |
175 "rom" determines the path of the Genesis/Megadrive ROM that implements the UI. | |
176 Relative paths will be loaded relative to the BlastEm executable. | |
177 | |
178 Other Settings | |
179 -------------- | |
180 | |
181 "default_region" determines the console region that will be used when region | |
182 detection fails and when there are multiple valid regions. The default of 'U' | |
183 specifies a 60Hz "foreign" console. | |
184 | |
468 | 185 Debugger |
186 -------- | |
187 | |
188 BlastEm has an integrated command-line debugger loosely based on GDB's | |
189 interface. The interface is very rough at the moment. Available commands in the | |
190 68K debugger are: | |
191 b ADDRESS - Set a breakpoint at ADDRESS | |
536 | 192 d BREAKPOINT - Delete a 68K breakpoint |
1014 | 193 co BREAKPOINT - Run a list of debugger commands each time |
194 BREAKPOINT is hit | |
468 | 195 a ADDRESS - Advance to address |
196 n - Advance to next instruction | |
536 | 197 o - Advance to next instruction ignoring branches to |
198 lower addresses (good for breaking out of loops) | |
199 s - Advance to next instruction (follows bsr/jsr) | |
468 | 200 c - Continue |
808
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
201 bt - Print a backtrace |
468 | 202 p[/(x|X|d|c)] VALUE - Print a register or memory location |
1014 | 203 di[/(x|X|d|c)] VALUE - Print a register or memory location each time |
204 a breakpoint is hit | |
468 | 205 vs - Print VDP sprite list |
206 vr - Print VDP register info | |
536 | 207 zb ADDRESS - Set a Z80 breakpoint |
208 zp[/(x|X|d|c)] VALUE - Display a Z80 value | |
468 | 209 q - Quit BlastEm |
210 Available commands in the Z80 debugger are: | |
536 | 211 b ADDRESS - Set a breakpoint at ADDRESS |
212 de BREAKPOINT - Delete a Z80 breakpoint | |
213 a ADDRESS - Advance to address | |
468 | 214 n - Advance to next instruction |
215 c - Continue | |
216 p[/(x|X|d|c)] VALUE - Print a register or memory location | |
1014 | 217 di[/(x|X|d|c)] VALUE - Print a register or memory location each time |
218 a breakpoint is hit | |
468 | 219 q - Quit BlastEm |
220 | |
221 The -d flag can be used to cause BlastEm to start in the debugger. | |
222 Alternatively, you can use the ui.enter_debugger action (mapped to the 'u' key | |
1014 | 223 by default) to enter the debugger while a game is running. To debug the menu |
224 ROM, use the -dm flag. | |
468 | 225 |
536 | 226 GDB Remote Debugging |
227 -------------------- | |
228 | |
229 In addition to the native debugger, BlastEm can also act as a GDB remote | |
230 debugging stub. To use this, you'll want to configure your Makefile to produce | |
231 both an ELF executable and a raw binary. Invoke an m68k-elf targeted gdb with | |
232 the ELF file. Once inside the gdb session, type: | |
233 | |
234 target remote | BLASTEM_PATH/blastem ROM_FILE.bin -D | |
235 | |
236 where BLASTEM_PATH is the relative or absolute path to your BlastEm | |
237 installation and ROM_FILE.bin is the name of the raw binary for your program. | |
238 BlastEm will halt at the beginning of your program's entry point and return | |
239 control to GDB. This will allow you to set breakpoints before your code runs. | |
240 | |
808
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
241 On Windows, the procedure is slightly different. First run |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
242 blastem.exe ROM_FILE.bin -D |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
243 This will cause BlastEm to wait for a socket connection on port 1234. It will |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
244 appear to be frozen until gdb connects to it. Now open the ELF file in gdb |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
245 and type: |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
246 |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
247 target remote :1234 |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
248 |
536 | 249 Trace points and watch points are not currently supported. |
250 | |
810
1f75614d7be8
Fixed an ommission in the CHANGELOG added basic description of extra utilities to README
Michael Pavone <pavone@retrodev.com>
parents:
808
diff
changeset
|
251 Included Tools |
1f75614d7be8
Fixed an ommission in the CHANGELOG added basic description of extra utilities to README
Michael Pavone <pavone@retrodev.com>
parents:
808
diff
changeset
|
252 -------------- |
1f75614d7be8
Fixed an ommission in the CHANGELOG added basic description of extra utilities to README
Michael Pavone <pavone@retrodev.com>
parents:
808
diff
changeset
|
253 |
1f75614d7be8
Fixed an ommission in the CHANGELOG added basic description of extra utilities to README
Michael Pavone <pavone@retrodev.com>
parents:
808
diff
changeset
|
254 BlastEm ships with a few small utilities that leverage portions of the emulator |
1f75614d7be8
Fixed an ommission in the CHANGELOG added basic description of extra utilities to README
Michael Pavone <pavone@retrodev.com>
parents:
808
diff
changeset
|
255 code. |
1f75614d7be8
Fixed an ommission in the CHANGELOG added basic description of extra utilities to README
Michael Pavone <pavone@retrodev.com>
parents:
808
diff
changeset
|
256 |
1f75614d7be8
Fixed an ommission in the CHANGELOG added basic description of extra utilities to README
Michael Pavone <pavone@retrodev.com>
parents:
808
diff
changeset
|
257 dis - 68K disassembler |
1f75614d7be8
Fixed an ommission in the CHANGELOG added basic description of extra utilities to README
Michael Pavone <pavone@retrodev.com>
parents:
808
diff
changeset
|
258 zdis - Z80 disassembler |
1f75614d7be8
Fixed an ommission in the CHANGELOG added basic description of extra utilities to README
Michael Pavone <pavone@retrodev.com>
parents:
808
diff
changeset
|
259 vgmplay - Very basic VGM player |
1f75614d7be8
Fixed an ommission in the CHANGELOG added basic description of extra utilities to README
Michael Pavone <pavone@retrodev.com>
parents:
808
diff
changeset
|
260 stateview - GST save state viewer |
1013 | 261 |
262 VSync | |
263 ----- | |
264 | |
1014 | 265 This section includes information about using VSync with BlastEm. As mentioned |
266 above, the code is currently designed to only sync to audio and has some issues | |
267 with VSync as a result. That said, if your computer is fast enough and you | |
268 don't care about turbo mode, it can generally made to work. | |
269 | |
270 The native refresh rate of an NTSC Genesis is approximately 59.92 Hz which is | |
271 probably not the native refresh rate of your monitor. Fortunately, it is | |
272 most likely lower than your refresh rate. As long as this is true, VSync will | |
273 generally work as long as your computer is fast enough to cope with the time | |
274 lost waiting for VSync and the audio buffer is large enough to not run out of | |
275 samples during that delay. Latency will suffer a bit and you'll get a doubled | |
276 frame, but things will be fine. | |
277 | |
278 If you enable VSync and you're getting audio dropouts, first try doubling the | |
279 audio buffer setting. If you still experience dropouts, it's possible your | |
280 computer is not fast enough or that your monitor's actual refresh rate is in | |
281 fact lower than that of the emualted console. Not much can be done about the | |
282 former (apart from disabling VSync), but the latter can be dealt with by | |
283 lowering the default speed slightly in the "clocks" section. | |
284 | |
285 A future release will support VSync in a less hacky fashion. | |
810
1f75614d7be8
Fixed an ommission in the CHANGELOG added basic description of extra utilities to README
Michael Pavone <pavone@retrodev.com>
parents:
808
diff
changeset
|
286 |
468 | 287 License |
288 ------- | |
289 | |
290 BlastEm is free software distributed under the terms of the GNU General Public | |
291 License version 3 or higher. This gives you the right to redistribute and/or | |
292 modify the program as long as you follow the terms of the license. See the file | |
293 COPYING for full license details. | |
294 | |
785
0e5f14d9a579
Prep for 0.3.0 release
Michael Pavone <pavone@retrodev.com>
parents:
536
diff
changeset
|
295 Binary releases of BlastEm are packaged with GLEW and SDL2 which have thier own |
0e5f14d9a579
Prep for 0.3.0 release
Michael Pavone <pavone@retrodev.com>
parents:
536
diff
changeset
|
296 licenses. See GLEW-LICENSE and SDL-LICENSE for details. |