Git Product home page Git Product logo

limyz / dtxmanianx Goto Github PK

View Code? Open in Web Editor NEW
63.0 63.0 16.0 173.99 MB

A program that replicates gameplay from Konami's music video game, Gitadora - Drummania/GuitarFreaks. This project provides QoL updates, previously was forked from the DTXManiaXG verK SVN repository.

Home Page: https://en.osdn.jp/projects/dtxmaniaxg-verk/

C# 96.32% HTML 2.99% CSS 0.02% Inno Setup 0.66%
drum drummania guitar guitarfreaks otoge simulator

dtxmanianx's People

Contributors

987123879113 avatar aoki-marika avatar approvedtx avatar dependabot[bot] avatar ericpignet avatar fisyher avatar limyz avatar sakamoto-neko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dtxmanianx's Issues

Exception thrown when start application

Just when I started the application throw exception but if ignore the exception by clicking Continue the game still works
Below is the log

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
   at DTXMania.CDTXMania.Draw(GameTime gameTime)
   at SampleFramework.Game.DrawFrame()
   at SampleFramework.Game.Window_Paint(Object sender, PaintEventArgs e)
   at System.Windows.Forms.Control.OnPaint(PaintEventArgs e)
   at System.Windows.Forms.Form.OnPaint(PaintEventArgs e)
   at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
   at System.Windows.Forms.Control.WmPaint(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ContainerControl.WndProc(Message& m)
   at System.Windows.Forms.Form.WndProc(Message& m)
   at SampleFramework.GameWindow.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9151 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
DTXManiaGR
    Assembly Version: 3.6.2.0
    Win32 Version: 0.0.0.0
    CodeBase: file:///D:/DTXManiaXG(ver.K)%20Ver3.62c2/DTXManiaGR.exe
----------------------------------------
FDK
    Assembly Version: 21.0.0.0
    Win32 Version: 21.0.0.0
    CodeBase: file:///D:/DTXManiaXG(ver.K)%20Ver3.62c2/FDK.DLL
----------------------------------------
SlimDXc_net20x86_Jun2010
    Assembly Version: 1002.0.10.43
    Win32 Version: 
    CodeBase: file:///D:/DTXManiaXG(ver.K)%20Ver3.62c2/SlimDXc_net20x86_Jun2010.DLL
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9147 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
msvcm90
    Assembly Version: 9.0.30729.9619
    Win32 Version: 9.00.30729.9619
    CodeBase: file:///C:/WINDOWS/WinSxS/x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9619_none_508d9c7abcbd32b6/msvcm90.dll
----------------------------------------
System.Web
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9154 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.Web/2.0.0.0__b03f5f7f11d50a3a/System.Web.dll
----------------------------------------
Bass.Net
    Assembly Version: 2.4.10.3
    Win32 Version: 2.4.10.3
    CodeBase: file:///D:/DTXManiaXG(ver.K)%20Ver3.62c2/Bass.Net.DLL
----------------------------------------
System.Configuration
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9153 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Song Select Categories

Currently, songs can only be viewed in the way they are organized on the filesystem. This is alright for basic categorization such as using boxes to denote different sources, but falls apart when you want to instead say, group by difficulty level, without making changes to the filesystem.

I think that, like in GITADORA, you should be able to cycle between different grouping tabs (title, source, difficulty, etc.) within song select. In addition, songs should be independent of boxes, instead being changed to "collections" (more clear terminology) that form a many-to-many relationship with songs, which then also get their own grouping tab. This allows the additional feature of assigning songs to several collections, adding support for things like favourites.

I also propose that this should be accompanied by a database rewrite, using a more proper system such as plain SQLite or Microsoft's Entity Framework. The current system of serializing objects to disk is.. interesting, to say the least, but greatly inefficient, especially for these more complex tasks.

Wrong spelling of words and wrong description in game config

A couple of spellings mistakes, and wrong descriptions of settings are to be corrected.
Proper spacing and alignment of words to be done.
Also, some Japanese description to be translated to English.
Missing description to be filled up.

Error 1

Findings so far:

System

>Lane alpha : The degree of transparency
		0% = No transparency
		100% = Completely transparent

>Adjust Waves: Effective (wrong spelling)

>BG Alpha: The degree of background wallpaper transparency
		0% = No transparency
		100% = Completely transparent

>Music Name Disp DEF: Display the music title from SET.def file

>"Difficulty" (spelling)

Drums

>HID-SUD: Hidden: Chips disappear at Mid-Screen
	Sudden: Chips appear from Mid-Screen
	HidSud: Chips appear only at Mid-Screen
	Stealth: Chips will be transparent

Proposed feature: loop capability

I'd like to have a loop feature, as we can see in Rocksmith, or Yousician for those who know: you select the few bars that you want to practice and it's looping on those bars forever.
In case a loop is used, the song would be come in 'training' mode and stats stop being recorded.

I've already started working on this, I have some experimental code.
The main problems are:

  • I didn't manage to make it work with DirectSound. It only works with WASAPI or ASIO
  • Code is on my English language branch so it may be a bit hard to backport to the Japanese source code

Eric

Only one sound can be played at anytime on the same SE lane

For example if there's a cymbal keysound chip placed on lane SE1, and a 2nd chip gets placed on the same lane right after when the cymbal keysound is still playing, the cymbal keysound gets muted and starts to play the 2nd chip. Right now, the only solution is to shift consecutive chips to other lanes to prevent premature muting of these sounds.

Support DTXMania as viewer for DTXCreator

As discussed in #62 and in Discord, it is not good to ship a executable (DTXV.exe) coming from nowhere.
Also DTXV.exe currently only works if xadec.dll is in the root directory, which is not nice as we moved the dlls to a subdirectory because there were too many.

We should import DTXViewer source code from original DTXMania to our repository, adapt it to our build structure, add the XG lanes and put the .exe file in Runtime folder in place of DTXV.exe

Ideally, we should also give the option to the DTXCreator user whether using DTXViewer or DTXMania as a viewer, but this could be tracked by separate issue.

Song Skill calculation doesn't use second decimal of difficulty

The skill points (=Music Skill =Song Skill=曲別Skill) are calculated using only the first decimal of the song difficulty.
For example if skill rate is 90.84 and song difficulty is 6.05, verK will use 6.0 difficulty and will return 90.84 * 6 * 0.2=109.01 instead of 90.84 * 6.05 * 0.2=109.92.
Song Skill should use the two decimals of the difficulty.

Search Songs Function

As requested by Approved, as he often has trouble finding songs during live stream.

Work is currently in progress in SearchFunction Branch

Migrate to .NET 4.7.1 and to SharpDX

The project is currently using very old Dot Net framework 3.5, SlimDX library which was abandoned years ago, and SoundDecoder which is also abandonned.

Other DTXMania forks have already upgraded to recent .NET versions and to SharpDX which is an active C# DirectX wrapper. Original DTXMania did the migration first, and DTXMania Ver.K did it in version 4.10, DTXMania AL did it too.
We need to do it too, in order to benefit from the optimisations brought by recent .NET framework, better quality libraries, especially for sound decoding.,
This is also a prerequisite for a future migration to 64 bit (already done by DTXMania, VerK 4.x and AL) which should optimize memory access for people with large simfile libraries.
Finally this will make it easier to backport features or fixes done in other forks.

Allowing hit range to be adjusted in game and also to be different for specific lanes.

DTXMania AL allows hit range to be adjusted in game via the config, so I wonder if this can also be implemented in NX's options.

Also, this hit range currently applies to all lanes. I am suggesting to allow the hit range to be different on specific lanes because in the official GITADORA, the hit range for pads and pedals are different (Perfect range 27ms for pads, 39ms for pedals, 33ms for guitar).

Issues with Skill Points for Guitar/bass

Two issues reported on Discord, for guitar & drums.

1. Skill points not updated in game screen and in result screen. Stay 0.00
This one can be fixed easily. It happens only if Drums is set as all-auto: in this case Skill point is currently fixed to 0.00.
I plan set Skill points to 0.00 only if we are in Drums mode and Drums is all-auto.

2. Wrong rank in the history panel in Song selection
This one is more tricky.
The problem is that we calculate an Overall ranking which takes both Guitar and Bass into account. The formula is:

(perfectGuitar+perfectBass)/(NbNonAutoChipsGuitar+NbNonAutoChipsBass)*100*0.85+(GreatGuitar+greatBass)/(NbNonAutoChipsGuitar+NbNonAutoChipsBass)*100*0.35+
(maxComboGuitar+maxComboBass)/(NbNonAutoChipsGuitar+NbNonAutoChipsBass)*100*0.15

If you play only guitar and put bass on all-auto, the bassComboBass will be full, which artificially improves the overall ranking.
This overall ranking is also used to select the background image in the result screen.

What I'm planning to do for the song selection is:

  • if guitar and bass are played together keep the Overall ranking
  • if only guitar or bass is played, use the normal ranking for single instrument
  • add instrument in the history panel (e.g. Guitar/Bass/G+B )

Add support for old RIFF formats

Although I didn't clone/build new NX, but if this BGM can't playback after removing SoundDecoder,
https://www.dropbox.com/s/o2t8qiv1xay0u3f/TOCCATA.rar?dl=0

we'll need to apply
https://osdn.net/projects/dtxmania/scm/git/dtxmania/commits/8cb598283e68b1b0fc3cc2e851b5637547842866
=> This fix is not included in both Ver.K 4.10 FDK / AL 064 FDK.

Discussion: https://ja.osdn.net/projects/dtxmania/forums/24381/41028/ (in English)
Ticket: https://osdn.net/projects/dtxmania/ticket/39474 (in Japanese)

Note: fix contains NVorvis project, and it requires .NET Core SDK to build... (ticket says so).
It's too big too apply...

Enable/Disable DirectX Exclusive mode

I would like to propose something that will enable or disable DX Exclusive mode. DX Exclusive mode is when you press ALT+ENTER to exit full screen mode, but there will be a few seconds of a black screen. On games nowdays, exiting full screen mode will immediately show the game in window mode, and this will really be useful for switching windows when doing other tasks, and will be useful for users using just one monitor.

Wrong rank in Song Selection screen sometimes

Sometimes the max rank for a song in the Song Selection screen is incorrect and does not correspond to the max skill.
Example:
image
image

I noticed a couple of issues in the code which sets the max rank used in the n進行描画() method:
File CActSelectステータスパネル.cs line 56:

  • it compares a rank: DTXMania.CScoreIni.tランク値を計算して返す(0, c曲リストノード.arスコア[j].譜面情報.最大スキル[i]) to a Skill value (95), which is not correct
  • if the condition is true, it assigns value DTXMania.CScoreIni.tランク値を計算して返す(0, cスコア.譜面情報.最大スキル[i]) as a max rank to display. But this is not correct, this value is the same regardless the difficulty level. The value to use is DTXMania.CScoreIni.tランク値を計算して返す(0, c曲リストノード.arスコア[j].譜面情報.最大スキル[i])

Fixing this line and always recalculating the rank from the song's skill value would also solve another issue, which is happening when the BestRank value from the score.ini file was wrongly set by a previous DTXMania version (original 3.62).
In CStage結果.cs the c曲リストノード.arスコア[j].譜面情報.最大ランク[i] value is only updated when this.b新記録ランク[i] is true, which is not happening when the BestRank value from score.ini file was incorrect. This is happening to me quite often as original 3.62 was ranking too high in the Results screen. So 3.62a doesn't detect it as a higher rank and the Song Selection screen is not updated.

Box.def #SKINPATH not working consistently

box.def format supports a #SKINPATH option which allows you to associate a skin to a DTXFiles folder (box), as documented here: https://osdn.net/projects/dtxmania/wiki/box.def%20format
For example you can put the Tri-Boost skin in the Tri-Boost DTXFiles folder so you get the Tri-Boost experience when playing these songs.

I was trying to use this function unsuccessfully until I realized that there is a bug and it only works in two cases:

  • the box has some subfolder (sub-boxes). In this case the box' skin is used
  • a skin with the same name also exists in your skin folder. This is good but doesn't let you keep all your DTXFiles/folders separated from the game itself, and use them with multiple game versions

I'm going to fix that so it works in all cases.

Proposed New Feature: In-game Profile creation, update and selection

Currently all modifiable configurations are saved in plain config.ini file. Certain fields such as CardName, GroupName and NameColor are not configurable in-game.

This new feature should allow in-game creation of Profiles. Each profile stores CardName, GroupName, NameColor as well as System and Play settings. Profile should be switchable in-game to allow quick-swap of players without restarting Dtxmania.

The first step to implement this feature is to find a more scalable form of data storage or database. I have already port all config.ini fields to a sqlite database file in a separate branch named config_ini_to_sqlite. Please feel free to test the branch and provide feedback.

Change play speed during gameplay

Make it possible to change play speed during gameplay.
Keys should be configurable.
Changing speed should trigger training mode, i.e. not save the score at the end.

Can select non-existent instrument parts in charts without instrument present

For example, in a .dtx file with only guitar and bass, it is possible to select drums. The guitar and bass charts will autoplay in the background while the screen scrolls with no chips for the entire duration of the song which is not very useful and doesn't make much sense.

If an instrument does not exist in the chart then ideally it should not be selectable.

Scores are not showing up after NX1.00

After switching from NX1.00 to NX1.01 my scores have suddenly disappeared.

Here's my trace log.
DTXManiaLog.txt

It appears to be an error reading the older scores.
Example:
2020/11/07 14:38:31.760 [ERROR] 演奏記録ファイルの読み込みに失敗しました。[E:\PC-Games\DTXManiaNX(1.01)\Songs\Anime\Bouken Desho Desho\adv.dtx.score.ini]

Description for "ShowLagTimeColor" configuration is flipped

According to the description, Type-A shows early note in Red and late notes in Blue, and vice versa:

image

However, if you actually play the game, it is actually the opposite based on what I understood from the description: Early note means that you have hit the note too early and Late note means you have hit the note too late.

It is possible that others may interpret this description differently: Early means you have to hit earlier and Late means you have to hit later. Personally, I find this interpretation very confusing and misleading though.

Please share your opinions on this and how best we can update this description.

Background videos can't be played during music select

Background video in the music select screen can't be played like what DTXMania XG style version did.
DTXMania XG style can play the video by naming it 5_background.mp4 in the skin folder. It will be great if we can give this a fix.

Fix authors of Forks in readme

At "Original and Ongoing Forks" part of readme.md,

  • As you know, author of original DTXMania should be FROM. I think (FROM/yyagi) is prefer.
  • Author of AL is Sena, not Sema

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.