Logo

The DDR Research Master Thread - UPDATED 12-11-2017 - A Few Memory Addresses for DDR EXTRA MIX (PSX)

Register Log In Back To Forums

Post #1 · Posted at 2015-05-18 03:34:22am 2.5 years ago

Offline travelsonic
travelsonic Avatar Member
90 Posts
Not Set
Reg. 2006-10-18
Log in to send this user a private message
Steam: terminalcancer

Last updated: 2017-12-11 04:13pm
This thread is being created as a springboard for discussing how the engine(s) used in DDR game works., as well as game specific information that can be used for hacking the game, and customizing all sorts of things.

Please take note:
At no point will I post links to game ISO images, nor will I post links to sites where you can obtain them. All I am posting here is information based on my own research.



Contribute information you may have if you want - I made this with the intent that anyone else with information can share freely.

PRE-MAX ERA ENGINE - DDR 1st Mix to DDR 5th Mix
(and variations thereof)

Game Specific Notes - Playstation Mixes
Dance Dance Revolution Extra Mix:
MEMORY ADDRESSES:
To modify this data, you need to use a cheat device if using a Playstation, or -
if using an emulator - use a tool that allows you to edit memory while the game is running. (NO$PSX is an emulator with good debugging tools, you can also fiddle around with Cheat Engine if you wish)
- In a Game Stage -
0x2C2398: Player Perfects
0x2C239C: Player Greats
0x2C23A0: Player Goods
0x2C23A4: Player Boos
0x2C23A8: Player Misses
0x2C23B4: Player Max Combo
0x2C23B8: Player Letter Grade Value
Value / Letter Grade:
00 = D
01 = AA
02, 03 = A
04, 05 = B
06, 07 = C
08-0F = D



Game Specific Notes - Game Boy Color Mixes:
Dance Dance Revolution GB3:
MEMORY ADDRESSES:
To modify this data, you need to use a cheat device if using a Game Boy Color, or -
if using an emulator - use a tool that allows you to edit memory while the game is running. (BCB is an emulator with good debugging tools, you can also fiddle around with Cheat Engine if you wish)

- Music Select Screen -
-FILLER-

- In a Game Stage -
Player's Scoring and Stepping Quality:
Stored in Internal RAM Bank 0 (0xC000 - 0xCFFF):
0xC5CC: Player's Health Gauge Value
0xC5E0: Player's Perfect Count
0xC5E4: Player's Great Count
0xC5E8: Player's Good Count
0xC5EC: Player's Boo Count
0xC5F0: Player's Miss Count
0xC5F4: Player's Current Max Combo
0xC626: Player's Previous Max Combo

MAX-ERA ENGINE - DDRMAX AC to DDR EXTREME 2 PS2
Game Engine Notes - Arcade Mixes:
-Under Revision-

Game Engine Notes - PS2 Mixes:
Misc. Notes:
It seems very likely that the MAX-era PS2 games used code from the arcade mix(es) as a base. On top of the idea that it would bring a reduction in work load in bringing the non-platform-dependant aspects to the PS2 on the part of Konami, there is at least a little actual evidence in DDDRMAX -DanceDanceRevolutin 6thMIX- ELF, namely strings like "INCORRECT SECURITY CASSETTE," which make no sense in a C/S mix, and make perfect sense for an arcade mix that runs on a system (bemani573, in this case) that uses security cassette(s).

Menu Timers:
Like with calculating step time judgment during a song, menu timers are also dealt with in frames.
Time: Seconds, Frames:
15 seconds: 900 frames
30 seconds: 1800 frames
60 seconds: 3600 frames

There are 2 separate values used in handling a timer value - one holding the number of frames remaining, which is decremented every frame, and one containing the number of seconds that the player sees - which is decremented every 60 frames..

Song Wheel Slots:
In mixes where there is a "Roulette" slot, but not an additional "Random" slot, the "Roulette" option is always the last slot on the song wheel.

Song Wheel Traversal:
When you move up or down the song wheel, you are limited in how many slots you can move per second. This is done by restricting how many frames are used per movement.

There are 2 values used. One for when you tap either the left or right buttons, and one for when you are holding down your left or right buttons.

When tapping the left, or right arrows, the wheel immediately advances to the next slot.
When holding down the left or right arrows, the wheel advances about one slot every 6 frames.

When altering these values, keep in mind that a higher value will cause you to traverse the wheel at a slower pace, whereas making the value(s) lower will make song wheel traversal faster.

struct music_info:
These pieces of data, found in the game's executable, are used to display information about a song in the music selection screen. Depending on the game, these definitions can be anywhere from 108 bytes long, to 152 bytes long. There are entries for every song in the game, and each song's struct is the same size. Below the breakdown of each data definition's contents, you can find an incomplete list of games, and their respective music_info sizes.

Breakdown of a music_info Struct: PRE-EXTREME
Currently VERY Incomplete
Bytes 1-7: base_name A label, or name for the definition - an abbreviation of the full song's name.
Byte 8: album: The CD icon that appears on the upper-right corner of the song banner. Specific values, and which icons they represent, may differ based on each game. I will investigate this further.
Byte 9-10, 11-12: Possibly some sort of index. Changing the value in byte 12 changes what song data loads.
Bytes 13-14: Index of the BGM to use for the preview.
Bytes 15-16: Possible repeat of the preview BGM index above
Byte 17-18: Minimum song BPM
Byte 19-20: Maximum song BPM
Byte 24: Number of points needed to unlock the song
Bytes 37-40: Single-mode foot difficulty ratings
Byte 37: STANDARD + LIGHT mode foot ratings
Byte 38: ONI + HEAVY mode foot rating
Byte 39 & 40: Empty, possibly unused
Bytes 41-44: Doubles-mode foot difficulty ratings - order following the same convention as the foot rating for single mode.

music_info struct sizes:
Arcade:
Dancing Stage EuroMIX 2: 108 bytes
EXTREME: 128 bytes

Playstation2:
MAX2 JP: 136 bytes
EXTREME JP: 152 bytes

Song Grouping Colors:
The colors for each specific song wheel grouping/category are hardcoded in the game's executable.

Each grouping's color consists of 2 words for the red color value, 2 words for the blue color value, and 2 words for the green color value.

File Data Tables:
Information on how this data is stored was discovered by member root670
In each game that utilizes the MAX-EXTREME engine, there is a table that indexes the data in the game's filedata.bin. Each table element is 8 bytes long, and is comprised of 3 parts:
1. file_position - A 2 byte index
2. address - A 3-byte compressed offset address. To get the actual actual offset address, multiply this 3-byte value by 0x800.
3. size - A 3-byte compressed file size To get the actual actual file size, multiply this 3-byte value by 0x800.

Because the system the game runs on, the R5900, is little endian, when you look at this table data in a hex editor, an index of, say 0x03FF will appear as "FF 03," not "03 FF," same with the offset and size data in the table. Also note that the index, for some reason, skips numbers. I have no idea why this happens.

Loading Step Data:
Currently VERY Incomplete
Located within the filedata.bin file is the game's step data. Prefacing the actual step data, however, there is an array. This array contains the location of the step data - each location being relative to the beginning of the stepdata table. It is worth noting that the step data itself is compressed using Konami's LZ compression algorithm. (Thank you root760 for pointing this out to me some time ago).

This table will have a byte size equal to the number of songs in the game times 4. For example, DDRMAX2: -DanceDanceRevolution 7thMIX- (C/S) has 74 songs, therefore, this table is (74 * 4), or 296 bytes in size. DDR EXTREME (JP, C/S)'s table is approximately 440 bytes, holding offsets for 110 song's worth of indexes. (basically, each value in the array is 32 bits, or 4 bytes, in length).

If you swap the offset stored in a particular index with another, all the stepcharts for that song - Light, Standard, heavy, and/or Oni (and/or Beginner if working with EX onward) - will be replaced with the data at the newly specified offset.

From this, we can glean that each chunk of data contains a number of step charts for a song equal to (song's data chunk size / number of selectable difficulties in the game). For games with just Light/Standard/Heavy choices, that number is 3; For games with Light/Standard/Heavy/Oni choices, that number is 4, and for games with Beginner/Light/Standard/Heavy/Oni choices, that number is 5. Obviously, if a song does not have stepdata for a particular difficulty, that entire chunk will be all 0s, containing literally nothing.

Stepdata Locations:
Arcade (data located in GAME.DAT):

Playstation2: (data located in FILEDATA.BIN):
DDRMAX2 -DanceDanceRevlution 7thMIX- [NTSC-J]: 0x3051E800
Dance Dance Revolution EXTREME [NTSC-J]: 0x30E17000

Song BG Scripts Tables:
Like the game's step data, this data is stored in the game's filedata.bin, with a table of offsets preceding the actual data.
-Gotta experiment more, will update in a little bit-

Dance Point Calculations:
The letter grade you receive after completing a song is based off of how many Dance Points you have earned. The total number of Dance Points you earn is calculated as:
DP = (P*PM)+(G*GM)+(Go*GoM)+(B*BM)+(M*MM)+(O*OM), where:
P = Perfect Count, PM = Perfect Multiplier,
G = Great Count, GM = Great Multiplier,
Go = Good Count, GoM = Good Multiplier,
B = Boo Count, BM = Boo Multiplier,
M = Miss Count, MM = Miss Multiplier,
O = O.K Count, and OM = O.K Multiplier.

Boos and Misses deduct from your DP total, but do so in an interesting way. Instead of having positive Boo and Miss Multipliers, calculating the total of DP earned from Boo and Miss steps, and subtracting that from the number of DP earned thus far, the Boo and Miss multipliers themselves are negative, and the game subtracts those points by adding a negative value to your total DP. This keeps the algorithm simple, and clean, by keeping it down to a continuously repeatable process of loading a judgement step count + multiplier, multiplying them together, adding them to your current total number of DP, then going on to the next judgment/multiplier pair (instead of branching to a separate set of instructions used just for handling Boo and Miss judged steps).

Letter Grade Calculation:
After the game has calculated the number of DP you've earned, it divides that number by the maximum number of DP that one can earn for a given song/chart difficulty. This max DP value is loaded into memory when you select the song from the song wheel.

The result of this DIV instruction puts the quotient (earned DP / max DP) in $LO, the remainder (earned DP % max DP) in $HI, $LO and $HI being special registers used to access the results of a division operation.

The game then puts the quotient, stored in $LO, into the register that previously held the maximum earnable DP.

From there, it does a series of comparisons with the quotient against hard coded values, using the results to determine your letter grade.

Is the quotient equal to 100 (0x64)? If it is, the game gives you a AAA. If it is not, then the game branches to the next comparison.

Is the quotient less than 93 (0x5D)? If it is not, the game gives you a AA. If it is, then the game branches to the next comparison.

Is the quotient less than 80 (0x50)? If it is not, the game gives you an A. If it is, then the game branches to the next comparison.

Is the quotient less than 65 (0x41)? If it is not, the game gives you a B. If it is, then the game branches to the next comparison.

Is the quotient less than 45 (0x20)? If it is not, the game gives you a C. If it is, then the game branches to the next comparison.

If you get a lower percentage than that, and passed the song (as in, you didn't deplete your health gauge), you get a "D." If you depleted your health gauge, irrespective of your DP percentage, you get an "E."


Game Specific Notes - PS2 Mixes:
DDRMAX2 -Dance Dance Revolution 7th Mix- [NTSC-J, SLPM-65277]:
NOTE: This is a living document, as I learn more, and as I sort all my notes/make them coherent, more info will be added.

GAME EXECUTABLE HACKING NOTES:
The addresses listed here are the logical addresses for if you edit the game's SLPM file as its own file, versus editing the executable by opening the entire ISO image into your hex editor.. IF you choose to edit this by loading the entire ISO into your hex editor, add 0x5FFFFF to each offset to account for how far into the ISO image the executable is.

-Sound Effects, Sounds, and Music-
The game seems to reference a table of values that correlates directly to sound effects, menu BGMs, and announcer sound bytes, as well as the preview music for each song in the game.

In the game, the index is loaded into a register, usually a0, used to store arguments for functions, before being used to load/play the corresponding sound. The MIPS instruction that loads the specific index into the register is "addiu a0, zero, $####," where a0 is the argument register the data is loaded into, and the #### being the index itself. In hexadecimal, this code appears as 2404#### (again, the "####" is the index.)

Locations of Sound Loads:
Game BGM Loads:
0x0015556C - Style/Difficulty Select
0x00175190 - High Scores
0x00177E80 - Oni Course Select
0x002381C4 - Credits Music

Announcer Sound Loads [INCOMPLETE LISTING]
0x00142FF8 - "Ughhhhh... you couldn't make it!"
0x00143194 - "Can I call you a dancin' master?"
0x001431B4 - "*clapping* I'm so impressed!"
0x001431EC - "Well... all's well that ends well."
0x00143214 - "You're a fantastic dancer! You should dance one more time!'
0x00143244 - "Wow! It's a new record!"
0x0014F0F0 - "Are you ready?"
0x0016BCA4 - "Challenging Mode"
0x0016BFCC - "This mode is difficult!"
0x00175928 - "DDRMAX...2!"
0x00177BC8 - "Are you ready?"
0x001782E8 - "Select a style"
0x00179280 - "Game Over"
0x0017BB50 - "Let's Max!"

Sound Effect Loads:
0x0015556C - Songwheel Turn Sound
0x00175D44 - Konami Sound

-Songwheel Stuff-
This information has yet to be sorted properly, and is very incomplete.

-Dance Point Multipliers-
These addresses hold the multipliers used to calculate how many Dance Points a player has earned in a song.

0026D670 - Multiplier for the Perfect judgment , a value of 2.
0026D674 - Multiplier for the Great judgment , a value of 1.
0026D678 - Multiplier for the Good judgment , a value of 0.
0026D67C - Multiplier for the Boo judgment, a value of -4.
0026D680 - Multiplier for the Miss judgment, a value of -8.
0026D690 - Multiplier for the O.K judgment (Freeze Arrows), a value of 6.

N.Gs aren't tracked, and as a result have no point value - positive or negative.



MEMORY ADDRESSES:
To modify this data, you need to use a cheat device if on a Playstation 2 console, or -
if using an emulator - use a tool that allows you to edit memory while the game is running. (the latest version of PCSX2, with debugging tools, or the PCSX2DIS build, are good choices IMO)

- Music Select Screen -
0x005674A8 - The number of song wheel slots. When selecting a course in Oni mode; this is also the number of slots that are available for courses. The increment of this value past the number of songs/courses there are in the game will create blank slots. If you use Roulette, and land on a blank slot, the game will crash from attempting to access data at an invalid address.

0x005674A4 - The current songwheel slot index the player has highlighted.

0x005674B4 - Array of song wheel slot values, each value dictating which song appears in each slot. Each value is 4 bytes long. You can repeat values without any sort of conflict. If you extended the number of song wheel slots at 0x005674A8, and then append the list, the song wheel slots you added will show up without issue. The values that represent each song are, essentially, the indexd/order of the song data definitions, so a value of 0001 would be Long Train Runnin', 0002 would be Maximum Overdrive, 0003 Waka Laka, etc. It is worth noting that a value of 00C7 is the Roulette option, and a value of 00FF marks a "COMING SOON" dummy slot. (TODO: put up a full list of values?)

0x0056F4C4 - The address of the song wheel data definition belonging to the song at the current position
on the wheel.

0x0056F4D8 - The song wheel sort Label
0x01 = Normal sort / no graphic
0x02 = ABC sort
0x03 = BPM sort
0x04 = Best sort

A value of 0x00, or a value greater than 0x04 (0x05, 0x07, etc) results in nothing being shown.


- In a Game Stage -
Player's Scoring and Stepping Quality:
- General Note -: For some reason, these values are signed - as in, they can be either a positive, or a negative
value. Note that setting these values to negative will cause your score display to wildly
spin out of control, or become a garbled mess. Fortunately, this will not crash your game,
it just looks hilarious.

0x0056F508 - Player 1's displayed score. Editing this fails, as it is automatically replaced with the score
value stored at 0x0056F510 (see below).

0x0056F510 - Player 1's actual score. Completely editable, value range -2,147,483,648 <= X <= 2,147,483,647.
Note that the display you see in game is only 9 digits wide, so if you exceed 999,999,999, the score
counter will not show that 10th digit. Also note that if you enter a negative value, or enter a
value so great that the score becomes negative due to arithmetic overflow, the score counter will
become a garbled mess.

0x0056F5AC - Player 1's perfect count.
0x0056F5B0 - Player 1's great count.
0x0056F5B4 - Player 1's good count.
0x0056F5B8 - Player 1's boo count.
0x0056F5BC - Player 1's miss count.
0x0056F5C4 - Player 1's miss count repeated.
0x0056F5C8 - Player 1's O.K count.
0x0056F608 - Player 1's score on the score screen
0x0056F60C - Player 1's max combo

Note editing the data here on the score screen itself will not make permanent changes to your score, whereas
editing it while playing a song will result in a permanently recorded score.


Player Health:
0x0056F500 - Player 1's health gauge value. Still figuring out more specifics about how the values entered
affect it, and how the game engine works with the changes.

Unsorted Stuff:
0x0061A9C0 - Not entirely sure, it appears to always have a value of (song_bpm - 1) though.
0x0056F568 - Mode and Difficulty Settings. There are 2 halfwords, both of which store 2 different pieces of data.
Halfword 1: Play Style:
TODO: Research this halfword, values + what they do
Halfword 2: Difficulty:
0x00 = Nothing
0x01 = Light
0x02 = Standard
0x03 = Heavy
0x04 = No difficulty label above the player score. Odd
pattern of quad arrows replacing normal step info.
0x05 = No difficulty label above the player score. Target
arrow


Dance Dance Revolution EXTREME [NTSC-J, SLPM-65358]:
---content coming soon---


Inserting Custom Audio:
Contrary to what I previously thought, this is not all that tricky - it just takes a few steps.

What You Need:
- The song you wish to put in the game
- Audacity
- ps2adpcm
- Your image of your PS2 DDR game of choice
- A hex editor

First Step: Preparing your BGM for conversion to ADPCM.

Load the track into Audacity. Ensure that the format is 16-bit PCM, and that the frequency is set to 44,100Hz (44.1kHz).

Export the audio to wav.

Next, go into your command prompt, and navigate to wherever you may have ps2adpcm.

Program usage, straight from the program itself:
ps2adpcm<PCM Input> <ADPCM Output> -s(tereo) -c[chunksize] -l[loopstart]
example: ps2adpcm - output.adpcm -s -c1024 -s1000

I find that a chunk size of 512 is exactly what you need - anything else, and you will have a mess skipping around. Also, make sure that your frequency matches that f the audio you exported from Audacity.

For example, say you have Remember December in a file called RememberDecember.wav.

You could try "ps2adpcm RememberDecember.wav RememberDecember.adpcm -s -c512 -c44100"

Assuming you get no errors from following this, you will have ADPCM data that is now ready for insertion into the PS2 DDR mix of your choice.

--It's 2 AM, gotta be up early, so I'll finish this at some point tomorrow.-

Post #2 · Posted at 2015-05-18 09:19:28pm 2.5 years ago

Offline AxelWasHere
AxelWasHere Avatar Member
999 Posts
United States
Reg. 2012-07-13
Log in to send this user a private message
Nintendo Network ID: AxelDiedLOLSteam: bright151Origin: GunsGoPEWPEW3DS Friend Code: 1908-2302-2382Game Center Nickname: [Rynon]CROSS×BEATS User ID: Axel573GREE Username: bright151
If you can keep this up.. we can have DDRMax2 finally, just like ITG PS2.
Custom music.
https://i.warosu.org/data/jp/img/0155/42/1468622735243.gif

Post #3 · Posted at 2015-05-18 09:29:29pm 2.5 years ago

Offline travelsonic
travelsonic Avatar Member
90 Posts
Not Set
Reg. 2006-10-18
Log in to send this user a private message
Steam: terminalcancer

Last updated: 2015-05-18 09:37pm
I hope this research will eventually let us customize any of the PS2 mixes that ran on what I dub the "MAX-EXTREME Engine," not *just* MAX2JP. Big Grin


I tried putting in custom music / overwriting existing music at the proper offset, music I converted to PS2 compatible ADPCM using the tool PS2ADPCM, and have gotten the music to sorta play, just extremely choppy... ugh...

Post #4 · Posted at 2015-05-19 05:02:13am 2.5 years ago

Offline bmhedgehog
bmhedgehog Avatar Member+
2,953 Posts
United States
Reg. 2008-07-13
Log in to send this user a private messageYahoo Instant Messenger: bmhedgehog12AOL Instant Messenger: SncKnuFacebook
Xbox Gamer Tag: BMHedgehogPlayStation Network: bmhedgehogNintendo Network ID: bmhedgehogSteam: bmhedgehog3DS Friend Code: 0345-0467-4408
"Checking PokeTrash since RBY"
I have an interesting question. Do you think I should pick up an extra copy/ies of the games in order to rip them? I'm more so thinking of adding songs to the existing list as opposed to going with customizing.

Post #5 · Posted at 2015-05-19 11:32:00am 2.5 years ago

Offline KittyBox
KittyBox Avatar Member
157 Posts
United States
Reg. 2014-05-01
Log in to send this user a private message
Are you able to describe how you looked through the games data at all? I might be interested in trying to see what I could find in US MAX2 if its not too complicated.

Post #6 · Posted at 2015-05-19 11:53:37am 2.5 years ago

Offline AxelWasHere
AxelWasHere Avatar Member
999 Posts
United States
Reg. 2012-07-13
Log in to send this user a private message
Nintendo Network ID: AxelDiedLOLSteam: bright151Origin: GunsGoPEWPEW3DS Friend Code: 1908-2302-2382Game Center Nickname: [Rynon]CROSS×BEATS User ID: Axel573GREE Username: bright151
Quote: KittyBox
Are you able to describe how you looked through the games data at all? I might be interested in trying to see what I could find in US MAX2 if its not too complicated.

It might only work for JP Max2
https://i.warosu.org/data/jp/img/0155/42/1468622735243.gif

Post #7 · Posted at 2015-05-19 01:47:09pm 2.5 years ago

Offline travelsonic
travelsonic Avatar Member
90 Posts
Not Set
Reg. 2006-10-18
Log in to send this user a private message
Steam: terminalcancer

Last updated: 2015-05-19 01:47pm
Quote: AxelWasHere
Quote: KittyBox
Are you able to describe how you looked through the games data at all? I might be interested in trying to see what I could find in US MAX2 if its not too complicated.

It might only work for JP Max2

For my exploits, adventures, I merely used a build of PCSX2 called PCSX2dis, which has debugging capabilities, the ability to look at the memory as the game is running and manipulate it, etc. I also did some digging through the old AIJ forums (as well as the current AIJ forums) for information that can give me a starting point. A word of caution though, the stability of PCSX2dis is a bit wonky, I run the DDR games at full speed without issue, but for some reason, causing the game to crash causes the emulator to blow up. ~_~

Something else that I find helpful: When running PCSX2, or PCSX2DIS, when the logs show a pagesplit at a particular address, try copying that address, going to it, and fiddling around with things. Big Grin Not very scientific, but it is fun, and can be helpful IMO.

When it comes to the functionality shared by each game, from what I've seen so far, the code is exactly the same so far as what is done to the data loaded into the registers, which registers data is loaded into, etc - the only real differences being the memory addresses utilized, the addresses in the game ELF where the functions reside, and of course any changes needed to accommodate additions to the game (like, for example, going from supporting the 3 difficulties of Lgt/Std/Hvy, to supporting 5 difficulties (Beg/Lgt/Std/Oni) for step charts).

Hmm, did you know that information from game compilation (including strings that contained former variable names) take up a sizable percentage of the game's executable? In Extreme JP, that data takes up 883 1/2 kilobytes, or about 33.85% , of the ELF! XD

I hope to dig through that to see if the information on where those symbols were used is still in tact, as it is possible that the data is there, and there is a LOT of data to sift through. IF that data is preserved, then it will make a disassembly of the game easier to make... and even if it isn't there, there are strings with the name of each source code file/directory, allowing me to at least recreate the folder structure that the source code used to use.




Also, as hex editors go, I am really liking HxD Hex Editor (over what I used before, FRHed).

Post #8 · Posted at 2015-05-19 03:16:47pm 2.5 years ago

Offline bmhedgehog
bmhedgehog Avatar Member+
2,953 Posts
United States
Reg. 2008-07-13
Log in to send this user a private messageYahoo Instant Messenger: bmhedgehog12AOL Instant Messenger: SncKnuFacebook
Xbox Gamer Tag: BMHedgehogPlayStation Network: bmhedgehogNintendo Network ID: bmhedgehogSteam: bmhedgehog3DS Friend Code: 0345-0467-4408
"Checking PokeTrash since RBY"
Quote: AxelWasHere
Quote: KittyBox
Are you able to describe how you looked through the games data at all? I might be interested in trying to see what I could find in US MAX2 if its not too complicated.

It might only work for JP Max2

This should answer KittyBox's question

@ travelsonic
Quote: me from earlier in this thread
I have an interesting question. Do you think I should pick up an extra copy/ies of the games in order to rip them? I'm more so thinking of adding songs to the existing list as opposed to going with customizing.

Post #9 · Posted at 2015-05-19 04:47:53pm 2.5 years ago

Offline travelsonic
travelsonic Avatar Member
90 Posts
Not Set
Reg. 2006-10-18
Log in to send this user a private message
Steam: terminalcancer
I'm running on 3 hours of sleep + (only 3 hours of sleep from yesterday), for a grand total of 6 hours sleep over the last 2 days, so pardon me if I am a bit ... derpy ... in understanding things being relayed to me at this time.

What exactly do you mean by picking up extra copies - buying more? I'd say, assuming my sleep deprivation didn't lead to a horrific derp moment, that'd be overkill.

Post #10 · Posted at 2015-05-19 05:04:51pm 2.5 years ago

Offline bmhedgehog
bmhedgehog Avatar Member+
2,953 Posts
United States
Reg. 2008-07-13
Log in to send this user a private messageYahoo Instant Messenger: bmhedgehog12AOL Instant Messenger: SncKnuFacebook
Xbox Gamer Tag: BMHedgehogPlayStation Network: bmhedgehogNintendo Network ID: bmhedgehogSteam: bmhedgehog3DS Friend Code: 0345-0467-4408
"Checking PokeTrash since RBY"
well at the very least buy one extra copy of each DDR title, yeah I should have been more specific. For example I have two copies of Mario Mix (one used to belong to my sister), one to play on the GC/Wii and the other to rip the graphics and stuff off of.

Post #11 · Posted at 2015-05-19 05:07:42pm 2.5 years ago

Offline AxelWasHere
AxelWasHere Avatar Member
999 Posts
United States
Reg. 2012-07-13
Log in to send this user a private message
Nintendo Network ID: AxelDiedLOLSteam: bright151Origin: GunsGoPEWPEW3DS Friend Code: 1908-2302-2382Game Center Nickname: [Rynon]CROSS×BEATS User ID: Axel573GREE Username: bright151
Quote: travelsonic


When it comes to the functionality shared by each game, from what I've seen so far, the code is exactly the same so far as what is done to the data loaded into the registers, which registers data is loaded into, etc - the only real differences being the memory addresses utilized, the addresses in the game ELF where the functions reside, and of course any changes needed to accommodate additions to the game (like, for example, going from supporting the 3 difficulties of Lgt/Std/Hvy, to supporting 5 difficulties (Beg/Lgt/Std/Oni) for step charts).

Is that why if you pop in DDR SuperNova2 while playing DDRMAX2 the sound files play from Supernova2?
.. or something like that.
https://i.warosu.org/data/jp/img/0155/42/1468622735243.gif

Post #12 · Posted at 2015-05-20 02:43:05am 2.5 years ago

Offline travelsonic
travelsonic Avatar Member
90 Posts
Not Set
Reg. 2006-10-18
Log in to send this user a private message
Steam: terminalcancer
Hmmm, I admit, not entirely sure about that phenomenon...

Post #13 · Posted at 2015-05-20 09:22:58pm 2.5 years ago

Offline KittyBox
KittyBox Avatar Member
157 Posts
United States
Reg. 2014-05-01
Log in to send this user a private message
Quote: travelsonic
Quote: AxelWasHere
Quote: KittyBox
Are you able to describe how you looked through the games data at all? I might be interested in trying to see what I could find in US MAX2 if its not too complicated.

It might only work for JP Max2

For my exploits, adventures, I merely used a build of PCSX2 called PCSX2dis, which has debugging capabilities, the ability to look at the memory as the game is running and manipulate it, etc. I also did some digging through the old AIJ forums (as well as the current AIJ forums) for information that can give me a starting point. A word of caution though, the stability of PCSX2dis is a bit wonky, I run the DDR games at full speed without issue, but for some reason, causing the game to crash causes the emulator to blow up. ~_~
So I've got MAX2 US running in PCSX2dis now, but I'm not 100% sure exactly how to use these tools. How exactly do I manipulate the memory and find where certain things in the code are exactly?

Post #14 · Posted at 2015-05-22 01:12:16pm 2.5 years ago

Offline travelsonic
travelsonic Avatar Member
90 Posts
Not Set
Reg. 2006-10-18
Log in to send this user a private message
Steam: terminalcancer

Last updated: 2015-05-22 02:38pm
This is gonna be kinda hard to explain... but one thing I did with PCSX2 was to go into functions (however far) by looking at the addresses dumped into console... then I would have the pcsx2dis emulator analyze the code, if it hadn't already, as sometimes comments are automatically generated that show the value of the register being manipulated at specific instructions are. I often found that a hexadecimal value that has a 6-9 digit value was either something being loaded for use in game, or an actual memory address, or close to a memory address. (as opposed to being game code.

OF course, sometimes I scrolled through the memory far enough and just looked out for values that were changing a lot, as it would clearly be something being used by the game, and not code, a useful memory address.

Given the similarities in the game, I bet the data like present combo, high score during the song, etc will be similarly stored across the games, just at different locations in memory from game-to-game.

Damn it, that reminds me that I forgot to get down the memory address for MAX2 JP that stores the visible current combo that appears on screen. It can hold an enormous number too. XD



Thanks to gamehacking.org member root670, we now know that the PS2 DDR titles have a table i nthe game's ELF, each entry being 8 bits, containing a packed address that corresponds directly to the game's filedata.bin file.

I've made a reader that opens an ELF, and extracts/displays the table data. I hope to release it once I've added support for the Dancing Stage PS2 titles (a bit trickier since the table for DS Fusion, at least, is split up, separated by 130 byte chunks at intervals), and added support for exporting the data in .txt format, .doc format, and as an excel spreadsheet. Right now it supports MAX JP, MAX U.S, MAX2 JP, the MAX2 U.S Demo, MAX2 U.S, Party Collection, EXTREME JP, and EXTREME U.S.

Outdated screenshot: (since I fixed the table so it fits the screen, looks nicer, and doesn't have that idiotic row selection tab on the let that I resized before getting a screenshot.)
http://3.bp.blogspot.com/-mauqVRrYqwU/VVylVtvZSKI/AAAAAAAAAS4/RGTcnZUGYsQ/s1600/DDRFileDataTableViewer%2BScrnshot.png

I also hope, on top of adding those export options, and adding support for the Dancing Stage titles, to also have a choice of viewing the data in decimal or hexadecimal.

Post #15 · Posted at 2015-05-22 05:49:06pm 2.5 years ago

Offline AxelWasHere
AxelWasHere Avatar Member
999 Posts
United States
Reg. 2012-07-13
Log in to send this user a private message
Nintendo Network ID: AxelDiedLOLSteam: bright151Origin: GunsGoPEWPEW3DS Friend Code: 1908-2302-2382Game Center Nickname: [Rynon]CROSS×BEATS User ID: Axel573GREE Username: bright151

Last updated: 2015-05-22 06:02pm
I did this with Supernova2 JP and i found something.. Could it be a scrapped song..?

https://i.imgur.com/u3RoNsz.png

Dancing All Alone from 5th mix? Could it be you?!

Even more songs from The list.... Thats alot of songs that aren't even in the game..
Are these place holders..?

https://i.imgur.com/HrqjjnC.png


https://i.imgur.com/mWJm61z.png

Blonde Girl? Is there a way to make these songs show up in the list?
I want to know how to edit song names/edit stuff in it. Any possible way?
https://i.warosu.org/data/jp/img/0155/42/1468622735243.gif

Post #16 · Posted at 2015-05-22 06:02:59pm 2.5 years ago

Offline travelsonic
travelsonic Avatar Member
90 Posts
Not Set
Reg. 2006-10-18
Log in to send this user a private message
Steam: terminalcancer

Last updated: 2015-05-22 06:03pm
Konami has a master list of songs in the ELF for each game, dunno why the hell they did that - look at the addresses following/proceeding it, if there are more ascii strigns with song names, then that's probably the find, otherwise it could be something else. My money is on it being that master list though. heh.

Post #17 · Posted at 2015-05-22 06:07:22pm 2.5 years ago

Offline AxelWasHere
AxelWasHere Avatar Member
999 Posts
United States
Reg. 2012-07-13
Log in to send this user a private message
Nintendo Network ID: AxelDiedLOLSteam: bright151Origin: GunsGoPEWPEW3DS Friend Code: 1908-2302-2382Game Center Nickname: [Rynon]CROSS×BEATS User ID: Axel573GREE Username: bright151

Last updated: 2015-05-22 06:08pm
Quote: travelsonic
Konami has a master list of songs in the ELF for each game, dunno why the hell they did that - look at the addresses following/proceeding it, if there are more ascii strigns with song names, then that's probably the find, otherwise it could be something else. My money is on it being that master list though. heh.

Is there a way to change stuff, like im still new. I went to code for EternuS But i just want to know how to change the titles of songs
And do what you are doing on Max2 But on Supernova2.

(Game crashes if i head to Blonde Girl. Like emulator blows up.)
https://i.warosu.org/data/jp/img/0155/42/1468622735243.gif

Post #18 · Posted at 2015-05-22 11:43:44pm 2.5 years ago

Offline n00b_saib0t
n00b_saib0t Avatar Member
1,651 Posts
United States
Reg. 2007-02-05
Log in to send this user a private messageWindows Live Messenger: shin_gouki2001[at]hotmail.comYahoo Instant Messenger: Your_Mom_FromNonStopMegaMixAOL Instant Messenger: MajinSuperVegitoSkype: NifterificFacebookMySpace: myspace.com/n00b_saib0tTwitter: NifterificGoogle+YouTube
Xbox Gamer Tag: NifterificPlayStation Network: NifterificNintendo Network ID: n00bsaib0tSteam: Nifterific3DS Friend Code: 1547-6201-2304Game Center Nickname: Nifterific
"F***ing exhausted."
Quote: bmhedgehog
well at the very least buy one extra copy of each DDR title, yeah I should have been more specific. For example I have two copies of Mario Mix (one used to belong to my sister), one to play on the GC/Wii and the other to rip the graphics and stuff off of.

You do know that after you rip the files they are still on the disc, right?
Every night I look online, type your name and find out where you are- if Look To The Sky was composed in 2014
Quote: sharibetsu in The Unwritten Rules of ZIv thread
Any popular thread must have at least one debate between n00b_saib0t and someone else.

Post #19 · Posted at 2015-05-23 12:35:41am 2.5 years ago

Offline AxelWasHere
AxelWasHere Avatar Member
999 Posts
United States
Reg. 2012-07-13
Log in to send this user a private message
Nintendo Network ID: AxelDiedLOLSteam: bright151Origin: GunsGoPEWPEW3DS Friend Code: 1908-2302-2382Game Center Nickname: [Rynon]CROSS×BEATS User ID: Axel573GREE Username: bright151
No point of having 2 games. We have the files on the computer as well.
/end that convo for me. Suspicious enough.

With the graphics on the emulator glitching out, i can see like beta stuff as graphic stuff
Like things that say "UNDER CONSTRUCTION" Which is fun to see.
https://i.warosu.org/data/jp/img/0155/42/1468622735243.gif

Post #20 · Posted at 2015-05-23 02:15:11pm 2.5 years ago

Offline bmhedgehog
bmhedgehog Avatar Member+
2,953 Posts
United States
Reg. 2008-07-13
Log in to send this user a private messageYahoo Instant Messenger: bmhedgehog12AOL Instant Messenger: SncKnuFacebook
Xbox Gamer Tag: BMHedgehogPlayStation Network: bmhedgehogNintendo Network ID: bmhedgehogSteam: bmhedgehog3DS Friend Code: 0345-0467-4408
"Checking PokeTrash since RBY"
Quote: n00b_saib0t
Quote: bmhedgehog
well at the very least buy one extra copy of each DDR title, yeah I should have been more specific. For example I have two copies of Mario Mix (one used to belong to my sister), one to play on the GC/Wii and the other to rip the graphics and stuff off of.

You do know that after you rip the files they are still on the disc, right?

yeah, but I'm just covering my butt if something goes south with this.
Register Log In Back To Forums

0 User(s) Viewing This Thread (Past 15 Minutes)

©2006-2017 Zenius -I- vanisher.com -5th style- II
Web Server: 4% · Database: 4% · Server Time: 2017-12-17 17:37:06
This page took 0.014 seconds to execute.
Theme: starlight · Language: englishuk
Reset Theme & Language