Skip to content

Commit 054b2d4

Browse files
committed
Merge branch 'dev'
2 parents bc77f65 + b199f3c commit 054b2d4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+666
-348
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Connecting Two Amigas
2+
3+
vAmiga supports two emulator instances to be connected with a null modem cable, allowing the user to run multiplayer games. In this article we will walk through the necessary steps to connect two emulator instances running Battle Chess.
4+
5+
First of all, launch vAmiga, open the configuration window and switch to the Peripherals tab. In this tab you can configure the serial interface:
6+
7+
![Peripherals Tab](images/battlechess1.png "Peripherals Tab")
8+
9+
Now open the serial port popup menu and select *Null Modem Cable* from the options list. This will connect one side of a null modem cable to the serial port of your virtual Amiga. Internally, the null modem cable is emulated using socket connections, which means that the connected Amigas must agree on a common port number to communicate. By default, vAmiga uses port 8080, but you can choose a different port if you like.
10+
11+
![Peripherals Tab](images/battlechess2.png "Peripherals Tab")
12+
13+
As you can see in the screenshot above, a small icon has appeared in the status bar. This indicates that the socket server has been activated and is waiting for another emulator instance to connect.
14+
15+
Now launch another instance of vAmiga and connect the null modem cable the same way.
16+
17+
![Peripherals Tab](images/battlechess3.png "Peripherals Tab")
18+
19+
After the null modem cable has been selected in the second emulator instance, the status icon has changed its shape, indicating that the connection has been established. If the icon looks different on your computer, please check if both emulator instances are listening to the same socket port.
20+
21+
Now it's time to load Battle Chess on both Amigas. The configuration of the null modem cable is quite simple in this game: The the *Settings* menu let's you select the player type for each side of the board.
22+
23+
This is how I configured the first emulator instance. The Amiga controls the blue army, the connected computer controls the red army.
24+
25+
![Battle Chess Setup](images/battlechess4.png "Battle Chess Setup")
26+
27+
The second emulator instance is configured the other way around. The Amiga controls the red soldiers, the connected computer controls the blue ones. After selecting *New Game* from the menu in either emulator instance, it's time to chill. Have fun with two vAmigas fighting each other.
28+
29+
## Troubleshooting
30+
31+
If everything works as expected, the socket connection should be established exactly as described above. If vAmiga refuses to connect, you can display some additional debug information in RetroShell. To do so, open RetroShell by pressing on the corresponding toolbar icon. Inside RetroShell, switch to the *Debugger* by pressing the *Shift + Return*. Now, type `server serial` as shown in the screenshot below. This command displays the current connection status and outputs some statistical information about the transferred data.
32+
33+
![RetroShell](images/battlechess5.png "RetroShell")
655 KB
Loading
648 KB
Loading
677 KB
Loading
791 KB
Loading
801 KB
Loading

Emulator/Base/CoreComponent.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ class CoreComponent : public CoreObject, NoCopy, NoAssign {
161161
* inspection target via Amiga::setInspectionTarget().
162162
*/
163163
void inspect() const;
164-
virtual void _inspect() const { };
164+
virtual void _inspect() const { }
165165

166166
/* Base method for building the class specific getInfo() methods. When the
167167
* emulator is running, the result of the most recent inspection is

Emulator/Base/CoreComponentTypes.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,6 @@ enum_long(OPT)
130130
// Paula audio
131131
OPT_SAMPLING_METHOD,
132132
OPT_FILTER_TYPE,
133-
OPT_FILTER_ACTIVATION,
134133
OPT_AUDPAN,
135134
OPT_AUDVOL,
136135
OPT_AUDVOLL,
@@ -250,7 +249,6 @@ struct OptionEnum : util::Reflection<OptionEnum, Option>
250249

251250
case OPT_SAMPLING_METHOD: return "SAMPLING_METHOD";
252251
case OPT_FILTER_TYPE: return "FILTER_TYPE";
253-
case OPT_FILTER_ACTIVATION: return "FILTER_ACTIVATION";
254252
case OPT_AUDPAN: return "AUDPAN";
255253
case OPT_AUDVOL: return "AUDVOL";
256254
case OPT_AUDVOLL: return "AUDVOLL";

Emulator/Base/Defaults.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,7 @@ Defaults::Defaults()
121121
setFallback(OPT_AUTOFIRE_BULLETS, -3);
122122
setFallback(OPT_AUTOFIRE_DELAY, 125);
123123
setFallback(OPT_SAMPLING_METHOD, SMP_NONE);
124-
setFallback(OPT_FILTER_TYPE, FILTER_BUTTERWORTH);
125-
setFallback(OPT_FILTER_ACTIVATION, FILTER_AUTO_ENABLE);
124+
setFallback(OPT_FILTER_TYPE, FILTER_A500);
126125
setFallback(OPT_AUDPAN, { 0, 3 }, 50);
127126
setFallback(OPT_AUDPAN, { 1, 2 }, 350);
128127
setFallback(OPT_AUDVOL, { 0, 1, 2, 3 }, 100);

Emulator/Components/Agnus/Agnus.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,9 @@ Agnus::executeUntil(Cycle cycle) {
444444
if (isDue<SLOT_MSE2>(cycle)) {
445445
controlPort2.mouse.serviceMouseEvent <SLOT_MSE2> ();
446446
}
447+
if (isDue<SLOT_RSH>(cycle)) {
448+
retroShell.serviceEvent();
449+
}
447450
if (isDue<SLOT_KEY>(cycle)) {
448451
keyboard.serviceKeyEvent();
449452
}
@@ -662,7 +665,6 @@ Agnus::eofHandler()
662665
copper.eofHandler();
663666
controlPort1.joystick.eofHandler();
664667
controlPort2.joystick.eofHandler();
665-
retroShell.eofHandler();
666668

667669
// Update statistics
668670
updateStats();

0 commit comments

Comments
 (0)