2 |

3 |
4 |
5 | A ruleset that adds a playable gameboy to osu!lazer.
6 |
7 |
8 | # **DISCLAIMER**
9 |
10 | This ruleset isn't a serious ruleset and doesn't serve any other purpose than showing the capabilities of the game framework and being cool, and of course useless. Now you're warned ...
11 |
12 | ## Screenshots
13 |  | | 
14 | |--| --| -- |
15 |
16 | # Installation
17 |
18 | The ruleset consists of a single DLL file that you'll have to drop in the `rulesets` directory of your osu!lazer data directory.
19 |
20 | Prebuilt releases are available if you do not have an development environement setup in place:
21 | | [Releases](https://github.com/Game4all/gamebosu/releases) | [Latest Release](https://github.com/Game4all/gamebosu/releases/latest)
22 | |--------|--------|
23 |
24 | Or you can alternatively build the ruleset yourself by issuing the following commands in your OS shell (_this assumes you've got the .NET Core SDK tools as well as git in your PATH_):
25 |
26 | ## Building instructions
27 |
28 | ```bash
29 | git clone https://github.com/Game4all/gamebosu
30 | cd gamebosu
31 | cd osu.Game.Rulesets.Gamebosu
32 | dotnet build -c:Release # make sure to build ruleset in release mode to create a single file assembly
33 | # You should find the compiled and packed ruleset assembly in the output directory at path bin/Release/netstandard2.1/osu.Game.Rulesets.Gamebosu.dll
34 | ```
35 |
36 | For building this from an IDE, you should open the solution file with your prefered C# editor and hit `build` with the `Release` configuration (in order to create a single file assembly).
37 |
38 | ## Installation instructions
39 |
40 | 1. Navigate to your osu!lazer data directory. You can do so by opening the settings panel in osu!lazer and clicking on the "open osu! folder" button. Alternatively you can directly navigate to the rulesets directory via your OS directory explorer at the following locations:
41 |
42 | * `%AppData%/osu/rulesets` on Windows
43 | * `~/.local/share/osu/rulesets` on Linux / mac OSX
44 |
45 | **NOTE:** If you have relocated your osu! data directory to another directory, the rulesets directory will be there instead.
46 |
47 | 2. Drag and drop the ruleset's DLL file into the `rulesets` directory.
48 |
49 | 3. Have fun! You may need to head periodically to the releases page to download the latest version of the ruleset as compatibilty may break with a new lazer update. You may want to also read [**Installing Roms**](#Installing-Roms) section before using the ruleset.
50 |
51 | # Installing Roms
52 |
53 | In order for the ruleset to correctly work, you'll need to download original gameboy or gameboy color ROM files and place them in a `roms` directory inside your osu!lazer data directory (you may have to launch the ruleset once in order for the directory to appear.)
54 |
55 | # Acknowledgements
56 |
57 | This ruleset uses [Emux](https://github.com/Washi1337/Emux) by _Washi1337_ as its emulation core.
58 |
59 | Original idea of running a gameboy emulator on o!f : [osu-GameBoy](https://github.com/osu-Karaoke/osu-GameBoy)
--------------------------------------------------------------------------------
/assets/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Game4all/gamebosu/6b9b03d8dcde9ff4f9feb3686025e99bc97bf49b/assets/banner.png
--------------------------------------------------------------------------------
/assets/screenshot_gameplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Game4all/gamebosu/6b9b03d8dcde9ff4f9feb3686025e99bc97bf49b/assets/screenshot_gameplay.png
--------------------------------------------------------------------------------
/assets/screenshot_gameplay2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Game4all/gamebosu/6b9b03d8dcde9ff4f9feb3686025e99bc97bf49b/assets/screenshot_gameplay2.png
--------------------------------------------------------------------------------
/assets/screenshot_selection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Game4all/gamebosu/6b9b03d8dcde9ff4f9feb3686025e99bc97bf49b/assets/screenshot_selection.png
--------------------------------------------------------------------------------
/build.config:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | DOTNET_VERSION=3.1.402
3 |
--------------------------------------------------------------------------------
/build.ps1:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env pwsh
2 | $DotNetInstallerUri = 'https://dot.net/v1/dotnet-install.ps1';
3 | $DotNetUnixInstallerUri = 'https://dot.net/v1/dotnet-install.sh'
4 | $DotNetChannel = 'LTS'
5 | $PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
6 |
7 | [string] $DotNetVersion= ''
8 | foreach($line in Get-Content (Join-Path $PSScriptRoot 'build.config'))
9 | {
10 | if ($line -like 'DOTNET_VERSION=*') {
11 | $DotNetVersion =$line.SubString(15)
12 | }
13 | }
14 |
15 |
16 | if ([string]::IsNullOrEmpty($DotNetVersion)) {
17 | 'Failed to parse .NET Core SDK Version'
18 | exit 1
19 | }
20 |
21 | $DotNetInstallerUri = "https://dot.net/v1/dotnet-install.ps1";
22 |
23 | # Make sure tools folder exists
24 | $PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
25 | $ToolPath = Join-Path $PSScriptRoot "tools"
26 | if (!(Test-Path $ToolPath)) {
27 | Write-Verbose "Creating tools directory..."
28 | New-Item -Path $ToolPath -Type directory | out-null
29 | }
30 |
31 | ###########################################################################
32 | # INSTALL .NET CORE CLI
33 | ###########################################################################
34 |
35 | Function Remove-PathVariable([string]$VariableToRemove)
36 | {
37 | $path = [Environment]::GetEnvironmentVariable("PATH", "User")
38 | $newItems = $path.Split(';') | Where-Object { $_.ToString() -inotlike $VariableToRemove }
39 | [Environment]::SetEnvironmentVariable("PATH", [System.String]::Join(';', $newItems), "User")
40 | $path = [Environment]::GetEnvironmentVariable("PATH", "Process")
41 | $newItems = $path.Split(';') | Where-Object { $_.ToString() -inotlike $VariableToRemove }
42 | [Environment]::SetEnvironmentVariable("PATH", [System.String]::Join(';', $newItems), "Process")
43 | }
44 |
45 | # Get .NET Core CLI path if installed.
46 | $FoundDotNetCliVersion = $null;
47 | if (Get-Command dotnet -ErrorAction SilentlyContinue) {
48 | $FoundDotNetCliVersion = dotnet --version;
49 | }
50 |
51 | if($FoundDotNetCliVersion -ne $DotNetVersion) {
52 | $InstallPath = Join-Path $PSScriptRoot ".dotnet"
53 | if (!(Test-Path $InstallPath)) {
54 | mkdir -Force $InstallPath | Out-Null;
55 | }
56 | (New-Object System.Net.WebClient).DownloadFile($DotNetInstallerUri, "$InstallPath\dotnet-install.ps1");
57 | & $InstallPath\dotnet-install.ps1 -Version $DotNetVersion -InstallDir $InstallPath;
58 |
59 | Remove-PathVariable "$InstallPath"
60 | $env:PATH = "$InstallPath;$env:PATH"
61 | $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
62 | $env:DOTNET_CLI_TELEMETRY_OPTOUT=1
63 | }
64 |
65 | ###########################################################################
66 | # RUN BUILD SCRIPT
67 | ###########################################################################
68 |
69 | dotnet run --project build/Build.csproj -- $args
70 | exit $LASTEXITCODE;
--------------------------------------------------------------------------------
/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | # Define varibles
3 | SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
4 | source $SCRIPT_DIR/build.config
5 |
6 | if [ "$DOTNET_VERSION" = "" ]; then
7 | echo "An error occured while parsing .NET Core SDK version."
8 | exit 1
9 | fi
10 |
11 | ###########################################################################
12 | # INSTALL .NET CORE CLI
13 | ###########################################################################
14 |
15 | export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
16 | export DOTNET_CLI_TELEMETRY_OPTOUT=1
17 | export DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER=0
18 | export DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX=2
19 |
20 | DOTNET_INSTALLED_VERSION=$(dotnet --version 2>&1)
21 |
22 | if [ "$DOTNET_VERSION" != "$DOTNET_INSTALLED_VERSION" ]; then
23 | echo "Installing .NET CLI..."
24 | if [ ! -d "$SCRIPT_DIR/.dotnet" ]; then
25 | mkdir "$SCRIPT_DIR/.dotnet"
26 | fi
27 | curl -Lsfo "$SCRIPT_DIR/.dotnet/dotnet-install.sh" https://dot.net/v1/dotnet-install.sh
28 | bash "$SCRIPT_DIR/.dotnet/dotnet-install.sh" --version $DOTNET_VERSION --install-dir .dotnet --no-path
29 | export PATH="$SCRIPT_DIR/.dotnet":$PATH
30 | export DOTNET_ROOT="$SCRIPT_DIR/.dotnet"
31 | fi
32 |
33 | ###########################################################################
34 | # RUN BUILD SCRIPT
35 | ###########################################################################
36 |
37 | echo "Running build script.."
38 | dotnet run --project ./build/Build.csproj -- "$@"
39 |
--------------------------------------------------------------------------------
/build/Build.csproj:
--------------------------------------------------------------------------------
1 |