Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,43 @@ this find-and-replace regex (VSCode flavor):
- Replace: [@$1](https://github.com/$1)
-->

# Prerelease

New features:
- Song manager now lets you sort songs by least recently played first. (#96)
- Random Trainer now lets you shift or mirror the lane order (#89)
- New launcher option (Music Select tab) to entirely skip the decide screen (#88)
- Can now configure the lane cover, lift, and hidden in-game (misc settings) (#102)
- Added basic support for sending scores to Discord via webhooks (#97)
- In-game LR2IR leaderboard viewing (#109)
- Automatically normalizing volume per-chart (#105)

Behavior changes:
- Changed the default analog scratch threshold from 100 to 50 (9b3a17b6f0d0a82b1c878a561f039e94cea76b36)
- ImGui notifications (#74)
- Playing courses with CONSTANT no longer grant assist clear (#86)
- The spinning turntable emblem now spins nicer (#94)
- The sound of quickly scrolling through the music select is now less loud (#93)
- Improved audio when changing between scenes (#92)
- Music preview generated with the preview generator tool will now have lower priority (#91)
- Skins with large bitmap fonts will now load faster (#106)

Bug fixes:
- Fixed a crash when launching borderless without a set monitor (31f81b8cf87094cda152387cca74a9de5002ee4d)
- Fixed several issues with loading osu files ([parser #2](https://github.com/seraxis/jbms-parser/pull/2))
- On Linux, fixed opening chart folders with F3, the broken new version download link,
and the launcher becoming non-functional after starting the game (#98)

Known issues:
- [Linux] Certain skin fonts may only load partially due to incorrect letter case
in their filenames. Can be manually resolved by renaming the offending files.
- [Linux] When loading configuration files created on Windows, skin settings will fail
to transfer. Fix by replacing backslashes with forward slashes in the skin paths in
saved skin settings in `config.json` and `config_player.json` in the player folder.
- [Linux + Nvidia] The game may crash when launching. Fix by launching the game with
gamescope: `gamescope -w 2560 -h 1440 -f -r 120.0 lr2oraja-endlessdream`


# 0.3.0

## Requires Java 17 to run correctly. [Download here](https://bell-sw.com/pages/downloads/#jdk-17-lts) (Ensure `Package: Full JDK`)
Expand Down
8 changes: 3 additions & 5 deletions core/src/bms/player/beatoraja/PerformanceMetrics.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class PerformanceMetrics {
public record EventResult(String name, int id, int parent, long startTime, long duration,
String thread) {}

public List<EventResult> eventResults =
public final List<EventResult> eventResults =
Collections.synchronizedList(new ArrayList<EventResult>());

public synchronized void submitWatchResult(String name, long time, long duration) {
Expand Down Expand Up @@ -76,10 +76,8 @@ public EventBlock(String name) {
public void close() {
var endTime = System.nanoTime();
get().activeBlocks.get().pop();
synchronized (eventResults) {
eventResults.add(new EventResult(name, id, parent, startTime, (endTime - startTime),
Thread.currentThread().getName()));
}
eventResults.add(new EventResult(name, id, parent, startTime, (endTime - startTime),
Thread.currentThread().getName()));
}
}

Expand Down
6 changes: 3 additions & 3 deletions core/src/bms/player/beatoraja/config/KeyConfiguration.java
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ public class KeyConfiguration extends MainState {
-2 } };
private static final int playerOffset = 100;

private static final String[] SELECTKEY = { "2dx sp", "popn", "2dx dp" };
private static final String[] SELECTKEY = { "7 KEYS", "9 KEYS", "14 KEYS" };

private int cursorpos = 0;
private int scrollpos = 0;
Expand Down Expand Up @@ -266,11 +266,11 @@ public void render() {
titlefont.setColor(Color.CYAN);
titlefont.draw(sprite, "<-- " + MODE[mode] + " -->", 80 * scaleX, 650 * scaleY);
titlefont.setColor(Color.YELLOW);
titlefont.draw(sprite, "Key Board", 180 * scaleX, 620 * scaleY);
titlefont.draw(sprite, "Keyboard", 180 * scaleX, 620 * scaleY);
titlefont.draw(sprite, "Controller1", 330 * scaleX, 620 * scaleY);
titlefont.draw(sprite, "MIDI", 630 * scaleX, 620 * scaleY);
titlefont.setColor(Color.ORANGE);
titlefont.draw(sprite, "Music Select (press [1] to change) : ", 750 * scaleX, 620 * scaleY);
titlefont.draw(sprite, "Music Select Input (press [1] to change) : ", 750 * scaleX, 620 * scaleY);
titlefont.draw(sprite, SELECTKEY[config.getMusicselectinput()], 780 * scaleX, 590 * scaleY);

titlefont.draw(sprite, "Controller Device 1 (press [2] to change) : ", 750 * scaleX, 500 * scaleY);
Expand Down
28 changes: 14 additions & 14 deletions core/src/bms/player/beatoraja/launcher/VideoConfigurationView.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -22,20 +22,23 @@
<Label text="%RESOLUTION" GridPane.rowIndex="2" GridPane.columnIndex="0" styleClass="optionLabel"/>
<ComboBox fx:id="resolution" GridPane.rowIndex="2" GridPane.columnIndex="1"/>

<Label text="%VSYNC" GridPane.rowIndex="3" GridPane.columnIndex="0" styleClass="optionLabel"/>
<CheckBox fx:id="vSync" mnemonicParsing="false" GridPane.rowIndex="3" GridPane.columnIndex="1"/>
<Label text="%MONITOR" GridPane.rowIndex="3" GridPane.columnIndex="0" styleClass="optionLabel"/>
<ComboBox fx:id="monitor" GridPane.rowIndex="3" GridPane.columnIndex="1"/>

<Label text="%MAXFPS" GridPane.rowIndex="4" GridPane.columnIndex="0" styleClass="optionLabel"/>
<NumericSpinner fx:id="maxFps" editable="true" GridPane.rowIndex="4" GridPane.columnIndex="1">
<Label text="%VSYNC" GridPane.rowIndex="4" GridPane.columnIndex="0" styleClass="optionLabel"/>
<CheckBox fx:id="vSync" mnemonicParsing="false" GridPane.rowIndex="4" GridPane.columnIndex="1"/>

<Label text="%MAXFPS" GridPane.rowIndex="5" GridPane.columnIndex="0" styleClass="optionLabel"/>
<NumericSpinner fx:id="maxFps" editable="true" GridPane.rowIndex="5" GridPane.columnIndex="1">
<valueFactory>
<SpinnerValueFactory.IntegerSpinnerValueFactory amountToStepBy="1" initialValue="60" max="1000" min="0"/>
</valueFactory>
</NumericSpinner>

<Label text="%BGA" GridPane.rowIndex="5" GridPane.columnIndex="0" GridPane.columnSpan="2" styleClass="optionHeader"/>
<Label text="%BGA" GridPane.rowIndex="6" GridPane.columnIndex="0" GridPane.columnSpan="2" styleClass="optionHeader"/>

<Label text="%BGA" GridPane.rowIndex="6" GridPane.columnIndex="0" styleClass="optionLabel"/>
<ComboBox fx:id="bgaOp" GridPane.rowIndex="6" GridPane.columnIndex="1">
<Label text="%BGA" GridPane.rowIndex="7" GridPane.columnIndex="0" styleClass="optionLabel"/>
<ComboBox fx:id="bgaOp" GridPane.rowIndex="7" GridPane.columnIndex="1">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="On"/>
Expand All @@ -45,19 +48,19 @@
</items>
</ComboBox>

<Label text="%MISSLAYER_DURATION" GridPane.rowIndex="7" GridPane.columnIndex="0" styleClass="optionLabel">
<Label text="%MISSLAYER_DURATION" GridPane.rowIndex="8" GridPane.columnIndex="0" styleClass="optionLabel">
<tooltip>
<Tooltip text="Set miss layer display time (ms)" textAlignment="CENTER"/>
</tooltip>
</Label>
<NumericSpinner fx:id="missLayerTime" editable="true" GridPane.rowIndex="7" GridPane.columnIndex="1">
<NumericSpinner fx:id="missLayerTime" editable="true" GridPane.rowIndex="8" GridPane.columnIndex="1">
<valueFactory>
<SpinnerValueFactory.IntegerSpinnerValueFactory amountToStepBy="1" initialValue="500" max="10000" min="0"/>
</valueFactory>
</NumericSpinner>

<Label text="%BGA_EXPAND" GridPane.rowIndex="8" GridPane.columnIndex="0" styleClass="optionLabel"/>
<ComboBox fx:id="bgaExpand" GridPane.rowIndex="8" GridPane.columnIndex="1">
<Label text="%BGA_EXPAND" GridPane.rowIndex="9" GridPane.columnIndex="0" styleClass="optionLabel"/>
<ComboBox fx:id="bgaExpand" GridPane.rowIndex="9" GridPane.columnIndex="1">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Full"/>
Expand All @@ -67,9 +70,6 @@
</items>
</ComboBox>

<Label text="%MONITOR" GridPane.rowIndex="9" GridPane.columnIndex="0" styleClass="optionLabel"/>
<ComboBox fx:id="monitor" GridPane.rowIndex="9" GridPane.columnIndex="1"/>

<stylesheets>
<URL value="@LauncherStyle.css"/>
</stylesheets>
Expand Down
9 changes: 6 additions & 3 deletions core/src/bms/player/beatoraja/modmenu/PerformanceMonitor.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,18 @@
public class PerformanceMonitor {

static HashMap<Integer, Vector<PerformanceMetrics.EventResult>> eventTree;
static long lastEventUpdate = 0;

private record WatchStats(Float avg, Float std) {}
private static IdentityHashMap<String, WatchStats> watchData =
new IdentityHashMap<String, WatchStats>();
static long lastStatUpdate = 0;


public static void show(ImBoolean showPerformanceMonitor) {
if (eventTree == null) {
// TODO: auto update regularly
long now = System.nanoTime();
if (eventTree == null || lastEventUpdate < (now - 500000000L)) {
lastEventUpdate = now;
reloadEventTree();
}

Expand All @@ -34,7 +37,7 @@ public static void show(ImBoolean showPerformanceMonitor) {
renderWatchData();
}

if (ImGui.collapsingHeader("Events")) {
if (ImGui.collapsingHeader("Events", ImGuiTreeNodeFlags.DefaultOpen)) {
renderEventTable();
}
}
Expand Down
1 change: 1 addition & 0 deletions core/src/bms/player/beatoraja/select/BarManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -473,6 +473,7 @@ public boolean updateBar(Bar bar) {

public void close() {
if(dir.size == 0) {
SongManagerMenu.forceDisableLastPlayedSort();
select.executeEvent(EventType.sort);
return;
}
Expand Down