-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bug in OJN Parser #16
Comments
BTW, I meant Xepher SHD lv 1155 (Xepher.ojn) and Fantazindy SHD lv 378 (o2ma269400.ojn) |
Hi, yes, we know there are some problems with that, it's because the long note end is before the long note start :S Not sure if it's because the chart being like that or because us doing something wrong XD (It'll be our fault for sure xD) |
It's definitely the notecharter's fault. I tested Fantazindy[SHD] on LostWave. It crashed when trying to link long notes (a combination of badly made chart and badly crafted code). Apparently 7 long note ends are missing on the chart. On such an occasion, we're supposed to use any available normal note right after the long note starting point as its ending point as defined in BMS's default LN_TYPE. |
Ummm, I'm trying to fix this but I'm not sure how o2jam manages to fix these charts because I can't play them in the emu :/ I've just made that, if the next event in the same channel isn't a longnote end event, convert it to longnote end. Not sure if it's the correct fix. I'll keep this issue open just in case xD |
I believe after a start of a longnote, you need to ignore all notes in that lane until you reach the end of the hold note. At least, doing that gives the same result as o2mania. Not really sure how I inform you of what changes I made to my local copy, so here is the edited version of the parser... All the lines I added ( I didn't delete any ) are marked with //added this. I edited my copy of the ojnparser to as such: package org.open2jam.parser; import java.io.RandomAccessFile; class OJNParser
} |
Yeah, I saw that behavior on o2mania but I'm not sure about it... what if there is no long note end? That's why I've used the solution from keigen-shu... Btw, you can use Gist for the code Oh yeah, all the work I'm doing is in the separated_parsers branch |
Hmm... ~hirandom's solution works, but it would just keep deleting notes until it finds a release note. Like CDK mentioned, it is still broken if there is no release note after the hold note. This is also true for my solution (i.e. what if there is no NORMAL note after the RELEASE note?). If I remember correctly, both NoteTool and O2Jam would just display these notes as is without fixing them. So this bug is something that you can choose not to fix because it's not your problem. What if you wanted to fix it? Well, I did some analysis on the possible points of errors.
All you need to do some specific action when one of these problems pop up. P/S: I just spent an entire evening figuring out these problems. However, the method I used to process these notes is different than the one on this project. Therefore, I won't be posting my solutions here unless someone is interested. |
So, there is no ideal fix for this, right? If o2jam displays them without fix we should show them as is, right? keigen-shu, are you converting the normal > long_end to a longnote or just skipping the long_end event? |
~mrcdk For my solutions I assumed the following:
Here's the pseudocode for the fixes:
Edit: Forgot to mention that you'll probably need sort the note list by time first before doing this. |
Wow, thanks for this. I will work on this after i've finished the bmswriter (if i can because damn :() XD |
Read the comments to find what it try to do to fix the broken long notes Also, read the output to find what it does to the events
Well, I've just committed a possible fix for the broken longnotes, but I've only tested with Fantazindy(o2ma269400.ojn) Would be nice if anyone can send me more broken songs to test it. If it's a keysounded one the better xD |
Ok, I've tested more broken chart (there are a lot of them! seriously what were they thinking? xD) and it seems to work... But because almost every broken chart is just a spamming of 972374073 different notes it's hard to say if it makes a good work or not... |
can anyone send me these songs with the problem ? I got the fix for one winged angel(o2ma74.ojn normal and hard is full of these problems), but by what you guys are saying the problem is bigger. Also, like kegen-shu said, im not interested in solving the general problem, if it doesnt work on o2jam there is not much sense in trying to make it work here, because these songs were made to work on o2jam. |
It should be fixed in the separated_parsers branch... The "fix" is in EDIT: So, what are going to do then? We can't have broken charts being played, can we? |
I know, but your fix is huge and mine is 10 lines, thats why I want to test on the other songs. Thats the thing, there shouldn't be broken charts at all right ? if these songs were created to play on o2jam I imagine the author tested on o2jam until it worked. |
So, I found the files on google(quite easy actually). so I did the same test with my fix and open2jam on autoplay makes: I tested xepher too but I couldn't get the numbers, o2mania note counter loops over when it reaches 9999 lol I looked over your code on EventList, my fix is basically the same but I don't try to guess anything, I compared some cases with o2mania and it seems to drop the same notes, I can't compare all of them though .. |
dunno, mine makes 10132 notes xD My method tries to keep it conservative (keep all the playable notes) i think... Yours just deletes everything xD Also, take note that you have to move the none and hold events to the autoplay channel. Now, yes, they should work in o2jam but we can't be sure about it, o2jam can have hacks to broken notetool versions, the chart can be a converted chart from another game that can have errors, our parser can have some errors too etc. |
being conservative is good, but my fear is that the song will end up being different from o2jam with your method I think I have o2jam emu here, Im gonna do some tests. Edit: wait, it makes 1 less than my method ? Is that number right ? |
So, i tested, I used one winged angel(o2ma74.ojn) on normal. This song have 2086 notes on total.
Your fix is able to "save" more notes, and maybe that was the author intention, but the problem is that if we do that it will be different from o2jam, I don't want it to be different from o2jam, even if it is "wrong", you know what I mean ? |
I see... well, why don't keep both methods and let the user choose it? And btw, that isn't my fix, is keigen-shu one xD |
I guess so, you mean like a option on the settings ? |
It's better to keep the fix lying around, now that O2Jam is officially dead. O2Mania was the reason we had thousands of broken and improperly (SC as Note 1) written charts all over the net. There are songs that actually abuse this behaviour for reasons I do not want to know. Maybe we make a pop-up when it detects note leaks to let players "Attempt to fix broken notechart" and prompt at the end of the song whether or not to backup the broken version and replace it with the fixed one. |
There is a bug with the notes on certain charts like Xepher and Fantazindy(o2ma269400.ojn), in which exist a really large number of notes. After a certain point in time certain lanes just keep displaying a long note till the end of the song when the long note should have ended a long time ago. Basically, the long note doesn't end when its supposed to. It simply doesn't end.
I guess this bug's not so important cause no one really plays such charts, but you never know if this bug will surface in any human playable notecharts. I could send pictures if you give me a way to do so.
FYI: I am on a mac, with java 1.6.0_29 (I believe this is the latest available for mac at this time).
The text was updated successfully, but these errors were encountered: