comparison README @ 2289:92449b47cce8

Integrate VGM player into main blastem binary
author Michael Pavone <pavone@retrodev.com>
date Sat, 04 Feb 2023 22:44:44 -0800
parents 8aeac7bd9fa7
children 62f316b76e9a
comparison
equal deleted inserted replaced
2288:efc75ea79164 2289:92449b47cce8
7 Extract this archive to a directory of your choosing. 7 Extract this archive to a directory of your choosing.
8 8
9 NOTE: Prior to version 0.4.1, BlastEm was still using Unixy locations for config 9 NOTE: Prior to version 0.4.1, BlastEm was still using Unixy locations for config
10 and save files. If you're upgrading from a previous version on Windows, you will 10 and save files. If you're upgrading from a previous version on Windows, you will
11 need to move them manually. For config files, the relevant paths are in the 11 need to move them manually. For config files, the relevant paths are in the
12 previous paragraph. For save files, move all the directories found in 12 previous paragraph. For save files, move all the directories found in
13 %userprofile%\.local\share\blastem to %localappdata%\blastem 13 %userprofile%\.local\share\blastem to %localappdata%\blastem
14 14
15 Usage 15 Usage
16 ----- 16 -----
17 17
27 27
28 Some operations are currently only supported through the command line. To get a 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: 29 list of supported command line options on Linux or OSX type:
30 30
31 ./blastem -h 31 ./blastem -h
32 32
33 From within your BlastEm directory. On Windows type: 33 From within your BlastEm directory. On Windows type:
34 34
35 blastem.exe -h 35 blastem.exe -h
36 36
37 Lock-On Support 37 Lock-On Support
38 --------------- 38 ---------------
39 39
40 This version of BlastEm has some preliminary support for Sonic & Knuckles lock 40 This version of BlastEm has some preliminary support for Sonic & Knuckles lock
41 on technology. This is available via both the menu and the command line. To use 41 on technology. This is available via both the menu and the command line. To use
44 to lock on. The system will then reload with the combined game. To use it from 44 to lock on. The system will then reload with the combined game. To use it from
45 the command line, specify the Sonic & Knuckles ROM as the primary ROM and 45 the command line, specify the Sonic & Knuckles ROM as the primary ROM and
46 specify the ROM to be locked on using the -o option. As an example: 46 specify the ROM to be locked on using the -o option. As an example:
47 47
48 ./blastem ~/romz/sonic_and_knuckles.bin -o ~/romz/sonic3.bin 48 ./blastem ~/romz/sonic_and_knuckles.bin -o ~/romz/sonic3.bin
49 49
50 Please note that Sonic 2 lock-on does not work at this time. 50 Please note that Sonic 2 lock-on does not work at this time.
51 51
52 Configuration 52 Configuration
53 ------------- 53 -------------
54 54
55 Configuration is read from the file at $HOME/.config/blastem/blastem.cfg on 55 Configuration is read from the file at $HOME/.config/blastem/blastem.cfg on
56 Unix-like systems and %localappdata%\blastem\blastem.cfg if it exists. 56 Unix-like systems and %localappdata%\blastem\blastem.cfg if it exists.
57 Othwerise it is read from default.cfg from the same directory as the BlastEm 57 Othwerise it is read from default.cfg from the same directory as the BlastEm
58 executable. Sections are denoted by a section name followed by an open curly 58 executable. Sections are denoted by a section name followed by an open curly
59 bracket, the section's contents and a closing curly bracket. Individual 59 bracket, the section's contents and a closing curly bracket. Individual
60 configuration values are set by entering the value's name followed by a space 60 configuration values are set by entering the value's name followed by a space
61 or tab and followed by the desired value. 61 or tab and followed by the desired value.
62 62
63 Bindings 63 Bindings
105 play 105 play
106 search 106 search
107 back 107 back
108 108
109 The pads subsection is used to map gamepads and joysticks. Gamepads that are 109 The pads subsection is used to map gamepads and joysticks. Gamepads that are
110 recognized, can have their buttons and axes mapped with semantic names. 110 recognized, can have their buttons and axes mapped with semantic names.
111 Xbox 360, PS4 and PS3 style names are supported. Unrecognized gamepads can be 111 Xbox 360, PS4 and PS3 style names are supported. Unrecognized gamepads can be
112 mapped using numeric button and axis ids. The following button names are 112 mapped using numeric button and axis ids. The following button names are
113 recognized by BlastEm: 113 recognized by BlastEm:
114 a, cross 114 a, cross
115 b, circle 115 b, circle
116 x, square 116 x, square
127 lefty 127 lefty
128 rightx 128 rightx
129 righty 129 righty
130 lefttrigger, l2 130 lefttrigger, l2
131 righttrigger, r2 131 righttrigger, r2
132 132
133 133
134 The mice subsection is used to map mice to emulated Mega/Sega mice. The default 134 The mice subsection is used to map mice to emulated Mega/Sega mice. The default
135 configuration maps both the first and second host mice to the first emulated 135 configuration maps both the first and second host mice to the first emulated
136 mouse. This should not need modification for most users. 136 mouse. This should not need modification for most users.
137 137
161 ui.exit Returns to the menu ROM if currently in a game 161 ui.exit Returns to the menu ROM if currently in a game
162 that was launched from the menu. Exits otherwise 162 that was launched from the menu. Exits otherwise
163 ui.save_state Saves a savestate to the quicksave slot 163 ui.save_state Saves a savestate to the quicksave slot
164 ui.set_speed.N Selects a specific machine speed specified by N 164 ui.set_speed.N Selects a specific machine speed specified by N
165 which should be a number between 0-9. Speeds are 165 which should be a number between 0-9. Speeds are
166 specified in the "clocks" section of the config 166 specified in the "clocks" section of the config
167 ui.next_speed Selects the next machine speed 167 ui.next_speed Selects the next machine speed
168 ui.prev_speed Selects the previous machine speed 168 ui.prev_speed Selects the previous machine speed
169 ui.toggle_fullscreen Toggles between fullscreen and windowed mode 169 ui.toggle_fullscreen Toggles between fullscreen and windowed mode
170 ui.soft_reset Resets a portion of the emulated machine 170 ui.soft_reset Resets a portion of the emulated machine
171 Equivalent to pushing the reset button on the 171 Equivalent to pushing the reset button on the
174 a hard reset of the emulated device 174 a hard reset of the emulated device
175 ui.sms_pause Triggers a press of the pause button when in SMS 175 ui.sms_pause Triggers a press of the pause button when in SMS
176 mode 176 mode
177 ui.toggle_keyboard_captured Toggles the capture state of the host keyboard 177 ui.toggle_keyboard_captured Toggles the capture state of the host keyboard
178 when an emulated keyboard is present 178 when an emulated keyboard is present
179 179
180 IO 180 IO
181 -- 181 --
182 182
183 This section controls which peripherals are attached to the emulated console. 183 This section controls which peripherals are attached to the emulated console.
184 IO assignments can be overridden by the ROM database when appropriate. For 184 IO assignments can be overridden by the ROM database when appropriate. For
201 left unspecified, it will be calculated from "width" and "aspect". 201 left unspecified, it will be calculated from "width" and "aspect".
202 202
203 "vertex_shader" and "fragment_shader" define the GLSL shader program that 203 "vertex_shader" and "fragment_shader" define the GLSL shader program that
204 produces the final image for each frame. Shaders can be used to add various 204 produces the final image for each frame. Shaders can be used to add various
205 visual effects or enhancements. Currently BlastEm only ships with the default 205 visual effects or enhancements. Currently BlastEm only ships with the default
206 shader and a "subtle" crt shader. If you write your own shaders, place them in 206 shader and a "subtle" crt shader. If you write your own shaders, place them in
207 $HOME/.config/blastem/shaders and then specify the basename of the new shader 207 $HOME/.config/blastem/shaders and then specify the basename of the new shader
208 files in the "vertex_shader" and "fragment_shader" config options. Note that 208 files in the "vertex_shader" and "fragment_shader" config options. Note that
209 shaders are not available in the SDL fallback renderer. 209 shaders are not available in the SDL fallback renderer.
210 210
211 "scanlines" controls whether there is any emulation of the gaps between display 211 "scanlines" controls whether there is any emulation of the gaps between display
332 the following special variables: $HOME, $EXEDIR. Additionally, variables 332 the following special variables: $HOME, $EXEDIR. Additionally, variables
333 defined in the OS environment can be used. 333 defined in the OS environment can be used.
334 334
335 "remember_path" specifies whether BlastEm should remember the last path used in 335 "remember_path" specifies whether BlastEm should remember the last path used in
336 the file browser. When it is set to "on", the last path will be remembered and 336 the file browser. When it is set to "on", the last path will be remembered and
337 used instead of "initial_path" in subsequent runs. If it is set to "off", 337 used instead of "initial_path" in subsequent runs. If it is set to "off",
338 "initial_path" will always be used. 338 "initial_path" will always be used.
339 339
340 "screenshot_path" specifies the directory "internal" screenshots will be saved 340 "screenshot_path" specifies the directory "internal" screenshots will be saved
341 in. It accepts the same special variables as "initial_path". 341 in. It accepts the same special variables as "initial_path".
342 342
362 362
363 This section explains the meaning of the special path variables referenced 363 This section explains the meaning of the special path variables referenced
364 in the previous section. 364 in the previous section.
365 365
366 $HOME The home directory of the current user. On most Unix variants, it 366 $HOME The home directory of the current user. On most Unix variants, it
367 will be a subdirectory of /home. On Windows it will typically be a 367 will be a subdirectory of /home. On Windows it will typically be a
368 subdirectory of C:\Users 368 subdirectory of C:\Users
369 $EXEDIR The directory the BlastEm executable is located in 369 $EXEDIR The directory the BlastEm executable is located in
370 $USERDATA This is an OS-specific path used for storing application specific 370 $USERDATA This is an OS-specific path used for storing application specific
371 user data. On Unix variants, it will be $HOME/.local/share/blastem 371 user data. On Unix variants, it will be $HOME/.local/share/blastem
372 On Windows it will be %LOCALDATA%/blastem 372 On Windows it will be %LOCALDATA%/blastem
451 where BLASTEM_PATH is the relative or absolute path to your BlastEm 451 where BLASTEM_PATH is the relative or absolute path to your BlastEm
452 installation and ROM_FILE.bin is the name of the raw binary for your program. 452 installation and ROM_FILE.bin is the name of the raw binary for your program.
453 BlastEm will halt at the beginning of your program's entry point and return 453 BlastEm will halt at the beginning of your program's entry point and return
454 control to GDB. This will allow you to set breakpoints before your code runs. 454 control to GDB. This will allow you to set breakpoints before your code runs.
455 455
456 On Windows, the procedure is slightly different. First run 456 On Windows, the procedure is slightly different. First run
457 blastem.exe ROM_FILE.bin -D 457 blastem.exe ROM_FILE.bin -D
458 This will cause BlastEm to wait for a socket connection on port 1234. It will 458 This will cause BlastEm to wait for a socket connection on port 1234. It will
459 appear to be frozen until gdb connects to it. Now open the ELF file in gdb 459 appear to be frozen until gdb connects to it. Now open the ELF file in gdb
460 and type: 460 and type:
461 461
466 Included Tools 466 Included Tools
467 -------------- 467 --------------
468 468
469 BlastEm ships with a few small utilities that leverage portions of the emulator 469 BlastEm ships with a few small utilities that leverage portions of the emulator
470 code. 470 code.
471 471
472 dis - 68K disassembler 472 dis - 68K disassembler
473 zdis - Z80 disassembler 473 zdis - Z80 disassembler
474 vgmplay - Very basic VGM player 474
475 stateview - GST save state viewer
476
477 Sync Source and VSync 475 Sync Source and VSync
478 ----- 476 -----
479 477
480 This section includes information about using VSync with BlastEm. Currently, 478 This section includes information about using VSync with BlastEm. Currently,
481 the best way to use VSync is to set the sync source to "video". This will force 479 the best way to use VSync is to set the sync source to "video". This will force
507 Charles MacDonald - While it hasn't been updated in a while, I still find his 505 Charles MacDonald - While it hasn't been updated in a while, I still find his
508 VDP document to be my favorite reference. His Genesis 506 VDP document to be my favorite reference. His Genesis
509 hardware document has also come in handy. 507 hardware document has also come in handy.
510 508
511 Eke-Eke - Eke-Eke wrote a great document on the use of I2C EEPROM in 509 Eke-Eke - Eke-Eke wrote a great document on the use of I2C EEPROM in
512 Genesis games and also left some useful very helpful 510 Genesis games and also left some useful very helpful
513 comments about problematic games in Genesis Plus GX 511 comments about problematic games in Genesis Plus GX
514 512
515 Sauraen - Sauraen has analyzed the YM2203 and YM2612 dies and written 513 Sauraen - Sauraen has analyzed the YM2203 and YM2612 dies and written
516 a VHDL operator implementation. These have been useful in 514 a VHDL operator implementation. These have been useful in
517 improving the accuracy of my YM2612 core. 515 improving the accuracy of my YM2612 core.
518 516
519 Alexey Khokholov - Alexey (aka Nuke.YKT) has analyzed the YM3438 die and written 517 Alexey Khokholov - Alexey (aka Nuke.YKT) has analyzed the YM3438 die and written
522 YM2612 core. 520 YM2612 core.
523 521
524 Bart Trzynadlowski - His documents on the Genecyst save-state format and the 522 Bart Trzynadlowski - His documents on the Genecyst save-state format and the
525 mapper used in Super Street Fighter 2 were definitely 523 mapper used in Super Street Fighter 2 were definitely
526 appreciated. 524 appreciated.
527 525
528 KanedaFR - Kaneda's SpritesMind forum is a great resource for the 526 KanedaFR - Kaneda's SpritesMind forum is a great resource for the
529 Sega development community. 527 Sega development community.
530 528
531 Titan - Titan has created what are without a doubt the most 529 Titan - Titan has created what are without a doubt the most
532 impressive demos on the Megadrive. Additionally, I am very 530 impressive demos on the Megadrive. Additionally, I am very
533 grateful for the documentation provided by Kabuto and the 531 grateful for the documentation provided by Kabuto and the
534 assistance of Kabuto, Sik and Jorge in getting Overdrive 2 532 assistance of Kabuto, Sik and Jorge in getting Overdrive 2
535 to run properly in BlastEm. 533 to run properly in BlastEm.
536 534
537 flamewing - flamewing created a very handy exhaustive test ROM for 68K 535 flamewing - flamewing created a very handy exhaustive test ROM for 68K
538 BCD instructions and documented the proper behavior for 536 BCD instructions and documented the proper behavior for
539 certain BCD edge cases 537 certain BCD edge cases
540 538
541 r57shell - r57shell created a test ROM for 68K instruction sizes that 539 r57shell - r57shell created a test ROM for 68K instruction sizes that