Mercurial > repos > blastem
annotate README @ 1124:e4deab85f9ac
The function of the HVC Latch enable bit in mode register 1 is different when not in mode 5
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 27 Dec 2016 13:38:58 -0800 |
parents | dc05e3a7d8da |
children | 262c0ce8f586 |
rev | line source |
---|---|
1066 | 1 BlastEm 0.4.1 |
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 |
1066 | 8 configuration settings, copy default.cfg to $HOME/.config/blastem/blastem.cfg |
9 and modify the copy. If you are on Windows, the config file should be placed in | |
10 %localappdata%\blastem. You may also whish to add the blastem directory to your | |
11 PATH environment variable. | |
12 | |
13 NOTE: Prior to version 0.4.1, BlastEm was still using Unixy locations for config | |
14 and save files. If you're upgrading from a previous version on Windows, you will | |
15 need to move them manually. For config files, the relevant paths are in the | |
16 previous paragraph. For save files, move all the directories found in | |
17 %userprofile%\.local\share\blastem to %localappdata%\blastem | |
468 | 18 |
808
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
19 Usage |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
20 ----- |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
21 |
1013 | 22 This version of BlastEm has an experimental GUI that is implemented as a Genesis |
23 ROM running inside the emulator. This UI can be operated with either a mouse or | |
24 the first emulated gamepad. By default, both the keyboard and the first game | |
25 controller are mapped to said gamepad. For more information on bindings see the | |
26 Bindings section. | |
27 | |
28 Some operations are currently only supported through the command line. To get a | |
29 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
|
30 |
1066 | 31 ./blastem -h |
32 | |
808
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
33 From within your BlastEm directory. On Windows type: |
1066 | 34 |
35 blastem.exe -h | |
36 | |
1017
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
37 Lock-On Support |
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
38 --------------- |
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 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
|
41 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
|
42 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
|
43 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
|
44 |
1066 | 45 ./blastem ~/romz/sonic_and_knuckles.bin -o ~/romz/sonic3.bin |
46 | |
1017
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
47 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
|
48 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
|
49 |
468 | 50 Configuration |
51 ------------- | |
52 | |
1066 | 53 Configuration is read from the file at $HOME/.config/blastem/blastem.cfg on |
54 Unix-like systems and %localappdata%\blastem\blastem.cfg if it exists. | |
55 Othwerise it is read from default.cfg from the same directory as the BlastEm | |
56 executable. Sections are denoted by a section name followed by an open curly | |
57 bracket, the section's contents and a closing curly bracket. Individual | |
468 | 58 configuration values are set by entering the value's name followed by a space |
59 or tab and followed by the desired value. | |
60 | |
61 Bindings | |
62 -------- | |
63 | |
64 The keys subsection of bindings maps keyboard keys to gamepad buttons or UI | |
65 actions. The key name goes on the left and the action is on the right. | |
1066 | 66 Most keys are named for the character they produce when pressed. For keys that |
67 don't correspond to a normal character, check the list below: | |
68 | |
69 Name | Description | |
70 ----------------- | |
71 up Up arrow | |
72 down Down arrow | |
73 left Left arrow | |
74 right Right arrow | |
75 space | |
76 tab | |
77 backspace Backspace on PC keyboards, Delete on Mac keyboards | |
78 esc | |
79 delete | |
80 lshift Left shift | |
81 rshift Right shift | |
82 lctrl Left control | |
83 rctrl Right control | |
84 lalt Left alt on PC keyboards, Option on Mac keyboards | |
85 ralt Right alt on PC keyboards, Option on Mac keyboards | |
86 home | |
87 end | |
88 pageup | |
89 pagedown | |
90 f1 | |
91 f2 | |
92 f3 | |
93 f4 | |
94 f5 | |
95 f6 | |
96 f7 | |
97 f8 | |
98 f9 | |
99 f10 | |
100 f11 | |
101 f12 | |
102 select | |
103 play | |
104 search | |
105 back | |
468 | 106 |
107 The pads subsection is used to map gamepads and joysticks. Analog axes are not | |
108 currently supported. An example configuration is provided in default.cfg to map | |
1013 | 109 SDL joystick 0 to the first controller and SDL joystick 1 to the second |
110 controller. The button assignments there work well for a 360 controller (at | |
111 least on Linux, it's possible the physical button to button number is different | |
112 on other operating systems). | |
113 | |
114 The mice subsection is used to map mice to emulated Mega/Sega mice. The default | |
115 configuration maps both the first and second host mice to the first emulated | |
116 mouse. This should not need modification for most users. | |
117 | |
118 One special mapping deserves a mention. By default, the 'r' key is mapped to | |
119 ui.release_mouse. When operating in windowed mode the mouse has a capture | |
120 behavior. Mouse events are ignored until you click in the window. The mouse | |
121 will then be "captured" and the cursor will be both made invisible and locked | |
122 to the window. The ui.release_mouse binding releases the mouse so it can be | |
123 used normally. | |
124 | |
125 IO | |
126 -- | |
127 | |
128 This section controls which peripherals are attached to the emulated console. | |
129 IO assignments can be overridden by the ROM database when appropriate. For | |
130 instance, games with mouse support can automatically use the mouse and games | |
131 that only support 3-button pads can automatically force an appropriate pad. | |
132 Unforunately, the ROM database is not yet exhaustive so manual configuration | |
133 may be needed here in some cases. | |
468 | 134 |
135 Video | |
136 ----- | |
137 | |
1013 | 138 The video section contains settings that affect the visual output of BlastEm. |
139 | |
140 "width" is used to control the window size when not in fullscreen mode. The | |
141 height of the window is calculated from this value. Both width and height can | |
142 be overridden from the command line. | |
143 | |
144 "vertex_shader" and "fragment_shader" define the GLSL shader program that | |
145 produces the final image for each frame. Shaders can be used to add various | |
146 visual effects or enhancements. Currently BlastEm only ships with the default | |
147 shader. If you write your own shaders, place them in | |
148 $HOME/.config/blastem/shaders and then specify the basename of the new shader | |
149 files in the "vertex_shader" and "fragment_shader" config options. Note that | |
150 shaders are not available in the SDL fallback renderer. | |
151 | |
152 "scanlines" controls whether there is any emulation of the gaps between display | |
153 lines that are present when driving a CRT television with a 240p signal. This | |
154 emulation is very basic at the moment so this option is off by default. | |
155 | |
156 "vsync" controls whether the drawing of frames is synchronized to the monitor | |
157 refresh rate. Valid values for this setting are "off", "on" and "tear". The | |
158 latter will attempt to use the "late tear" option if it's available and normal | |
159 vsync otherwise. Currently it's recommended to leave this at the default of | |
160 "off" as BlastEm synchronizes to audio and does not yet have the necessary code | |
161 to fully handle conflicts between the audio rate and monitor refresh rate. | |
162 Additionally, the "turbo" feature does not function properly with vsync | |
163 enabled. These issues will be addressed in a future release. If you wish to use | |
164 vsync, please see the VSync section at the bottom of the README. | |
468 | 165 |
1017
216fa63749b3
Added documentation for lock-on support and a fullscreen config option.
Michael Pavone <pavone@retrodev.com>
parents:
1014
diff
changeset
|
166 "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
|
167 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
|
168 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
|
169 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
|
170 |
468 | 171 Audio |
172 ----- | |
173 | |
1014 | 174 The audio section contains settings that affect the audio output of BlastEm. |
1013 | 175 |
176 "rate" selects the preferred sample rate for audio output. Your operating | |
177 system may not accept this value in which case a different rate will be chosen. | |
178 This should generally be either the native sample rate of your sound card or an | |
179 integral divisor of it. Most modern sound cards have a native output rate that | |
180 is a multiple of 48000 Hz so the default setting should work well for most users. | |
181 | |
182 "buffer size" controls how large of a buffer uses for audio data. Smaller values | |
183 will reduce latency, but too small of a value can lead to dropouts. 512 works | |
184 well for me, but a higher or lower value may be more appropriate for your system. | |
185 | |
186 "lowpass_cutoff" controls the cutoff, or knee, frequency of the RC-style | |
187 low-pass filter. The default value of 3390 Hz is supposedly what is present in | |
188 at least some Genesis/Megadrive models. Other models reportedly use an even | |
189 lower value. | |
468 | 190 |
1014 | 191 Clocks |
192 ------ | |
193 | |
194 The clocks section contains settings that affect how fast things run. | |
195 | |
196 "m68k_divider" describes the relationsip between the master clock (which is | |
197 53693175 Hz for NTSC mode and 53203395 Hz for PAL mode). The default value of 7 | |
198 matches the real hardware. Set this to a lower number to overclock the 68000 | |
199 and set it to a higher number to underclock it. | |
200 | |
201 "max_cycles" controls how often the system is forced to synchronize all | |
202 hardware. BlastEm generally uses a sync on demand approach to synchronizing | |
203 components in the system. This can provide perfect synchronization for most | |
204 components, but since the Z80 can steal cycles from the 68000 at unpredictable | |
205 times 68000/Z80 synchronization is imperfect. The default value of 3420 | |
206 corresponds to the number of master clock cycles per line. Larger numbers may | |
207 produce a modest performance improvement whereas smaller numbers will improve | |
208 68000/Z80 synchronization. | |
209 | |
210 "speeds" controls the speed of the overall emulated console at different | |
211 presets. Preset 0 is the default speed and should normally be set to 100. The | |
212 other presets enable the slow/turbo mode functionality. | |
213 | |
214 UI | |
215 -- | |
216 | |
217 The UI section contains settings that affect the graphical user interface. | |
218 | |
219 "rom" determines the path of the Genesis/Megadrive ROM that implements the UI. | |
220 Relative paths will be loaded relative to the BlastEm executable. | |
221 | |
222 Other Settings | |
223 -------------- | |
224 | |
225 "default_region" determines the console region that will be used when region | |
226 detection fails and when there are multiple valid regions. The default of 'U' | |
227 specifies a 60Hz "foreign" console. | |
228 | |
468 | 229 Debugger |
230 -------- | |
231 | |
232 BlastEm has an integrated command-line debugger loosely based on GDB's | |
233 interface. The interface is very rough at the moment. Available commands in the | |
234 68K debugger are: | |
1066 | 235 b ADDRESS - Set a breakpoint at ADDRESS |
236 d BREAKPOINT - Delete a 68K breakpoint | |
237 co BREAKPOINT - Run a list of debugger commands each time | |
1014 | 238 BREAKPOINT is hit |
1066 | 239 a ADDRESS - Advance to address |
240 n - Advance to next instruction | |
241 o - Advance to next instruction ignoring branches to | |
242 lower addresses (good for breaking out of loops) | |
243 s - Advance to next instruction (follows bsr/jsr) | |
244 c - Continue | |
245 bt - Print a backtrace | |
246 p[/(x|X|d|c)] VALUE - Print a register or memory location | |
247 di[/(x|X|d|c)] VALUE - Print a register or memory location each time | |
248 a breakpoint is hit | |
249 vs - Print VDP sprite list | |
250 vr - Print VDP register info | |
251 zb ADDRESS - Set a Z80 breakpoint | |
252 zp[/(x|X|d|c)] VALUE - Display a Z80 value | |
253 q - Quit BlastEm | |
468 | 254 Available commands in the Z80 debugger are: |
1066 | 255 b ADDRESS - Set a breakpoint at ADDRESS |
256 de BREAKPOINT - Delete a Z80 breakpoint | |
257 a ADDRESS - Advance to address | |
258 n - Advance to next instruction | |
259 c - Continue | |
260 p[/(x|X|d|c)] VALUE - Print a register or memory location | |
261 di[/(x|X|d|c)] VALUE - Print a register or memory location each time | |
262 a breakpoint is hit | |
263 q - Quit BlastEm | |
468 | 264 |
265 The -d flag can be used to cause BlastEm to start in the debugger. | |
266 Alternatively, you can use the ui.enter_debugger action (mapped to the 'u' key | |
1014 | 267 by default) to enter the debugger while a game is running. To debug the menu |
268 ROM, use the -dm flag. | |
468 | 269 |
536 | 270 GDB Remote Debugging |
271 -------------------- | |
272 | |
273 In addition to the native debugger, BlastEm can also act as a GDB remote | |
274 debugging stub. To use this, you'll want to configure your Makefile to produce | |
275 both an ELF executable and a raw binary. Invoke an m68k-elf targeted gdb with | |
276 the ELF file. Once inside the gdb session, type: | |
277 | |
1066 | 278 target remote | BLASTEM_PATH/blastem ROM_FILE.bin -D |
536 | 279 |
280 where BLASTEM_PATH is the relative or absolute path to your BlastEm | |
281 installation and ROM_FILE.bin is the name of the raw binary for your program. | |
282 BlastEm will halt at the beginning of your program's entry point and return | |
283 control to GDB. This will allow you to set breakpoints before your code runs. | |
284 | |
808
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
285 On Windows, the procedure is slightly different. First run |
1066 | 286 blastem.exe ROM_FILE.bin -D |
808
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
287 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
|
288 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
|
289 and type: |
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
290 |
1066 | 291 target remote :1234 |
808
2953708d02af
Update README, CHANGELOG and version string for 0.3.1
Michael Pavone <pavone@retrodev.com>
parents:
785
diff
changeset
|
292 |
536 | 293 Trace points and watch points are not currently supported. |
294 | |
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
|
295 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
|
296 -------------- |
1f75614d7be8
Fixed an ommission in the CHANGELOG added basic description of extra utilities to README
Michael Pavone <pavone@retrodev.com>
parents:
808
diff
changeset
|
297 |
1f75614d7be8
Fixed an ommission in the CHANGELOG added basic description of extra utilities to README
Michael Pavone <pavone@retrodev.com>
parents:
808
diff
changeset
|
298 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
|
299 code. |
1066 | 300 |
301 dis - 68K disassembler | |
302 zdis - Z80 disassembler | |
303 vgmplay - Very basic VGM player | |
304 stateview - GST save state viewer | |
305 | |
1013 | 306 VSync |
307 ----- | |
308 | |
1014 | 309 This section includes information about using VSync with BlastEm. As mentioned |
310 above, the code is currently designed to only sync to audio and has some issues | |
311 with VSync as a result. That said, if your computer is fast enough and you | |
312 don't care about turbo mode, it can generally made to work. | |
313 | |
314 The native refresh rate of an NTSC Genesis is approximately 59.92 Hz which is | |
315 probably not the native refresh rate of your monitor. Fortunately, it is | |
316 most likely lower than your refresh rate. As long as this is true, VSync will | |
317 generally work as long as your computer is fast enough to cope with the time | |
318 lost waiting for VSync and the audio buffer is large enough to not run out of | |
319 samples during that delay. Latency will suffer a bit and you'll get a doubled | |
320 frame, but things will be fine. | |
321 | |
322 If you enable VSync and you're getting audio dropouts, first try doubling the | |
323 audio buffer setting. If you still experience dropouts, it's possible your | |
324 computer is not fast enough or that your monitor's actual refresh rate is in | |
325 fact lower than that of the emualted console. Not much can be done about the | |
326 former (apart from disabling VSync), but the latter can be dealt with by | |
327 lowering the default speed slightly in the "clocks" section. | |
328 | |
329 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
|
330 |
1066 | 331 Special Thanks |
332 -------------- | |
333 | |
334 My work has been made much easier by the contributions of those in the Genesis | |
335 community past and present. I'd like to thank the people below for their help. | |
336 | |
337 Nemesis - His work reverse engineering and documenting the VDP and | |
338 YM-2612 has saved me an immeasurable amount of time. I've | |
339 found both his sprite overflow test ROM and VDP FIFO | |
340 Testing ROM to be quite helpful. | |
341 | |
342 Charles MacDonald - While it hasn't been updated in a while, I still find his | |
343 VDP document to be my favorite reference. His Genesis | |
344 hardware document has also come in handy. | |
345 | |
346 Eke-Eke - Eke-Eke wrote a great document on the use of I2C EEPROM in | |
347 Genesis games and also left some useful very helpful | |
348 comments about problematic games in Genesis Plus GX | |
349 | |
350 Bart Trzynadlowski - His documents on the Genecyst save-state format and the | |
351 mapper used in Super Street Fighter 2 were definitely | |
352 appreciated. | |
353 | |
354 KanedaFR - Kaneda's SpritesMind forum is a great resource for the | |
355 Sega development community. | |
356 | |
357 I'd also like to thank the following people who have performed compatibility | |
358 testing or submitted helpful bug reports | |
359 | |
1069
dc05e3a7d8da
Updated special thanks
Michael Pavone <pavone@retrodev.com>
parents:
1066
diff
changeset
|
360 micky, Sik, Tim Lawrence, ComradeOj, Vladikcomper |
1066 | 361 |
468 | 362 License |
363 ------- | |
364 | |
365 BlastEm is free software distributed under the terms of the GNU General Public | |
366 License version 3 or higher. This gives you the right to redistribute and/or | |
367 modify the program as long as you follow the terms of the license. See the file | |
368 COPYING for full license details. | |
369 | |
785
0e5f14d9a579
Prep for 0.3.0 release
Michael Pavone <pavone@retrodev.com>
parents:
536
diff
changeset
|
370 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
|
371 licenses. See GLEW-LICENSE and SDL-LICENSE for details. |