haroohie-club / SerialLoops

An editor for Suzumiya Haruhi no Chokuretsu (The Series of Haruhi Suzumiya)
https://haroohie.club/chokuretsu/serial-loops
GNU General Public License v3.0
14 stars 6 forks source link
chokuretsu editor haruhi-suzumiya level-editor romhacking

Serial Loops app icon; the letters 'SL' emblazoned above four translucent gray rings within a rounded square box colored with a blue-to-green gradient along the negative X-Z axis
Serial Loops

Azure Pipelines build status badge Haroohie Translation Club Discord Server badge Serial Loops documentation link badge

Serial Loops is a fully-fledged editor for the Nintendo DS game Suzumiya Haruhi no Chokuretsu (The Series of Haruhi Suzumiya).

Screenshots

Screenshot of the Serial Loops script editor, featuring the 'EV2_029' script being edited. A list of commands is displayed in a list view panel, with buttons to add, remove and clear commands, with information about the currently selected command displayed on the right. Haruhi and Tsuruya are displayed on a preview of the Nintendo DS screen. Screenshot of the Serial Loops map editor, featuring the 'SLD1' map open with checkboxes to show/hide the camera position and collision grid Screenshot of the Serial Loops sound editor, featuring a modal widget with a sound wave graph. Buttons to start and stop playback are present, as are sliders and a checkbox to enable looping and adjust the track loop start and end points. Screenshot of the Serial Loops home screen. The Serial Loops logo and title sits at the top of the menu. Below that, under 'Start' on the left hand side, options to create a project, open an existing project, and modify preferences are present. An empty list of 'Recents' is visible on the right hand side, where recent projects would appear.

Authors

Developers

Serial Loops is developed by:

Translators

Serial Loops is translated into a variety of langauges thanks to the following contributors:

Documentation

Documentation for how to use Serial Loops can be found on our website.

Installation

Prerequisites

A Nintendo DS Emulator

To test the game easily, you will want to have a Nintendo DS emulator installed. We recommend using melonDS for its accuracy.

Installing devkitARM

devkitARM is required to use Serial Loops on all platforms.

Installing Make or Docker

To assemble ASM hacks you want to apply, you will need to decide whether to use Make or Docker. Make is automatically installed when using the Debian and RPM packages we distribute, so you don't need to worry about this step if you're using either of those.

Currently, the Docker path is only supported on Windows due to operating system and framework limitations. It is possible to get Docker running just fine on Linux distros by running SerialLoops as root (e.g. sudo SerialLoops), but it's easier to just use Make. On macOS, there is no known way of getting the Docker path to work, so you will have to use Make.

Installing OpenAL (Linux)

If you're running on Linux and not using one of the package releases (the .deb or .rpm), you will also need to install OpenAL which is used for audio processing.

Download & Install

Once you have installed any necessary prerequisites, to install Serial Loops, download the latest release for your platform from the Releases tab.

Be sure to read the Serial Loops documentation for instructions on how to use it!

Bugs

Please file bugs in the Issues tab in this repository. Please include the following information:

Development

License

Serial Loops is licensed under the GPLv3. See LICENSE for more information.

Building

Serial Loops requires the .NET 8.0 SDK to build. You can download it here. To build Serial Loops for your platform, run:

dotnet build src/PLATFORM

Remember to replace PLATFORM with the platform you're on:

We recommend Visual Studio 2022 on Windows or Rider on Linux/Mac for development. If you'd like to contribute new features or fixes, we recommend getting in touch on Discord first before submitting a pull request!

Testing

The SerialLoops.Tests project can be run from inside Visual Studio, Rider, or with dotnet test as normal. However, our UI tests (currently only runnable on Windows) are a bit more involved.

Our UI tests rely on Appium.

macOS

  1. You will need to install nodejs and then use it to install Appium.
    • The easiest way to install nodejs is to first install nvm and then run nvm install <version> followed by nvm use <version> (you can use 16 as the version)
  2. You will then need to install the Mac2 driver with appium driver install mac2
  3. Follow these instructions for installing and setting up the necessary prerequisites for the Mac2 driver to work

Once you've installed the prerequisites, build the SerialLoops.Mac and SerialLoops.Mac.Tests projects with dotnet build src/SerialLoops.Mac/SerialLoops.Mac.csproj and dotnet build test/ui/SerialLoops.Mac.Tests/SerialLoops.Mac.Tests.csproj, respectively. Then, inside test\ui\SerialLoops.Mac.Tests\bin\Debug\net8.0, create a new text file called ui_vals.json. Inside this file, place the following text, replacing necessary values:

{
    "AppLoc": "PATH/TO/Serial Loops.app",
    "ProjectName": "MacUITest",
    "RomLoc": "PATH/TO/HaruhiChokuretsu.nds",
    "ArtifactsDir": "PATH/TO/artifacts"
}

The artifacts directory can be any arbitrary directory, but ensure it exists before running the tests. The project name by default is WinUITest, but it can be anything you'd like. Have fun.

Finally, you can then run the tests with dotnet test test\ui\SerialLoops.Mac.Tests\SerialLoops.Mac.Tests.csproj. However, it may be better to run appium from a different terminal first so you can see the server output as well.

Windows

  1. You will need to install nodejs and then use it to install Appium.
    • The easiest way to install nodejs is to first install NVM for Windows and then run nvm install latest followed by nvm use latest (you can sub latest for any version)
  2. You will then need to install the Appium Windows Driver with appium driver install --source=npm appium-windows-driver.
  3. Next, download and install WinAppDriver.

Once you've installed all the prerequisites, build the SerialLoops.Wpf and SerialLoops.Wpf.Tests projects from Visual Studio or with dotnet build src\ui\SerialLoops.Wpf\SerialLoops.Wpf.csproj and dotnet build test\ui\SerialLoops.Wpf.Tests\SerialLoops.Wpf.Tests.csproj, respectively. Then, inside test\ui\SerialLoops.Wpf.Tests\bin\Debug\net8.0, create a new text file called ui_vals.json. Inside this file place the following text, replacing necessary values:

{
    "AppLoc": "PATH\\TO\\SerialLoops.exe",
    "ProjectName": "WinUITest",
    "WinAppDriverLoc": "PATH\\TO\\WinAppDriver.exe",
    "RomLoc": "PATH\\TO\\HaruhiChokuretsu.nds",
    "ArtifactsDir": "PATH\\TO\\artifacts"
}

Ensure you escape your backslashes (\\ rather than \). WinAppDriver is usually installed to C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe. The artifacts directory can be any arbitrary directory, but ensure it exists before running the tests. The project name by default is WinUITest, but it can be anything you'd like. Have fun.

Finally, you can then open the solution inside Visual Studio and run the tests from the Test Explorer. Alternatively, running dotnet test test\ui\SerialLoops.Wpf.Tests\SerialLoops.Wpf.Tests.csproj may also work.