Post #401 · Posted at 2024-10-24 01:48:51am 1.1 years ago
AxelWasHere | |
|---|---|
| Member | |
| 1,646 Posts | |
| |
| Reg. 2012-07-13 | |
| "No." | |
Quote: Doraeman
So, I was messing with the dumped E3 build of Extreme CS (USA) using PSound and PCSX2, and there's a LOT of SFX from JP Extreme and before sitting unused with some graphics looking very similar to DS Fusion's even down to some words using UK spelling such as Favourite instead of Favorite.
I've heard before that the pre-SN era games on PS2 use effectively the same engine underneath, but the one used in Extreme US and it's siblings is the same as before but with extra stuff bolted on. I call this version of the engine, "The Festival engine".
But considering that there's the JP style assets in Extreme US and its siblings, maybe there's a way to force/trick the game into loading them instead of the final version.
I've heard before that the pre-SN era games on PS2 use effectively the same engine underneath, but the one used in Extreme US and it's siblings is the same as before but with extra stuff bolted on. I call this version of the engine, "The Festival engine".
But considering that there's the JP style assets in Extreme US and its siblings, maybe there's a way to force/trick the game into loading them instead of the final version.
https://tcrf.net/Dance_Dance_Revolution_Extreme_(PlayStation_2,_USA)
Post #402 · Posted at 2024-10-24 07:04:54pm 1.1 years ago
Doraeman | |
|---|---|
| Member | |
| 5 Posts | |
| Not Set | |
| Reg. 2024-05-01 | |
More or less those. Only issue is to figure where and how the graphics are loaded and dealt with and the values and addresses in the game's memory.
Post #403 · Posted at 2024-12-20 09:27:49pm 12.1 months ago
travelsonic | |
|---|---|
| Member | |
| 197 Posts | |
| Not Set | |
| Reg. 2006-10-18 | |
Hey guys,
life had become REALLY busy the last couple of years - only just bow really getting back into reverse engineering DDR titles. Just posting to say "I am not giving up on this, the project(s) of REing DDR are not dead."
life had become REALLY busy the last couple of years - only just bow really getting back into reverse engineering DDR titles. Just posting to say "I am not giving up on this, the project(s) of REing DDR are not dead."
Post #404 · Posted at 2024-12-21 04:16:57pm 12.1 months ago
AxelWasHere | |
|---|---|
| Member | |
| 1,646 Posts | |
| |
| Reg. 2012-07-13 | |
| "No." | |
Quote: travelsonic
Hey guys,
life had become REALLY busy the last couple of years - only just bow really getting back into reverse engineering DDR titles. Just posting to say "I am not giving up on this, the project(s) of REing DDR are not dead."
life had become REALLY busy the last couple of years - only just bow really getting back into reverse engineering DDR titles. Just posting to say "I am not giving up on this, the project(s) of REing DDR are not dead."
Someone has been posting some videos of removed difficulties or some modifications to the game
its worth checking out
https://www.youtube.com/@starshipenterprises
Post #405 · Posted at 2024-12-23 05:10:41am 12 months ago
Arcorann | |
|---|---|
| Member | |
| 61 Posts | |
| Not Set | |
| Reg. 2015-01-29 | |
While we're here, has anyone tried to reverse engineer how the lifebar works in various DDR versions? I fiddled around with 3rdMIX (PS1) for a bit but it seems to be more complex than I expected (and non-linear?).
Post #406 · Posted at 2024-12-23 09:47:59am 12 months ago
Dancefreak | |
|---|---|
| Member+ | |
| 349 Posts | |
| |
| Reg. 2006-08-12 | |
Quote: Arcorann
While we're here, has anyone tried to reverse engineer how the lifebar works in various DDR versions? I fiddled around with 3rdMIX (PS1) for a bit but it seems to be more complex than I expected (and non-linear?).
There's videos about it in YouTube but basically it's tied to your max combo and time in song. To the point where in some situations you can end up gaining life on a good or even a boo in some games. The lower your max combo is the more lenient the lifebar is, it's genuinely really strange but some of the console mission modes actively make you use this to clear some stages
Post #407 · Posted at 2025-09-28 11:48:40pm 2.7 months ago
Wan | |
|---|---|
| Member | |
| 421 Posts | |
| |
| Reg. 2008-01-13 | |
| "I want to change my username =(" | |
Last updated: 2025-09-29 04:30am
Necroing this for good measure...
I've been looking for a way to extract the BG Script of the CS songs and it was mentioned here years ago... and I completely missed that >_<
How the heck did you find (and extract) the scripts from CS games? O.o
I mean, WHERE are they stored? I've only been able to find stepcharts because the SSQ files are very noticeable )they're all inside a single .bin file)
__________________
On other note, I certainly haven't been able to make Let's Get Away (Full Version) playable on Extreme.
Tried converting a .sm with just the Expert chart, with the same result.
EDIT: I'm gradually getting more convinced that Extreme has a length limit, either hardcoded or just accidental (numeric overflow).
Tried converting a 3:27 song and it works, while Let's Get Away (Full Version) is 4:04 and doesn't work.
I've been looking for a way to extract the BG Script of the CS songs and it was mentioned here years ago... and I completely missed that >_<
Quote: SpyHunter29
stuff
(hope you're still around)How the heck did you find (and extract) the scripts from CS games? O.o
I mean, WHERE are they stored? I've only been able to find stepcharts because the SSQ files are very noticeable )they're all inside a single .bin file)
__________________
On other note, I certainly haven't been able to make Let's Get Away (Full Version) playable on Extreme.
Tried converting a .sm with just the Expert chart, with the same result.
EDIT: I'm gradually getting more convinced that Extreme has a length limit, either hardcoded or just accidental (numeric overflow).
Tried converting a 3:27 song and it works, while Let's Get Away (Full Version) is 4:04 and doesn't work.
Post #408 · Posted at 2025-10-05 09:55:04pm 2.4 months ago
Been a long while, but it SEEMED at least with 7thMIX CS that there is a bin file immediately following the one with SSQ data that has similar sequence files - maybe those are BG scripts? I will not make a sure bet of it though since it has been a while.
Side note: Am I being stupid, or does it seem like (at least for SSQ in CS mixes) the body of each sq_standard SSQ chunk has its data ... de-interlaced for a lack of better words? Like, for instance, the chunks containing each difficulty's stepdata has all the timings first, and then all the panel/player values following, as opposed to having them (each timing and panel/player value) paired together like the closest data structures that I could find for that would suggest is how they ought to be stored?
I could be, well, being a little dopey, sleep deprivation is a bitch that recurs in my life.
(I have not abandoned researching and reverse engineering DDR; just a very busy few months, between moving,. helping my folks settle in and downscale, multiple relatives dying, a hell of an emotional roller coaster.)
-----------------------------------------------------------------
So using Saxxonpike's LZ77 decompression tool I copied over and decompressed files in the filedata chunk that immediately follows the one containing SSQ data - not sure still if it is BG script info (part of me is, but I have increasingly become less sure of myself lately for some reason), it most certainly uses the sq_-prefixed data structures (like sq_standard and sq_header)!
IMO this absolutely helpes prove that "ssq" (and whatever you will call BG movie scripts) is more a subtype - and that the supertype is merely "sq" or "sequence?" - makes sense given that the main types associated with stepdata and with the data I just looked at are named sq_standard and sq_header (and there are other types relating to sequences that are all prefixed by the "sq_" prefix - sq_footstep_header, sq_indicator, etc).
Insecurity aside, each file in this chunk all have a singular sq_standard chunk in them - which IMO makes perfect sense for a single BG video script.
Side note: Am I being stupid, or does it seem like (at least for SSQ in CS mixes) the body of each sq_standard SSQ chunk has its data ... de-interlaced for a lack of better words? Like, for instance, the chunks containing each difficulty's stepdata has all the timings first, and then all the panel/player values following, as opposed to having them (each timing and panel/player value) paired together like the closest data structures that I could find for that would suggest is how they ought to be stored?
I could be, well, being a little dopey, sleep deprivation is a bitch that recurs in my life.
(I have not abandoned researching and reverse engineering DDR; just a very busy few months, between moving,. helping my folks settle in and downscale, multiple relatives dying, a hell of an emotional roller coaster.)
-----------------------------------------------------------------
So using Saxxonpike's LZ77 decompression tool I copied over and decompressed files in the filedata chunk that immediately follows the one containing SSQ data - not sure still if it is BG script info (part of me is, but I have increasingly become less sure of myself lately for some reason), it most certainly uses the sq_-prefixed data structures (like sq_standard and sq_header)!
IMO this absolutely helpes prove that "ssq" (and whatever you will call BG movie scripts) is more a subtype - and that the supertype is merely "sq" or "sequence?" - makes sense given that the main types associated with stepdata and with the data I just looked at are named sq_standard and sq_header (and there are other types relating to sequences that are all prefixed by the "sq_" prefix - sq_footstep_header, sq_indicator, etc).
Insecurity aside, each file in this chunk all have a singular sq_standard chunk in them - which IMO makes perfect sense for a single BG video script.
Post #409 · Posted at 2025-10-06 07:44:27am 2.4 months ago
Wan | |
|---|---|
| Member | |
| 421 Posts | |
| |
| Reg. 2008-01-13 | |
| "I want to change my username =(" | |
Last updated: 2025-10-06 06:57pm
I'm not sure what you're referring to, but in the SSQ, each chart chunk is separate from each others.
Someone on Discord gave me many years ago a little SSQ analysis tool, that outputs the information in a very neat view.
For example, for "bagg.ssq" (Bag) straight from Extreme AC:

You'll notice there's a BG Script chunk. (Also, If I'm mot mistaken, the "Unknown data" is the lights script chunk)
And now "maxp." (Max Period), straight from Extreme CS JP:

No BG Scrjpt chunk.
You'll also notice that the charts are arranged in a different way...
- In Bag there's all the Basic, then all the Standard, then all the Expert and finally Beginner
- In Max Period there's all the Single charts and then all the Double ones.
That's just because the chunks are in that order, nothing more.
[Open the images in a new window/tab to see the actual size]
_________________________________________________________________
About the location of the scripts in PS2 games, I'm not sure that the file (extracted from filedata.bin) next to the one containing the stepcharts is the one with the scripts.
For example, in Party Collection the file that has the SSQs is "437.bin"
The 438th file is small 8 KB file
And the PREVIOUS one (436.bin) contains TCB files (graphisc), specifically the song banners.
🤔
Someone on Discord gave me many years ago a little SSQ analysis tool, that outputs the information in a very neat view.
For example, for "bagg.ssq" (Bag) straight from Extreme AC:

You'll notice there's a BG Script chunk. (Also, If I'm mot mistaken, the "Unknown data" is the lights script chunk)
And now "maxp." (Max Period), straight from Extreme CS JP:

No BG Scrjpt chunk.
You'll also notice that the charts are arranged in a different way...
- In Bag there's all the Basic, then all the Standard, then all the Expert and finally Beginner
- In Max Period there's all the Single charts and then all the Double ones.
That's just because the chunks are in that order, nothing more.
[Open the images in a new window/tab to see the actual size]
_________________________________________________________________
About the location of the scripts in PS2 games, I'm not sure that the file (extracted from filedata.bin) next to the one containing the stepcharts is the one with the scripts.
For example, in Party Collection the file that has the SSQs is "437.bin"
The 438th file is small 8 KB file
And the PREVIOUS one (436.bin) contains TCB files (graphisc), specifically the song banners.
🤔
Post #410 · Posted at 2025-11-08 04:19:11pm 1.3 months ago
Quote: Wan
Slight tangent: Do you still have a copy of the 573 tools that let you explore that folder structure for GAME.DAT files? The github seems to be long gone with no archives of it at all.
Anywhoo...
I guess what I meant is that it felt interesting that the beat data and actual note values were all grouped together (that is, all the beats, and then all the notes) at least given the data structures we do have from DWARF debugging data leftover. Maybe I am being dopey.
Interestingly, in MAX2 C/S there are console outputs that doesn't seem to exist in any other PS2 DDR title, that pop up in PCSX2's console output when loading existing stepdata for use in edit mode, that give us insight into the name (and perhaps some structure) to at least some of the data in one of the first two chunks (useful in identifying and describing the data, and also just because I am a stickler for getting actual variable names - or as close an approximation to Konami's naming conventions as possible when disassembling games
Quote
// WHEN LOADING DATA FOR Burning Heat! (3 Option Mix):
seq->header.kind 1
0x0001 size 68
seq->header.kind 2
0x0002 size 48
check_edseq
seq->header.kind 3
0x0003 size 684
player 4
player 1
kind 1
seq->header.kind 3
0x0003 size 1224
player 4
player 1
kind 2
seq->header.kind 3
0x0003 size 2120
player 4
player 1
kind 3
seq->header.kind 3
0x0003 size 12
player 4
player 1
kind 6
seq->header.kind 3
0x0003 size 728
player 8
player 1
kind 1
seq->header.kind 3
0x0003 size 1176
player 8
player 1
kind 2
seq->header.kind 3
0x0003 size 1596
player 8
player 1
kind 3
seq->header.kind 3
0x0003 size 12
player 8
player 1
kind 6
herewe_count4096
work->bar_max64
herewe_count4096
bar_max64
check_timing_data 1
check_timing_data 217
check_timing_data 1953
check_timing_data 2007
check_timing_data 13447
check_timing_data 13501
check_timing_data 14203
I really wish there were more DDR games with debugging data that covered the actual play mode(s) - and that IDA and Ghidra would support reading DWARF1 symbol data in games that have it. The latter point being a pain in the nuts forever (seriously, DWARF 1.0 data should have been supported out of the box for these! Unless I'm being an idiot in trying to get it to read (and failing).
_________________________________________________________________
Another tangent: Is it weird that I find it interesting looking at the "Date Modified" dates on the executables for each PS2 game and seeing how soon or late one game's retail release executable was built compared to another game's executable?

For example Dancing Stage Megamix's executable date being 1 month 6 days 17 hours and 39 minutes after 7thMIX CS' was kinda striking.
God I really do think we need an equivalent for DDR to what the Sonic Stuff Research Group was to Sonic games in the mid-late 90s - early 2000s (not just reverse engineering but also covering the development history of the franchise as best as possible).
Post #411 · Posted at 2025-11-08 06:06:39pm 1.3 months ago
Wan | |
|---|---|
| Member | |
| 421 Posts | |
| |
| Reg. 2008-01-13 | |
| "I want to change my username =(" | |
Quote: travelsonic
Slight tangent: Do you still have a copy of the 573 tools that let you explore that folder structure for GAME.DAT files? The github seems to be long gone with no archives of it at all.
Just noticed that WindyFairy put set the repository as read only. That means no new changes will be made... oh well.
______________________________________________________________________________________________________
Waiting on SpyHunter29 to come around to enlighten me about the BG scripts ;__;
Post #412 · Posted at 2025-12-17 04:18:00pm 2 days ago
Quote: Wan
Just noticed that WindyFairy put set the repository as read only. That means no new changes will be made... oh well.
Especially a shame since it appears the Karaoke Mixes have their offsets not at 0x100000, 0x00401000, nor 0xFE4000, but at 0x400000, meaning these tools wouldn't work with those mixes.
Another tangent on PS2 games, I wonder why DDR EXTREME (US), EXTREME 2 have some mode functions relocated, the data stored in multiple binary files and dynamically loaded into the game.
Interestingly, between the 2004-05-10 Extreme US prototype, and the 2004-07-12 Extreme US prototype, the number of files for relocated code doubled (from 5 in the 2004-05-10 prototype to 10 in the 2004-07-12 prototype)
Quote: Wan
There is something I am struggling with still, and it's kind of pissing me off. How exactly are the file offsets stored or calculated?Maybe I am being a dope but I don't seem to see them in the actual filedata table.
---------------------------------------------------------------------------------------------------------------------------------------------
How tf did I NOT see it before? The value in sq_standard->division in type 3 chunks... uses the sq_footstep_header data structure!
Quote
typedef struct sq_footstep_header{
struct{
unsigned int panel : 4;
unsigned int player : 4;
};
unsigned char seq_kind;
}sq_footstep_header;
Going back to the console output from 7thMIX CS:
Quote
seq->header.kind 3
0x0003 size 684
player 4 // panel
player 1 // player
kind 1 // seq_kind
seq->header.kind 3
0x0003 size 1224
player 4 // panel
player 1 // player
kind 2 // seq_kind
seq->header.kind 3
0x0003 size 2120
player 4 // panel
player 1 // player
kind 3 // seq_kind
seq->header.kind 3
0x0003 size 12
player 4 // panel
player 1 // player
kind 6 // seq_kind
seq->header.kind 3
0x0003 size 728
player 8 // panel
player 1 // player
kind 1 // seq_kind
seq->header.kind 3
0x0003 size 1176
player 8 // panel
player 1 // player
kind 2 // seq_kind
seq->header.kind 3
0x0003 size 1596
player 8 // panel
player 1 // player
kind 3 // seq_kind
seq->header.kind 3
0x0003 size 12
player 8 // panel
player 1 // player
kind 6 // seq_kind
How do I know it is the sq_standard.header.division value here?
Quote
typedef struct sq_header{
unsigned int size;
unsigned short kind;
unsigned short division;
} sq_header;
typedef struct sq_standard{
sq_header header;
unsigned int num;
signed int body[1];
}sq_standard;
Looking at chunk type 03 data from Burning Heat! (3 Option Mix) - Single Light Difficulty:
Quote
AC 02 00 00 03 00 14 01 81 00 00 00
Broken down:
Quote
AC 02 00 00 sq_standard.header.size
03 00 sq_standard.header.kind
14 01 sq_standard.header.division
81 00 00 00 sq_standard.num
Broken down further:
Quote
AC 02 00 00 sq_standard.header.size
03 00 sq_standard.header.kind
14 01 sq_standard.header.division
1 sq_footstep_header.player
4 sq_footstep_header.panel
01 sq_footstep_header.seq_kind
81 00 00 00 sq_standard.num
Interesting that the data is packed - as opposed to the definition we have where sq_footstep_header defines panel and player as bitfields utilizing a single byte of a 4-byte integer, instead of storing the fields in a single char, keeping sq_footstep_header.seq_kind as-is, and having the data structure only take up 2 bytes (using bitmasks / shifting to get the panel and player fields like the game does with foot ratings and other data in music_info structs for instance).
----------------------------------------------------------------------------------------------
They weren't kidding when they said DDRMAX -DanceDanceRevolution 6thMIX- C/S (PS2) was a direct port of the arcade mix!
A long while back I had seen strings that looked like they came from AC mixes, a search that was revitalized by my wanting to learn about the 573 filesystem structure, but was put into doubt in my mind for some reason... turns out there are a fair number of strings related to the bootup, security checks, and even the GAME.DAT filesystem structure!



These strings are also found in:
SLPM-65277 - DDRMAX2 -DanceDanceRevolution 7thMIX-
SLPM-65358 - Dance Dance Revolution EXTREME
SLPM-62427 - DanceDanceRevolution Party Collection
SLUS-20437 - DDRMAX -Dance Dance Revolution-
The 2003-06-13 build of DDRMAX2 U.S
at the very least (haven't checked every PS2 mix and demo build yet)
Interesting that it had been stripped from the DancingStage Megamix executable given the proximity in build date to 7thMIX CS's executable build (and how much farther away from MAX2 U.S's demo build date).
Now to see if the data XREFs IDA picked up on are meaningful. It'd be kinda hilarious if code leftover from AC mixes pertaining to this stuff was actually left in the game.

