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,202
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
372
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,202
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,202
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,202
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
  • OctoAori20 @ OctoAori20:
    I stopped believing or caring about that dude when I found out about some of the more questionable nonsense he did in his life.
  • BigOnYa @ BigOnYa:
    Like what? I didn't know or hear.
  • K3Nv2 @ K3Nv2:
    You mean like every famous person that ever existed
    +1
  • K3Nv2 @ K3Nv2:
    I get so tired of hearing oh I liked him until...
  • OctoAori20 @ OctoAori20:
    I just know dude was a chronic alcoholic and such.
  • BigOnYa @ BigOnYa:
    I've been to his chicken restaurant he started in his 2nd movie, Holy Chicken, was pretty good. It is only 15-20 miles from me in Ohio. It only lasted 1 yr or so then closed tho.
  • OctoAori20 @ OctoAori20:
    There are very few people I just have just an immense dislike of and he's one of those very few people, the only other example is Gene Simmons. My musician uncle on my mother's side of the family actually met Gene once during some event and said he was the most unpleasant person to be around.
  • K3Nv2 @ K3Nv2:
    I met myself once turns out that guy is a giant piece of shit that doesn't deserve any of my respect
  • BigOnYa @ BigOnYa:
    Damn alcoholics! (Sshhh- Opens another beer)
  • OctoAori20 @ OctoAori20:
    Agreed, Ken
  • OctoAori20 @ OctoAori20:
    I can't say I've ever tried even a sip of beer tbh-
  • K3Nv2 @ K3Nv2:
    You met yourself also and is a giant piece of shit?
    +1
  • OctoAori20 @ OctoAori20:
    Then again, I don't think I'd really enjoy it //shrug
  • OctoAori20 @ OctoAori20:
    I'm sure it's an acquired taste :P
  • K3Nv2 @ K3Nv2:
    Poor lad can never enjoy the amazing taste of four loko
    +1
  • BigOnYa @ BigOnYa:
    Root beer is a gateway drink, don't ever try it either.
  • K3Nv2 @ K3Nv2:
    @BigOnYa, don't you love how smooth MD20 is
  • BigOnYa @ BigOnYa:
    Mad dog 20 20? Oh yea fixed the typo. I haven't seen that or had forever. Do they still make it?
  • K3Nv2 @ K3Nv2:
    I think it's why I'm alive
    +1
  • BigOnYa @ BigOnYa:
    What happens if when playing Paper Mario, you start a fire in-game?
  • Psionic Roshambo @ Psionic Roshambo:
    Paper Mario is a drug dealer and he is all about the paper yo lol
    +1
  • OctoAori20 @ OctoAori20:
    Ffft
  • OctoAori20 @ OctoAori20:
    On another note, I love how folks are drawing Callie in that suit that Splatoon NA dropped on Twitter
    OctoAori20 @ OctoAori20: On another note, I love how folks are drawing Callie in that suit that Splatoon NA dropped on...