Homebrew osu!3DS - A homebrew osu! port for the Nintendo 3DS.

ItsKaitlyn03

Official GBAtemp ?
OP
Developer
Joined
Jan 12, 2017
Messages
277
Trophies
0
Location
United States
XP
1,200
Country
Japan
Hey there, I've been programming this thing for over 6 months and finally got something "notable" working!

Usage Guide:
1. Compile this C# code https://gist.github.com/Cyuubi/af024aab0bf8f92ad6ad322d350c1631
2. Take your beatmap .osu file and remove everything except for the stuff below [HitObjects] (and also remove [HitObjects] its self!)
3. Save this file and call it BeatmapData.csv and move it to where you compiled that C# at
4. Open a Command Prompt (or equivalent) and CD to where you compiled the C# code at
5. Run the following command "<CompiledFileName> > BeatmapCode.txt" (make sure to replace "<CompiledFileName>" with the file name of the EXE name!)
6. Install devkitPro so we can build this homebrew!
7. Clone this repo somewhere https://github.com/Cyuubi/osu-3DS
8. Edit main.c in the source folder and replace line "// Beatmap C data" with the contents of BeatmapCode.txt
9. Create 2 folders inside the cloned osu-3DS folder called "romfs" and inside the romfs folder make a folder inside it called "default", this is where our skin will be at
10. Copy an entire skin that contains at least these 4 files approachcircle.png, cursor.png, hitcircle.png and hitcircleoverlay.png to the "default" folder inside the "romfs" folder
11. Open Command Prompt (or equivalent) and CD to the cloned repo and run "make" there should be no errors at all
12. Copy osu-3DS.3dsx to your 3DS (which has homebrew) SD card or run this with Citra
13. Enjoy?

Currently this is not for the average user and its still very WIP as theres no beatmap parsing basically and no audio output but hopefully soon I can add beatmap parsing.
Have fun!
 

Jaspy

Active Member
Newcomer
Joined
Jul 25, 2014
Messages
31
Trophies
1
XP
358
Country
United States
Really cool so far! Never thought I'd see osu on the 3DS somehow, but now that someone made it, it makes a lot more sense now that i think about it.
 

Rubedo

Aikawa is OLEV
Member
Joined
Jul 29, 2008
Messages
801
Trophies
0
Website
Visit site
XP
500
Country
United States
I just want to say I am INFINITELY EXCITED for this! I've been dreaming of this for YEARS!
As long as it'll eventually be able to load beatmaps (I assume we'll just toss them in a folder on the SD card and it'll load from there?) and have audio and some level of graphics for the notes, I'll be happy. Doesn't need all the crazy bells and whistles like background videos and custom skins. Though being able to load the background image would be a nice plus.
 

ItsKaitlyn03

Official GBAtemp ?
OP
Developer
Joined
Jan 12, 2017
Messages
277
Trophies
0
Location
United States
XP
1,200
Country
Japan
I just want to say I am INFINITELY EXCITED for this! I've been dreaming of this for YEARS!
As long as it'll eventually be able to load beatmaps (I assume we'll just toss them in a folder on the SD card and it'll load from there?) and have audio and some level of graphics for the notes, I'll be happy. Doesn't need all the crazy bells and whistles like background videos and custom skins. Though being able to load the background image would be a nice plus.
It will have an online mode eventually, also.
 

ItsKaitlyn03

Official GBAtemp ?
OP
Developer
Joined
Jan 12, 2017
Messages
277
Trophies
0
Location
United States
XP
1,200
Country
Japan
you're planning online support and many other things yet you don't have working audio (which, in order to have a non-sucking rhythm game should be implemented before everything and notes should be synced with this)

not to mention having a proper playfield set up with proper scaling
I've been busy porting shit to C++.
 

FreezingRedwood

New Member
Newbie
Joined
Aug 16, 2016
Messages
4
Trophies
0
Age
27
XP
66
Country
United States
Code:
beatmapFile = open("BeatmapData.csv", "r")
outFile = open("BeatmapCode.txt", "w+")
lines = beatmapFile.read().split("\n")
lines.pop() #there's a newline at the end to compensate for.
for LineData in lines:
    LineData = LineData.split(',')
    outFile.write("hitcircle_DrawHitCircleAndApproach(Resize(" + LineData[0] + "), Resize(" + LineData[1] + "), 1, " + LineData[2] + ", currentTime, 10);\n")
beatmapFile.close()
outFile.close()
I just made this little code snippet in like, ten minutes to replace that C# compilation - it'll save linux users a little bit of time. Just glazing over it, it seems to work, but if there are problems, just use what ctrninja provided. Be sure to replace the 4 spaces in lines 6,7 with tabs. Save it as however you want, as long as it has the .py extension. ex. osuScript.py

(For people who have python already installed, this should spare them step 1, and it'll change steps 4 and 5)
For step 5, just put the BeatmapData.csv in the same folder as this python file, then execute the command "python osuScript.py" (or replace osuScript.py with whatever you called it) in cmd or terminal, depending on what os you're on.
 

ItsKaitlyn03

Official GBAtemp ?
OP
Developer
Joined
Jan 12, 2017
Messages
277
Trophies
0
Location
United States
XP
1,200
Country
Japan
Code:
beatmapFile = open("BeatmapData.csv", "r")
outFile = open("BeatmapCode.txt", "w+")
lines = beatmapFile.read().split("\n")
lines.pop() #there's a newline at the end to compensate for.
for LineData in lines:
    LineData = LineData.split(',')
    outFile.write("hitcircle_DrawHitCircleAndApproach(Resize(" + LineData[0] + "), Resize(" + LineData[1] + "), 1, " + LineData[2] + ", currentTime, 10);\n")
beatmapFile.close()
outFile.close()
I just made this little code snippet in like, ten minutes to replace that C# compilation - it'll save linux users a little bit of time. Just glazing over it, it seems to work, but if there are problems, just use what ctrninja provided. Be sure to replace the 4 spaces in lines 6,7 with tabs. Save it as however you want, as long as it has the .py extension. ex. osuScript.py

(For people who have python already installed, this should spare them step 1, and it'll change steps 4 and 5)
For step 5, just put the BeatmapData.csv in the same folder as this python file, then execute the command "python osuScript.py" (or replace osuScript.py with whatever you called it) in cmd or terminal, depending on what os you're on.
Might wanna update that now, osu!3DS is C++ now.
 

FreezingRedwood

New Member
Newbie
Joined
Aug 16, 2016
Messages
4
Trophies
0
Age
27
XP
66
Country
United States
The python code produces the same output of the C# code (which only serves to reformat some data, if I understand) - I just programmed it in a different language to make it easier for myself and others on other platforms (I have devkitpro on my linux machine, and I haven't set up Mono to compile C#). If you make some modification in how you're generating the BeatmapCode.txt, then the python code'll need to be updated.

In any case, thanks for your work! I look forward to seeing how this project progresses.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    Veho @ Veho: The cybertruck is a death trap.