Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
systems:gbc2players [2021/09/30 05:30] atarisystems:gbc2players [2022/05/31 11:52] (current) atari
Line 1: Line 1:
-====== Nintendo Game Boy Color 2-Player ======+<WRAP group> 
 +<WRAP round box twothirds column> 
 +{{ https://raw.githubusercontent.com/fabricecaruso/es-theme-carbon/master/art/logos/gbc2players.svg?nolink&420 }}
  
-{{ :systems:gbc2players.jpg?nolink&400|}}The link cable for the Game Boy allows two people to play two-player games. The requirement is that both players insert the same Game Pak into their Game Boy, and the Game Pak must feature a two-player mode (the packaging of these games is marked with the appropriate symbol). The link cable is connected to the left side of Game Boy through the sockets especially provided for it.+====== Nintendo Game Boy Color (2 Players======
  
-^ shortname | ''gbc2players''+The link cable for the Game Boy allows two people to play two-player games. The requirement is that both players insert a Game Pak into their Game Boy, and the Game Pak must feature a two-player mode (the packaging of these games is marked with the appropriate symbol). The link cable is connected to the left side of Game Boy through the sockets specially provided for this, as illustrated on the right.
-^ emulator/core(s| libretro/tgbdual | +
-^ rom format(s) | ''.gbc'' ''.zip'' ''.7z'' |+
  
-===== Emulators =====+This system scrapes metadata for the "gbc" group(s) and loads the ''gbc2players'' set from the currently selected theme, if available. 
 +</WRAP>
  
-==== libretro/tgbdual ==== +<WRAP third column> 
 +{{ https://raw.githubusercontent.com/fabricecaruso/es-theme-carbon/master/art/consoles/gbc2players.png?nolink&350 |}} 
 +</WRAP> 
 +</WRAP>
  
-TGB Dual is an open source (GPLv2) GB/GBC emulator with game link cable support.+==== Quick reference ====
  
-We use the latest [[https://github.com/libretro/tgbdual-libretro|libretro]] core. See the [[https://docs.libretro.com/library/tgb_dual/|official documentation]] for more information.+  * **Emulator:** [[#retroarch|RetroArch]] 
 +  * **Core:** [[#libretro:_tgbdual|libretro: TGBDual]] 
 +  * **Folder:** ''/userdata/roms/gbc2players'' 
 +  * **Accepted ROM formats:** ''.gbc'', ''.gb2'', ''.gbc2'', ''.zip'', ''.7z'' 
 + 
 +===== BIOS ===== 
 + 
 +No Game Boy Color (2 players) emulator in Batocera needs a BIOS file to run.
  
 ===== ROMs ===== ===== ROMs =====
  
 <WRAP center round tip> <WRAP center round tip>
-Check the [[wp>List_of_multiplayer_Game_Boy_games|list of multiplayer Game Boy games]] to find compatible games.+Check the [[wp>List_of_multiplayer_Game_Boy_games|list of multiplayer Game Boy games]] to find compatible games first!
 </WRAP> </WRAP>
  
-<WRAP center round todo> +{{ :systems:gbc2players.jpg?nolink&400 |Two Game Boy Colors connected via the link cable.}}
-While writing this I realised I had no idea what the hell is happening so I need to do some testing/asking around to confirm everything below. +
-</WRAP>+
  
-You can use one of two methods:+ROMs can ordinarily be put into the ''roms/gbc2players/'' folder. This will use a single ROM for both players in the linked game instances (Player 1's saves are stored in ''saves/gbc2player''). Player 2 will use a temporary blank save file that is removed when the session ends. Great for PVP games that don't rely on user save files such as Mario Tennis or Tetris DX.
  
-==== The easy method (duplicate ROMs) ====+This is the only available way to use GBC2Player on Batocera **v31** and lower.
  
-Place your Game Boy Color ROMs in ''/userdata/roms/gbc2players/''. This will use a single save file between the linked gamesunique to this system. This is the only option on Batocera **v31** and lower.+<WRAP center round tip> 
 +You can copy over your save file from ''saves/gbc/'' to ''saves/gbc2player/'' to continue from where you left off in single player! Alternativelyyou can turn on **[[#save_syncing|SYNC SAVE FILES]]** to do this automatically. 
 +</WRAP>
  
-==== The synchronized method (two separate save files) ====+If instead you'd like to use two different ROMs, read [[#using_two_different_ROMs|the section on it below]].
  
-In Batocera **v32** and higher, it is possible to use two different ROMs instead. This can be used to say trade Pokemon between save files. You can utilize a "playlist" to essentially tell TGB Dual to load ROMs from two different paths.+==== Using two different ROMs ====
  
-  - Copy your ROMs to ''roms/gb2player/'' or ''roms/gbc2player/'' depending on which portable system you're using. Most Game Boy games could be played on the Game Boy Color, but only certain Game Boy Color games could be played on the original Game Boy. +Alternative title: **POKEMONYEAHPOKEMON TIME CAPSULE! POKEMON TRADING! POKEMON BATTLING! AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA POKEMON!!!**
-    * Alternatively, you could keep your ROMs in their respective ''gb/'' or ''gbc/'' ROM subfolders, but this requires a few differences in the next few steps. This will be noted. +
-  - Create a new text file with one line containing the filename for each ROM you'd like to load. The first line will be player 1 and the second line will be player 2. For example<code - Pokemon Yellow and Pokemon Crystal.gbc2> +
-Pokemon Yellow.zip +
-Pokemon Crystal.zip +
-</code> +
-    If you opted to keep the ROMs in their respective ''gb/'' or ''gbc/'' subfoldersyou would instead prepend ''gb:'' or ''gbc:'' to those filenames. For example: <code - Pokemon Yellow and Pokemon Crystal.gbc2> +
-gb:Pokemon Yellow.zip +
-gbc:Pokemon Crystal.zip +
-</code> +
-  - Save this file to the ''roms/gb2player/<game combination name>.gb2'' or ''roms/gbc2player/<game combination name>.gbc2'' based on the minimum required system for the game. In this example, either ''roms/gb2player/Pokemon Yellow and Pokemon Crystal.gb2'' or ''roms/gbc2player/Pokemon Yellow and Pokemon Crystal.gbc2'' would be fine, depending on if you wanted to play on the original Game Boy or Game Boy Color portable system. <WRAP center round tip> +
-If you're unsure, it's generally best to use ''roms/gbc2player/'' as Game Boy Color could run most Game Boy games. +
-</WRAP> +
-  - In Batocera, update your game list and a new "GB2Player" or "GBC2Player" system will appear. Launch your game from there. +
-  - Hell yeah Pokemon tradingLOL+
  
-If you've opted to copy the ROMs to the ''roms/gb2player'' or ''roms/gbc2player'' subfolders this is what your final file structure should look like:+In Batocera **v32** and higher, it is possible to use two different ROMs instead.
  
-<code>+  - Copy your Game Boy/Game Boy Color ROMs to their respective solo ROM directory, ie. ''roms/gb'' and ''roms/gbc'' respectively. For example: <code>
 roms/ roms/
-─ gbc2players+─ gb
-   ├─ Pokemon Crystal.gbc +│  └─ Pokemon Yellow.zip 
-   ├─ Pokemon Yellow.gb +─ gbc/ 
-   └─ Pokemon Yellow and Pokemon Crystal.gbc2+   └─ Pokemon Crystal.zip
 </code> </code>
 +  - Create a new text file named ''<game 1 title> and <game 2 title>.gb2'' containing the filenames of the games you intend to link play with prepended with ''gb:'' or ''gbc:'' depending on which folder they're stored in. For example: <code - Pokemon Yellow and Pokemon Crystal.gb2>
 +gb:Pokemon Yellow.zip
 +gbc:Pokemon Crystal.zip
 +</code><WRAP center round important>
 +Most Game Boy games could be played on the Game Boy Color, but not all of them.
  
-If you've opted to instead keep the ROMs in their original system subfolders ''roms/gb'' or ''roms/gbc'', this is what your final file structure should look like: +**Libretro/TGB Dual doesn't care**, and will run either game with its appropriate system. Check first before attempting this, so you aren't surprised when your Game Boy game isn't running in Color mode. 
- +</WRAP> 
-<code>+  - Save this text file to the ''roms/gbc2player/'' directory. For example: <code>
 roms/ roms/
 ├─ gb/ ├─ gb/
Line 70: Line 72:
 │  └─ Pokemon Crystal.zip │  └─ Pokemon Crystal.zip
 └─ gbc2players/ └─ gbc2players/
-   └─ Pokemon Yellow and Pokemon Crystal.gbc2+   └─ Pokemon Yellow and Pokemon Crystal.gb2
 </code> </code>
 +  - Update your game list and now your game will appear in the GBC2Player system!
  
-===== Saves =====+By default, the save files are grabbed from ''saves/gbc2players/<game name for player 1>.srm'' and ''saves/gbc2players/<game name for player 2>.srm'' for the different games respectively. This can be used for a quick and dirty way to say trade Pokemon between generations.
  
-<WRAP center round todo 60%+But what if you wanted this to all be //[[#save_syncing|automated]]//? 
-This needs to be rewritten after investigating just what the hell is happening here.+ 
 +==== Save syncing ==== 
 + 
 +In Batocera **v32** and higher, it is possible to use two different ROMs from their single-player Game Boy and/or Game Boy Color systems with their respective single-player save file locations instead. This utilizes Python scripts to automate the copying/overwriting process between ''saves/gbc2players/'' and ''saves/gb'' and/or ''saves/gbc''
 + 
 +<WRAP center round important
 +You should create a backup of your GBC2Player save files before attempting this, as they will otherwise be overwritten.
 </WRAP> </WRAP>
  
-For save syncing:+  - Set up your unique ROMs as [[#using_two_different_roms|detailed above]]. 
 +  - On the GBC2Player game list, press ''[SELECT]'' to bring up the system-specific options and navigate to **ADVANCED SYSTEM OPTIONS**. 
 +  - Scroll down to **SYNC SAVE FILES** and set this to "ON".
  
-By default, it will be OFF to prevent overwriting any saves that may be wanted. It can be turned on per-game or per-system. +{{ blog:gbc2player_save_sync.jpg?nolink&500 |Instructions to get to this menu aboveNever forget about your saves again!}}
-At launch, it will determine where the single player save should be. First priority will be if the game was set using gbor gbc:, second will be if it's running in gb2player or gbc2player. +
-If a save file exists in /save/gb or /save/gbc, it will copy it to the 2 player save folder (overwriting existing saves). +
-It will generate a script to run on game exit to copy the 2 player save file back over the single player ones. The script will only process if called by gb2player/gbc2player, and deletes itself after completion. +
-It only copies the battery SRAM, not save states.+
  
-The combined changes will allow doing things like playing the Pokemon games single player, then trading between games.+When launching a game through the GBC2Player system, the SRM save files for both the ROMs will be temporarily copied from their respective ''saves/gb/'' and/or ''saves/gbc/'' folder(s) to ''saves/gbc2player/'' (overwriting any files currently there). Upon exiting the game, the saves will be copied back from ''saves/gbc2player'' to their respective ''saves/gb/'' and/or ''saves/gbc/'' folder(s). 
 + 
 +Save states are not copied, only SRM native save files. 
 + 
 +<WRAP center round important> 
 +There is currently no automated save file syncing via Netplay. You could use an external method to sync up the save files and do this, however. 
 +</WRAP> 
 + 
 +==== Flowchart of save file handling ==== 
 + 
 +In case any of that was confusing here's a professional grade flowchart visualizing what happens based on what configuration/source ROMs are used: 
 + 
 +{{:systems:gb2player_save_flowchart.png?direct&1000|Flowchart of all four possible outcomes.}} 
 + 
 +<WRAP center round help> 
 +If you use a .gb2 playlist that calls the same ROM twice, the file that's ultimately saved will be from Player 2! 
 +</WRAP> 
 + 
 +===== Emulators ===== 
 + 
 +==== RetroArch ==== 
 + 
 +[[https://docs.libretro.com/|RetroArch]] (formerly SSNES), is a ubiquitous frontend that can run multiple "cores", which are essentially the emulators themselves. The most common cores use the [[https://www.libretro.com/|libretro]] API, so that's why cores run in RetroArch in Batocera are referred to as "libretro: (core name)". RetroArch aims to unify the feature set of all libretro cores and offer a universal, familiar interface independent of platform. 
 + 
 +=== RetroArch configuration === 
 + 
 +RetroArch offers a **Quick Menu** accessed by pressing ''[HOTKEY]'' + {{:wiki:south.png?nolink&20|South button (B SNES)}} which can be used to alter various things like [[:advanced_retroarch_settings|RetroArch and core options]], and [[:remapping_controls_per_emulator|controller mapping]]. Most RetroArch related settings can be altered from Batocera's EmulationStation. 
 + 
 +Standardized features available to all libretro cores: ''gbc2players.videomode'', ''gbc2players.ratio'', ''gbc2players.smooth'', ''gbc2players.shaders'', ''gbc2players.pixel_perfect'', ''gbc2players.decoration'', ''gbc2players.game_translation'' 
 + 
 +^ ES setting name ''batocera.conf_key'' ^ Description => ES option ''key_value''
 +^ Settings that apply to all cores of this emulator || 
 +| **GRAPHICS BACKEND ''gbc2players.gfxbackend''** | Choose your graphics rendering\\ => OpenGL ''opengl'', Vulkan ''vulkan''. | 
 +| **AUDIO LATENCY ''gbc2players.audio_latency''** | Audio latency in milliseconds, turn it up if you hear crackles\\ => 256 ''256'', 192 ''192'', 128 ''128'', 64 ''64'', 32 ''32'', 16 ''16'', 8 ''8''. | 
 +| **THREADED VIDEO ''gbc2players.video_threaded''** | Improves performance at the cost of latency and more video stuttering. Use only if full speed cannot be obtained otherwise.\\ => On ''true'', Off ''false''. | 
 + 
 +=== libretro: TGBDual === 
 + 
 +TGB Dual is an open source (GPLv2) GB/GBC emulator with game link cable support. 
 + 
 +We use the latest [[https://github.com/libretro/tgbdual-libretro|libretro]] core. See the [[https://docs.libretro.com/library/tgb_dual/|official documentation]] for more information. 
 + 
 +== libretro: TGBDual configuration == 
 + 
 +^ ES setting name ''batocera.conf_key'' ^ Description => ES option ''key_value''
 +^ Settings that apply to all systems this core supports || 
 +| **SYNC SAVE FILES ''global.sync_saves''** | Sync 2 player saves with single player versions (default is off)\\ => On ''1''Off ''0''|
  
 ===== Controls ===== ===== Controls =====
  
-The default button mapping to the Game Boy Color is as following:+Here are the default Game Boy Color (2 players)'s controls shown on a [[:configure_a_controller|Batocera Retropad]]: 
 + 
 +{{ https://raw.githubusercontent.com/batocera-linux/batocera-controller-overlays/master/solid-4k/nes.png }} 
 + 
 +===== Troubleshooting ===== 
 + 
 +==== Further troubleshooting ====
  
-{{ :systems:gbc_controller_mapping.png?nolink&750 |}}+For further troubleshooting, refer to the [[:support|generic support pages]].
  
  • systems/gbc2players.1632979817.txt.gz
  • Last modified: 5 years ago
  • by atari