Sunday, March 31, 2019

SSQ Editor Progress Post 1

This ugly thing:


... is the beginning of a project to make an editor that will allow users to create stepcharts, and actually export them in Dance Dance Revolution's SSQ format.

And yes, the column on the left will have the beat / measure information, and not just a spamming of "BLARG!".

Despite the (wonky looking) support for doubles charts in appearance, this is currently cosmetic (-ish - as you can actually place step arrows for the P2 side whose values can be collected for actual SSQ file generation).  Before I really support Doubles mode chart creations, I still have a ton of features to add support for - such as freezes, BPM changes, pauses, and maybe even shock arrows, as well as support for actually loading decompressed stepfiles.

I would like to, eventually, add support for compressing the data for re-insertion into a DDR title, but that requires either finding a tool that can compress data into Konami's brand of LZ77 compression, or making a tool hat does this, which ... frankly, I do WANT to try, but am not thrilled about, seeing that I am a bit derpy when it comes to reading and understanding how LZ77 works, at least until I find a guide that explains it a certain way.

Sunday, March 17, 2019

Arrow Rules in Edit Mode AND In A Song Stage

When I first got into trying to make edit mode edits, I found myself continually frustrated with the inability to place 3 arrows on a beat, or have 2 freeze arrows with an additional 1 or two arrows you'd have to hit either by having your feet placed on the right spot between arrow panels so that stepping triggered both arrows, or by using you your hands.

If you try to do this normally, the old data at that beat is removed, and the newly placed arrow replaces it.

After doing a little digging, I found two areas in DDRMAX2's code that looked promising (pardon the crude graphic where I attempt to put 2 separate pieces of code together):



One piece of code is utilized while attempting to place non-freeze steps, the other used when attempting to place freeze arrows.

So, I just changed the 2 in the SLTI instructions to something higher. So far, so good, right? Sort of. I can place 3 arrows, in any combination of freeze and non-freeze arrows, on a single beat:
But alas, changing this didn't remove all the issues. For one, certain combinations of freeze and non- freeze arrows were still tricky to pull off correctly, and even if I got them eventually placed the way I wanted, the arrows wouldn't show up correctly, regardless of if I was playing back the song in edit mode, or in an actual song stage. The steps are changed to jumps (up and down arrow jumps specifically).

This leaves me to wonder where further checking occurs. Such checks are not done with official stepcharts, which was evident when I fiddled with stepchart data:


So there are clearly other areas where the game checks the validity of the step data. Maybe this happens in a place where the stepdata is converted to the game's internal step format. Regardless of if this is the case or not, I will try to remain decent about timely updates on this, and other DDR hacking matters.

Saturday, July 18, 2015

DP Calculation in DDRMAX2

After reading up on how your letter grade is determined in MAX2, and how DP works, I wanted to find where this work was done in the game. After some toil, and derpily realizing that I had some of the components needed to find this out (mainly the memory locations that stored the number of Perfects, Greats, Goods, Boos, Misses, and O.Ks a player got during a song), it has been found.

Wednesday, May 20, 2015

Lots of stuff going on

Been figuring out a lot of stuff relating to memory addresses and their uses. There are a lot of juicy tidbits prime for fiddling with, and just begging to be incorporate into gameshark codes. I made a post on the Zenius-I-Vanisher forums, where I started posting everything I've found so far. (link) I've also been in touch with a member of gamehacking.org, who has figured out the layout of EXTREME JP's filedata.bin (so far as the organization of the data, and what the data is at each specific location). He has also found a table in the game's ELF containing addresses to files in the filedata.bin file. I've since used that info to find the same sort of table in 7 other PS2 DDR mixes, and have made a program that extracts, and displays the table data. Right now it has support for MAX JP, MAX U.S, MAX2 JP, MAX2 U.S, the MAX2 U.S demo version, Party Collection, EXTREME JP, and EXTREME U.S. I will probably release it when I added support for the Dancing Stage PS2 mixes.

Monday, April 13, 2015

THIS JUST IN: Adding custom music is 100% doable [for PS2 mixes]

Thanks to the existence of tools capable of converting WAV format audio files into the correct variation of ADPCM audio used by the Sony Playstation 2, it is entirely possible to make custom music that you can place into DDR games. Unfortunately, at the present time, you will have to overwrite an existing song since how the game data is loaded is still a mystery, including whether or not the addresses are hard-coded, and if they are, where the game has them coded (as well as if that can be appended). Taring the files apart individually, as opposed to editing the ISO as one unit, will be easy assuming it is possible to rebuild the ISO completely, and in such a way where a Playstation 2 with a mod chip and.or SwapMagic, OR a PS2 emulator, will actually run it.
In the mean time, I have successfully transplanted music from one PS2 DDR game to another - again, replacing existing music. I overwrote the music for Burning Heat! (3 Option Mix) with the music for MAX. (Period), from the Japanese PS2 version of DDR EXTREME.

Heh, makes me wonder if I can, at Burning Heat's 166 BPM, come close to syncing steps to the music... of course, once I discover where the true BPM data for a song is stored, that will be a needless venture. If I could venture a guess, I'd say THAT information lies with the step data. Where that data is... I have no idea. Sty tuned!

Friday, April 10, 2015

IF you wanted to change what preview music played...

Apparently a piece of data in the song definition files for DDRMAX2 gets left out by IDA pro. These few bytes, which precede the song tempo information, reverence the sound byte in the game's data\SD.bin file that plays when you have the game highlighted in the song wheel.


Messing around with the specific value of 2 bytes, I've found that the game indexes a list of all the addresses of all the sound bytes in the file, though where that is exactly I have yet to discover. The files appear to be stored in the following order: sound effects, then announcer sound bytes, then game menu music files, then song preview clips used in the music select screen, then songs used for the various credit screens, full length songs, then a repeat of an announcer sound clip (albeit much quieter), and lastly, some odd, high pitch/speed string of announcer bytes.


This may not seem like much in some respect, but in the context of manipulating the game's data, this is pretty important. Next, I will need to look up where the indexes being referenced to, and the associated offsets in the sd.bin file, are stored within the game. Then, theoretically, I could add my own files into the game, and add my own offsets into the data array.


All of this, of course, is hinging on whether or not the data I found is in fact an index to some table of data.


EDIT: Here is a video demonstrating this. I am running the PS2 emulator PCSX2 v1.2.1, and using a RAM dumper to manipulate the bytes of data.

Wednesday, April 1, 2015

I'M NOT YET DEAD!

A LOT of stuff has been going on, so I haven't had the time I wanted to keep exploring the mysteries of DDRMAX2. Today, I decided to get back into it again, and decided to check out the jump tables, and what each choice does with regards to the flow of the game - whether gameplay related, or navigation wise. I found out that one jump table changed the actual set of options that appeared when you wanted to change language settings, controller settings, etc - and then proceeded to make it so no matter what choice you picked, you could only alter language options. Also found one whose function is as much a mystery as the other jump tables in the game, all I do know, however, is that if you make each case the same as case #2, all the songs in the song wheel flash a rotating palette of colors, as if it were a special song. Definitely a lot of cool stuff to look in to. Stay tuned, folks! :D