Skip to content

Commit

Permalink
Update FAST/SLOW Text
Browse files Browse the repository at this point in the history
  • Loading branch information
LittleYang0531 committed Apr 20, 2024
2 parents f8b743e + 365f6c5 commit ebf4fd4
Show file tree
Hide file tree
Showing 32 changed files with 119 additions and 45 deletions.
21 changes: 20 additions & 1 deletion convert.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,26 @@ enum GimmickType {
Split3 = 13,
Split4 = 14,
Split5 = 15,
Split6 = 16
Split6 = 16,
// 接下来的东西我也不知道是干啥用的
FullSplit1 = 31,
FullSplit2 = 32,
FullSplit3 = 33,
FullSplit4 = 34,
FullSplit5 = 35,
FullSplit6 = 36,
LightSplit1 = 51,
LightSplit2 = 52,
LightSplit3 = 53,
LightSplit4 = 54,
LightSplit5 = 55,
LightSplit6 = 56,
IgnoreSplit1 = 71,
IgnoreSplit2 = 72,
IgnoreSplit3 = 73,
IgnoreSplit4 = 74,
IgnoreSplit5 = 75,
IgnoreSplit6 = 76
};
struct Note {
double startTime;
Expand Down
Binary file modified dist/EngineConfiguration
Binary file not shown.
Binary file modified dist/EngineData
Binary file not shown.
Binary file modified dist/EnginePreviewData
Binary file not shown.
Binary file modified dist/EngineWatchData
Binary file not shown.
Binary file modified dist/SkinData
Binary file not shown.
Binary file modified dist/SkinTexture
Binary file not shown.
13 changes: 12 additions & 1 deletion engine/configuration/options.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class Options {
int LockAspectRatio = 7; // Supported
int ExtraWidth = 8; // Supoorted
int StageOpacity = 9; // Supported
int JudgeType = 10; // Supported
}Options;

auto options = defineOptions<class Options>({
Expand Down Expand Up @@ -99,5 +100,15 @@ auto options = defineOptions<class Options>({
max: 1.0,
step: 0.05,
unit: UnitText.Percentage
}
}, {
name: "Show FAST/SLOW",
scope: Scope,
type: OptionType.Select,
def: 2,
values: {
"PERFECT and below",
"GREAT and below",
"OFF"
}
}
});
10 changes: 8 additions & 2 deletions engine/constants.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,11 @@ double judgeGoodRatio = 237.0 / 76.0; // 判定文字 Good 比例
double judgeBadRatio = 163.0 / 76.0; // 判定文字 Bad 比例
double judgeMissRatio = 177.0 / 76.0; // 判定文字 Miss 比例
double judgeAutoRatio = 216.0 / 76.0; // 判定文字 Auto 比例
double judgeFastRatio = 121.0 / 52.0; // 判定文字 Fast 比例
double judgeSlowRatio = 143.0 / 52.0; // 判定文字 Slow 比例
double judgeTextHeight = 0.15; // 判定文字高度
double judgeText2Height = 0.08; // 判定文字 2 高度
double judgeTextDistance = 0.0; // 判定文字间距
double judgeTextDuration = 0.1; // 判定文字动画时长
double stageWidth = 0.7; // 单个舞台宽度
double stageHeight = 2.0; // 单个舞台高度
Expand Down Expand Up @@ -64,8 +68,9 @@ let lockAspectRatio = LevelOption.get(Options.LockAspectRatio);
let extraWidth = LevelOption.get(Options.ExtraWidth);
let levelSpeed = LevelOption.get(Options.Speed);
let opacity = LevelOption.get(Options.StageOpacity);
let judgeType = LevelOption.get(Options.JudgeType);
#elif preview
let mirror, speed, hidden, splitRandom, splitLine, syncLine, lockAspectRatio, extraWidth, levelSpeed, opacity;
let mirror, speed, hidden, splitRandom, splitLine, syncLine, lockAspectRatio, extraWidth, levelSpeed, opacity, judgeType;
#endif

#if play || watch
Expand Down Expand Up @@ -145,6 +150,7 @@ class score {

#if play || watch
Variable<LevelMemoryId> currentJudge;
Variable<LevelMemoryId> currentJudgeDeltaTime;
Variable<LevelMemoryId> currentJudgeStartTime;
Array<LevelMemoryId, let> splitLineMemory(16);
let duration, noteCount, noteId;
Expand All @@ -153,5 +159,5 @@ Variable<PreviewDataId> duration; // 谱面时长
Variable<PreviewDataId> noteCount; // note 数量
Variable<EntitySharedMemoryId> noteId; // note 编号
Array<TemporaryMemoryId, let> splitLineMemory(16);
let currentJudge, currentJudgeStartTime;
let currentJudge, currentJudgeStartTime, currentJudgeDeltaTime;
#endif
2 changes: 1 addition & 1 deletion engine/play/SplitLine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class SplitLine: public Archetype {
defineImports(color);

SonolusApi spawnOrder() { return 1000 + beat - splitLineAnimationStart + appearTime; }
SonolusApi shouldSpawn() { return times.now > beat - splitLineAnimationStart; }
SonolusApi shouldSpawn() { return split >= 1 && split <= 6 && times.now > beat - splitLineAnimationStart; }

SonolusApi preprocess() {
FUNCBEGIN
Expand Down
14 changes: 14 additions & 0 deletions engine/play/Stage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ class Stage: public Archetype {
SonolusApi drawJudgeText() {
FUNCBEGIN
let H = judgeTextHeight * ui.judgmentConfiguration.scale;
let H2 = judgeText2Height * ui.judgmentConfiguration.scale;
let D = judgeTextDistance * ui.judgmentConfiguration.scale;
let T = H / 2.0, B = -1 * T;
let B2 = T + D, T2 = B2 + H2;
let W = H * SwitchWithDefault(currentJudge.get(), {
{Sprites.JudgePerfectPlus, judgePerfectPlusRatio},
{Sprites.JudgePerfect, judgePerfectRatio},
Expand All @@ -21,11 +24,22 @@ class Stage: public Archetype {
{Sprites.JudgeMiss, judgeMissRatio},
{Sprites.JudgeAuto, judgeAutoRatio}
}, 0);
let W2 = H2 * If(currentJudgeDeltaTime < 0, judgeFastRatio, judgeSlowRatio);
let R = W / 2.0, L = -1 * R;
let R2 = W2 / 2.0, L2 = -1 * R2;
let scale = 0.6 + 0.4 * Ease(Min(1, (times.now - currentJudgeStartTime.get()) / judgeTextDuration), RuntimeFunction.EaseInSine);
let a = 0.6 + 0.4 * Ease(Min(1, (times.now - currentJudgeStartTime.get()) / judgeTextDuration), RuntimeFunction.EaseInSine);
L *= scale, R *= scale, T *= scale, B *= scale;
L2 *= scale, R2 *= scale, T2 *= scale, B2 *= scale;
Draw(currentJudge.get(), L, B, L, T, R, T, R, B, 1e8, a * ui.judgmentConfiguration.alpha);
IF (Abs(currentJudgeDeltaTime) > Switch(judgeType, {
{0, judgment.perfectPlus},
{1, judgment.perfect},
{2, judgment.bad}
}) && Abs(currentJudgeDeltaTime) <= judgment.bad) {
Draw(If(currentJudgeDeltaTime < 0, Sprites.JudgeFast, Sprites.JudgeSlow),
L2, B2, L2, T2, R2, T2, R2, B2, 1e8, a * ui.judgmentConfiguration.alpha);
} FI
return VOID;
}

Expand Down
12 changes: 6 additions & 6 deletions engine/play/flatNotes/FlatNote.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ class FlatNote : public Archetype {
IF (res2 == 2) Play(getClips().great, minSFXDistance); FI
IF (res2 == 3) Play(getClips().good, minSFXDistance); FI
IF (res2 != 0) spawnEffect(getEffects().linear, getEffects().circular, lane, enLane); FI
IF (res == 0) SpawnSubJudgeText(Sprites.JudgeMiss); FI
IF (res == 1) SpawnSubJudgeText(Sprites.JudgePerfectPlus); FI
IF (res == 2) SpawnSubJudgeText(Sprites.JudgePerfect); FI
IF (res == 3) SpawnSubJudgeText(Sprites.JudgeGreat); FI
IF (res == 4) SpawnSubJudgeText(Sprites.JudgeGood); FI
IF (res == 5) SpawnSubJudgeText(Sprites.JudgeBad); FI
IF (res == 0) SpawnSubJudgeText(Sprites.JudgeMiss, t - beat); FI
IF (res == 1) SpawnSubJudgeText(Sprites.JudgePerfectPlus, t - beat); FI
IF (res == 2) SpawnSubJudgeText(Sprites.JudgePerfect, t - beat); FI
IF (res == 3) SpawnSubJudgeText(Sprites.JudgeGreat, t - beat); FI
IF (res == 4) SpawnSubJudgeText(Sprites.JudgeGood, t - beat); FI
IF (res == 5) SpawnSubJudgeText(Sprites.JudgeBad, t - beat); FI
EntityDespawn.set(0, 1);
return VOID;
}
Expand Down
12 changes: 6 additions & 6 deletions engine/play/holdNotes/HoldEnd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,12 @@ class SiriusHoldEnd: public Archetype {
IF (res2 == 2) Play(Clips.Perfect, minSFXDistance); FI
IF (res2 == 3) Play(Clips.Good, minSFXDistance); FI
IF (res2 != 0) spawnEffect(Effects.HoldLinear, Effects.HoldCircular, lane, enLane); FI
IF (res == 0) SpawnSubJudgeText(Sprites.JudgeMiss); FI
IF (res == 1) SpawnSubJudgeText(Sprites.JudgePerfectPlus); FI
IF (res == 2) SpawnSubJudgeText(Sprites.JudgePerfect); FI
IF (res == 3) SpawnSubJudgeText(Sprites.JudgeGreat); FI
IF (res == 4) SpawnSubJudgeText(Sprites.JudgeGood); FI
IF (res == 5) SpawnSubJudgeText(Sprites.JudgeBad); FI
IF (res == 0) SpawnSubJudgeText(Sprites.JudgeMiss, t - beat); FI
IF (res == 1) SpawnSubJudgeText(Sprites.JudgePerfectPlus, t - beat); FI
IF (res == 2) SpawnSubJudgeText(Sprites.JudgePerfect, t - beat); FI
IF (res == 3) SpawnSubJudgeText(Sprites.JudgeGreat, t - beat); FI
IF (res == 4) SpawnSubJudgeText(Sprites.JudgeGood, t - beat); FI
IF (res == 5) SpawnSubJudgeText(Sprites.JudgeBad, t - beat); FI
EntityDespawn.set(0, 1);
return VOID;
}
Expand Down
6 changes: 3 additions & 3 deletions engine/play/holdNotes/ScratchHoldEnd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,9 @@ class SiriusScratchHoldEnd: public Archetype {
IF (res2 == 1) Play(Clips.Scratch, minSFXDistance); FI
IF (res2 == 2) Play(Clips.CriticalGood, minSFXDistance); FI
IF (res2 != 0) spawnEffect(Effects.ScratchLinear, Effects.ScratchCircular, scratchLane, scratchEnLane); FI
IF (res == 0) SpawnSubJudgeText(Sprites.JudgeMiss); FI
IF (res == 1) SpawnSubJudgeText(Sprites.JudgePerfectPlus); FI
IF (res == 3) SpawnSubJudgeText(Sprites.JudgeGreat); FI
IF (res == 0) SpawnSubJudgeText(Sprites.JudgeMiss, t - beat); FI
IF (res == 1) SpawnSubJudgeText(Sprites.JudgePerfectPlus, t - beat); FI
IF (res == 3) SpawnSubJudgeText(Sprites.JudgeGreat, t - beat); FI
EntityDespawn.set(0, 1);
return VOID;
}
Expand Down
1 change: 1 addition & 0 deletions engine/preview/SplitLine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class SplitLine: public Archetype {

SonolusApi render() {
FUNCBEGIN
IF (split < 1 || split > 6) Return(0); FI
getSplitLine(color);
drawPreviewSplitLine(beat - splitLineAnimationStart, beat, 1, split);
drawPreviewSplitLine(beat, endBeat, 0, split);
Expand Down
36 changes: 20 additions & 16 deletions engine/skins.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ class Sprites {
int JudgeBad = 19;
int JudgeMiss = 20;
int JudgeAuto = 21;
int JudgeFast = 10001;
int JudgeSlow = 10000;
int GridYellow = 22;
int SplitLine_1 = 23;
int SplitLineTrans1_1 = 24;
Expand Down Expand Up @@ -605,13 +607,15 @@ auto skins = defineSkins<class Sprites>({
{SkinSpriteName.NoteTickPurple, Sprites.TouchScratchTick},
{SkinSpriteName.Lane, Sprites.SyncLine},
{"Sirius Hidden Line", Sprites.HiddenLine},
{"Sirius Judge Perfect+", Sprites.JudgePerfectPlus},
{"Sirius Judge Perfect", Sprites.JudgePerfect},
{"Sirius Judge Great", Sprites.JudgeGreat},
{"Sirius Judge Good", Sprites.JudgeGood},
{"Sirius Judge Bad", Sprites.JudgeBad},
{"Sirius Judge Miss", Sprites.JudgeMiss},
{"Sirius Judge Auto", Sprites.JudgeAuto},
{"Sirius Judgment Perfect+", Sprites.JudgePerfectPlus},
{"Sirius Judgment Perfect", Sprites.JudgePerfect},
{"Sirius Judgment Great", Sprites.JudgeGreat},
{"Sirius Judgment Good", Sprites.JudgeGood},
{"Sirius Judgment Bad", Sprites.JudgeBad},
{"Sirius Judgment Miss", Sprites.JudgeMiss},
{"Sirius Judgment Auto", Sprites.JudgeAuto},
{"Sirius Judgment Fast", Sprites.JudgeFast},
{"Sirius Judgment Slow", Sprites.JudgeSlow},
{SkinSpriteName.GridYellow, Sprites.GridYellow},
{"Sirius Split Line #1", Sprites.SplitLine_1},
{"Sirius Split Line Transform 1 #1", Sprites.SplitLineTrans1_1},
Expand Down Expand Up @@ -1072,15 +1076,15 @@ auto skins = defineSkins<class Sprites>({
{"Sirius Split Line #10690", Sprites.SplitLine_10690},
{"Sirius Split Line Transform 1 #10690", Sprites.SplitLineTrans1_10690},
{"Sirius Split Line Transform 2 #10690", Sprites.SplitLineTrans2_10690},
{"Sirius Split Line #10700", Sprites.SplitLine_10700},
{"Sirius Split Line Transform 1 #10700", Sprites.SplitLineTrans1_10700},
{"Sirius Split Line Transform 2 #10700", Sprites.SplitLineTrans2_10700},
{"Sirius Split Line #1070a", Sprites.SplitLine_1070a},
{"Sirius Split Line Transform 1 #1070a", Sprites.SplitLineTrans1_1070a},
{"Sirius Split Line Transform 2 #1070a", Sprites.SplitLineTrans2_1070a},
{"Sirius Split Line #1070b", Sprites.SplitLine_1070b},
{"Sirius Split Line Transform 1 #1070b", Sprites.SplitLineTrans1_1070b},
{"Sirius Split Line Transform 2 #1070b", Sprites.SplitLineTrans2_1070b},
{"Sirius Split Line #10710", Sprites.SplitLine_10710},
{"Sirius Split Line Transform 1 #10710", Sprites.SplitLineTrans1_10710},
{"Sirius Split Line Transform 2 #10710", Sprites.SplitLineTrans2_10710},
{"Sirius Split Line #10720", Sprites.SplitLine_10720},
{"Sirius Split Line Transform 1 #10720", Sprites.SplitLineTrans1_10720},
{"Sirius Split Line Transform 2 #10720", Sprites.SplitLineTrans2_10720},
{"Sirius Split Line #10690", Sprites.SplitLine_10690},
{"Sirius Split Line Transform 1 #10690", Sprites.SplitLineTrans1_10690},
{"Sirius Split Line Transform 2 #10690", Sprites.SplitLineTrans2_10690},
{"Sirius Split Line #10710", Sprites.SplitLine_10710},
{"Sirius Split Line Transform 1 #10710", Sprites.SplitLineTrans1_10710},
{"Sirius Split Line Transform 2 #10710", Sprites.SplitLineTrans2_10710},
Expand Down
4 changes: 3 additions & 1 deletion engine/utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -461,13 +461,15 @@ SonolusApi updateHoldEffect(let effectInstanceId, let lane, let enLane) {
return VOID;
}

SonolusApi SpawnSubJudgeText(let sprite) {
SonolusApi SpawnSubJudgeText(let sprite, let delta = 0) {
FUNCBEGIN
IF (currentJudgeStartTime == times.now) {
currentJudge = Max(currentJudge, sprite);
IF (Abs(delta) > Abs(currentJudgeDeltaTime)) currentJudgeDeltaTime = delta; FI
} ELSE {
currentJudge = sprite;
currentJudgeStartTime = times.now;
currentJudgeDeltaTime = delta;
} FI
return VOID;
}
Expand Down
1 change: 1 addition & 0 deletions engine/watch/SplitLine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class SplitLine: public Archetype {

SonolusApi updateSequential() {
FUNCBEGIN
IF (split < 1 || split > 6) Return(0); FI
getSplitLine(color);
IF (times.now > endBeat) {
drawDisappearLine(times.now - endBeat, split);
Expand Down
15 changes: 15 additions & 0 deletions engine/watch/Stage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ class Stage: public Archetype {
SonolusApi drawJudgeText() {
FUNCBEGIN
let H = judgeTextHeight * ui.judgmentConfiguration.scale;
let H2 = judgeText2Height * ui.judgmentConfiguration.scale;
let D = judgeTextDistance * ui.judgmentConfiguration.scale;
let T = H / 2.0, B = -1 * T;
let B2 = T + D, T2 = B2 + H2;
let W = H * SwitchWithDefault(currentJudge.get(), {
{Sprites.JudgePerfectPlus, judgePerfectPlusRatio},
{Sprites.JudgePerfect, judgePerfectRatio},
Expand All @@ -20,11 +23,22 @@ class Stage: public Archetype {
{Sprites.JudgeMiss, judgeMissRatio},
{Sprites.JudgeAuto, judgeAutoRatio}
}, 0);
let W2 = H2 * If(currentJudgeDeltaTime < 0, judgeFastRatio, judgeSlowRatio);
let R = W / 2.0, L = -1 * R;
let R2 = W2 / 2.0, L2 = -1 * R2;
let scale = 0.6 + 0.4 * Ease(Min(1, (times.now - currentJudgeStartTime.get()) / judgeTextDuration), RuntimeFunction.EaseInSine);
let a = 0.6 + 0.4 * Ease(Min(1, (times.now - currentJudgeStartTime.get()) / judgeTextDuration), RuntimeFunction.EaseInSine);
L *= scale, R *= scale, T *= scale, B *= scale;
L2 *= scale, R2 *= scale, T2 *= scale, B2 *= scale;
Draw(currentJudge.get(), L, B, L, T, R, T, R, B, 1e8, a * ui.judgmentConfiguration.alpha);
IF (Abs(currentJudgeDeltaTime) > Switch(judgeType, {
{0, judgment.perfectPlus},
{1, judgment.perfect},
{2, judgment.bad}
}) && Abs(currentJudgeDeltaTime) <= judgment.bad) {
Draw(If(currentJudgeDeltaTime < 0, Sprites.JudgeFast, Sprites.JudgeSlow),
L2, B2, L2, T2, R2, T2, R2, B2, 1e8, a * ui.judgmentConfiguration.alpha);
} FI
return VOID;
}

Expand All @@ -43,6 +57,7 @@ class Stage: public Archetype {
IF (!times.skip) Return(0); FI
currentJudge.set(0);
currentJudgeStartTime.set(0);
currentJudgeDeltaTime.set(0);
return VOID;
}
};
3 changes: 2 additions & 1 deletion engine/watch/UpdateJudgment.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ class UpdateJudgment: public Archetype {
static constexpr const char* name = "Sirius Update Judgment";
Variable<EntityMemoryId> beat;
Variable<EntityMemoryId> judgment;
Variable<EntityMemoryId> delta;
Variable<EntityMemoryId> updated;

SonolusApi spawnTime() { return TimeToScaledTime(beat); }
Expand All @@ -20,7 +21,7 @@ class UpdateJudgment: public Archetype {
SonolusApi updateSequential() {
FUNCBEGIN
IF (updated) Return(0); FI
SpawnSubJudgeText(judgment);
SpawnSubJudgeText(judgment, delta);
updated = true;
return VOID;
}
Expand Down
12 changes: 6 additions & 6 deletions engine/watch/flatNotes/FlatNote.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@
IF (judgeResult == 1 || judgeResult == 2) PlayScheduled(getClips().perfect, beat + accuracy, minSFXDistance); FI
IF (judgeResult == 3) PlayScheduled(getClips().great, beat + accuracy, minSFXDistance); FI
IF (judgeResult == 4 || judgeResult == 5) PlayScheduled(getClips().good, beat + accuracy, minSFXDistance); FI
IF (judgeResult == 0) Spawn(getArchetypeId(UpdateJudgment), {beat + accuracy, Sprites.JudgeMiss}); FI
IF (judgeResult == 1) Spawn(getArchetypeId(UpdateJudgment), {beat + accuracy, Sprites.JudgePerfectPlus}); FI
IF (judgeResult == 2) Spawn(getArchetypeId(UpdateJudgment), {beat + accuracy, Sprites.JudgePerfect}); FI
IF (judgeResult == 3) Spawn(getArchetypeId(UpdateJudgment), {beat + accuracy, Sprites.JudgeGreat}); FI
IF (judgeResult == 4) Spawn(getArchetypeId(UpdateJudgment), {beat + accuracy, Sprites.JudgeGood}); FI
IF (judgeResult == 5) Spawn(getArchetypeId(UpdateJudgment), {beat + accuracy, Sprites.JudgeBad}); FI
IF (judgeResult == 0) Spawn(getArchetypeId(UpdateJudgment), {beat + accuracy, Sprites.JudgeMiss, accuracy}); FI
IF (judgeResult == 1) Spawn(getArchetypeId(UpdateJudgment), {beat + accuracy, Sprites.JudgePerfectPlus, accuracy}); FI
IF (judgeResult == 2) Spawn(getArchetypeId(UpdateJudgment), {beat + accuracy, Sprites.JudgePerfect, accuracy}); FI
IF (judgeResult == 3) Spawn(getArchetypeId(UpdateJudgment), {beat + accuracy, Sprites.JudgeGreat, accuracy}); FI
IF (judgeResult == 4) Spawn(getArchetypeId(UpdateJudgment), {beat + accuracy, Sprites.JudgeGood, accuracy}); FI
IF (judgeResult == 5) Spawn(getArchetypeId(UpdateJudgment), {beat + accuracy, Sprites.JudgeBad, accuracy}); FI
} ELSE {
Set(EntityInputId, 0, beat);
Set(EntityInputId, 1, getBucket());
Expand Down
Binary file modified main
Binary file not shown.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"background": "sirius-default",
"effect": "sirius",
"particle": "sirius",
"description": "A recreation of World Dai Star: Dream's Stellarium engine in Sonolus.\nSirius Version: 1.1.1.20240320_beta\nSonolus.h Version: 2.0.0_20240320_beta\n\nGithub Repository\nhttps://github.com/SonolusHaniwa/sonolus-sirius-engine"
"description": "A recreation of World Dai Star: Dream's Stellarium engine in Sonolus.\nSirius Version: 1.1.2.20240420_beta\nSonolus.h Version: 2.0.0_20240320_beta\n\nGithub Repository\nhttps://github.com/SonolusHaniwa/sonolus-sirius-engine"
}
]
}
Expand Down
File renamed without changes
File renamed without changes
Binary file added skin/Sirius Judgment Fast.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
Binary file added skin/Sirius Judgment Slow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit ebf4fd4

Please sign in to comment.