Skip to content

Commit ca62c73

Browse files
committed
Updated README
1 parent 9ba7616 commit ca62c73

File tree

1 file changed

+55
-13
lines changed

1 file changed

+55
-13
lines changed

README.md

Lines changed: 55 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ A VST wrapper around the SameBoy GameBoy emulator, with Arduinoboy support
77
- Syncs [LSDj](https://www.littlesounddj.com) to your DAW
88
- Emulates various [Arduinoboy](https://github.com/trash80/Arduinoboy) modes
99

10-
## Current limitations (subject to change)
10+
## Current Limitations (subject to change)
1111
- VST2 only
1212
- Windows only
1313
- 64bit only
@@ -21,11 +21,11 @@ Visit the [releases](https://github.com/tommitytom/RetroPlug/releases) page to d
2121
- A .sav with the same name as your rom will be loaded if it is present
2222
- Right click to bring up a menu with various options
2323
- The emulator state is saved in to the project file in your DAW when you hit save, which will persist your changes. **YOUR .sav IS NOT AUTO SAVED**. If you want to save out the .sav then do so from the SRAM context menu.
24-
- To edit button mapping, go to Settings -> Open Settings Folder... and edit `buttons.json` (full list of button names below)
24+
- To edit button mapping, go to `Settings -> Open Settings Folder...` and edit `buttons.json` (full list of button names below)
2525
- For mGB, the usual Arduinoboy rules apply: https://github.com/trash80/mGB - no additional config needed, just throw notes at it!
2626
- For LSDj, an additional menu will appear in the settings menu, allowing you to set sync modes (Arduinoboy emulation)
2727

28-
## Button mapping
28+
## Button Mapping
2929
Keyboard button mapping is currently only configurable with JSON configuration files. On first run a config file is written to `C:\Users\USERNAME\AppData\Roaming\RetroPlug` containing the following default button map:
3030

3131
|Button|Default key|
@@ -39,16 +39,50 @@ Keyboard button mapping is currently only configurable with JSON configuration f
3939
|Select|Ctrl|
4040
|Start|Enter|
4141

42-
### Supported keys for buttons.json:
42+
### Supported Keys for buttons.json:
4343
Keys `0 - 9` and `A - Z` can be used for alpha numeric keys, as well as the following keys:
4444

4545
```
4646
Backspace, Tab, Clear, Enter, Shift, Ctrl, Alt, Pause, Caps, Esc, Space, PageUp, PageDown, End, Home, LeftArrow, UpArrow, RightArrow, DownArrow, Select, Print, Execute, PrintScreen, Insert, Delete, Help, LeftWin, RightWin, Sleep, NumPad0, NumPad1, NumPad2, NumPad3, NumPad4, NumPad5, NumPad6, NumPad7, NumPad8, NumPad9, Multiply, Add, Separator, Subtract, Decimal, Divide, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, NumLock, Scroll
4747
```
4848
All key names are CASE SENSITIVE!
4949

50-
## LSDj specific settings
51-
### Sync modes
50+
## Multiple Instances
51+
You can load multiple instances of the emulator in a single window, and link them with virtual link cables. The goal of this feature is to offer a streamlined way of working with multiple instances of LSDj. You can create an additional emulator instance using the `Project -> Add Instance` submenu. Choose one of the following options:
52+
- **Load ROM...** - Loads a ROM from disk in to the new instance.
53+
- **Same ROM** - Loads the ROM of the currently active instance in to the new instance. The created instance will load the .sav file accompanying the ROM.
54+
- **Duplicate** - Creates an exact copy of the currently active instance by coying its state.
55+
56+
Additional information:
57+
- You can create up to 4 instances.
58+
- Instances are linked when the `Game Link` option is enabled. This has to be done on every instance that is to be linked.
59+
- You can move between instances with the `Tab` key.
60+
61+
### Audio Routing
62+
By default, the output of all instances will be summed together in to a single stereo output. The `Project -> Audio Routing` menu contains additional options for audio routing:
63+
64+
- **Stereo Mixdown** - The default option. Mixes the audio of all instances in to two stereo channels.
65+
- **Two Channels Per Instance** - Each instance will output on its own 2 channels. Instance 1 will output on channels 1-2, instance 2 will output on channels 3-4, etc. This may require additional configuration in your DAW. _This feature is not available in the standalone version._
66+
67+
### MIDI Routing
68+
By default, each instance receives all MIDI messages received on all channels. The `Project -> MIDI Routing` menu contains additional options for MIDI routing:
69+
70+
- **All Channels to All Instances** - The default option. Sends all messages received to all instances.
71+
- A usage example for this mode could be using LSDj in the Arduinoboy MIDI sync mode, where you want multiple instances to sync to a single `C-2` note on.
72+
- **Four Channels Per Instance** - Evenly maps MIDI channels across up to four instances.
73+
- The first instance will receive channels 1-4, the second will receive channels 5-8, etc.
74+
- This is handy for mGB, since it allows you to evenly split all 16 MIDI channels across 4 mGB instances.
75+
- Also useful for LSDj in MIDI Map mode, since the mode makes use of 2 channels per instance.
76+
- **One Channel Per Instance** - Similar to the mode above but for more simplistic uses.
77+
- The first instance will receive MIDI from channel 1, the second will receive MIDI from channel 2, etc.
78+
- A more obvious choice if you want control over individual instances when using the Arduinoboy MIDI sync mode (LSDj).
79+
80+
### Multi LSDj Setup
81+
For LSDj versions lower than v6.1.0, one instance of LSDj needs to be set to `MASTER` and the others need to be set to `SLAVE`. Versions v6.1.0 and above no longer have these modes, but have a singular `LSDJ` mode, where the instance that initiates playing automatically becomes the master. It appears there may be additional overhead to this new mode that may make things go slightly out of sync - so it is recommended that if you want perfect sync between more than one instance of LSDj that you use one of the MIDI sync modes. This will sync both instances to your DAW, rather than to each other.
82+
83+
## LSDj Integration
84+
When LSDj is detected, additional options are added to the context menus.
85+
### Sync Modes
5286
- **Off**: No sync with your DAW at all. If you hit play in LSDj it will play regardless of what else is happening.
5387

5488
- **MIDI Sync**:
@@ -71,7 +105,10 @@ All key names are CASE SENSITIVE!
71105
* Works in combination with the other sync modes.
72106
* This option is pretty dumb (it doesnt know if LSDj is playing or not), so it's possible to make it think it is in the wrong state if you manually press `Start`. If this happens just press `Start` again.
73107

74-
### Additional options
108+
### .sav Manipulation
109+
Thanks to the liblsdj library you are able to list, export, import, load, and delete tracks contained in your LSDj save. The `LSDj Songs` context menu contains these features.
110+
111+
### Additional Options
75112
- **Keyboard Shortcuts**: Enables a set of common shortcuts that allows you to use LSDj with a keyboard in a more intuitive manner. This works by sending combinations of button presses to LSDj, so support for these may not always be perfect! Many of the hotkeys for these settings can be modified in the button config file (see [Button mapping](#button-mapping)), although a few can't:
76113

77114
| Action | Default key(s) | Configurable|
@@ -89,9 +126,20 @@ All key names are CASE SENSITIVE!
89126
|CutSelection|Ctrl + X|No|
90127
|PasteSelection|Ctrl + V|No|
91128

129+
## Roadmap
130+
- v1.0.0
131+
- 32bit builds
132+
- Mac builds
133+
- Outputs from individual audio channels
134+
- Lua scripting
135+
- LSDj sample patching
136+
- v2.0.0
137+
- Additional emulators. Support for GBA and Megadrive/Genesis is being explored.
138+
92139
## Dependencies
93140
- [SameBoy](https://github.com/LIJI32/SameBoy) - The emulator itself
94141
- [iPlug2](https://github.com/iPlug2/iPlug2) - Audio plugin framework
142+
- [libsdj](https://github.com/stijnfrishert/liblsdj) - Adds the functionality to manipulate LSDj save files
95143
- [tao json](https://github.com/taocpp/json) - JSON library used for dealing with configs and save states
96144

97145
## Building
@@ -105,12 +153,6 @@ RetroPlug is developed in Visual Studio 2019, however SameBoy has to be built us
105153
### Mac
106154
Coming soon!
107155

108-
## What to expect in the future
109-
- 32bit builds
110-
- Mac builds
111-
- Support for multiple emulator instances in the same window, for optimum 2x LSDj composing
112-
- LSDj keyboard mode, if anyone has a use for it (convince me!)
113-
114156
## Troubleshooting
115157
Please refrain from asking usage questions in GitHub issues, and use them purely for bugs and feature requests. If you need help, the official support chat for this plugin is on the PSG Cabal discord channel: https://discord.gg/9MdBJST
116158

0 commit comments

Comments
 (0)