Skip to content
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

DDR 2ndRemix (japan) and DDR (original) (japan) stuck at notice screen #121

Closed
datboi2008 opened this issue Feb 26, 2022 · 47 comments
Closed
Labels
bug Something isn't working

Comments

@datboi2008
Copy link

Before opening this kind of issue, please ensure:

  • Are you using a compatible console version?
  • Are you using CD-R media, and not CD-RW?
  • Did you copy all the files in the expected format to the memory card?

tonyhax version: Which version are you running? Please ensure you are running the latest stable, or a newer beta.
Installation method: How did you get tonyhax on the memory card?
Entry point game: Which game are you using to launch tonyhax?
Console model: Console product code, written on the bottom of the unit, such as "SCPH-7502"
Integrity check: If it boots, does the built-in integrity check succeed?
BIOS version: If you can get to boot, which version of the BIOS does it report?
Target game: If the bug happens when launching a game, what's its name and game code? Example: "Spyro 3 (SCES-02835)"

Bug explanation:
Details:
Tonyhax version: 1.4.3
Ps1 version: SCPH-7501 (NTSC-U/C)
Ps1 Bios version: v1.4
Game used to run tonyhax: THPS3 (SLUS-01419)
I got Tony Hax onto my memory card using a ps2 with UlaunchElf
I followed this guide: https://www.youtube.com/watch?v=01gVgTQLP9U
Games with Problems:
DanceDanceRevolution 2ndRemix (japan) (SLPM-86252)
DanceDanceRevolution (japan) (SLPM-86222)

Problem: Both Games get stuck at the notice screen at the beginning of the game. Other DDR games like 3rd and 5th mix work fine (all these being Japanese)
DanceDanceRevolution 2ndReMIX (PlayStation _ 1999) - Gameplay - YouTube and 1 more page - Personal - Microsoft​ Edge 2_26_2022 12_50_06 PM

@datboi2008 datboi2008 added the bug Something isn't working label Feb 26, 2022
@socram8888
Copy link
Owner

Could it be a bad burn? I got some reports in issue #76 that these games we all working correctly.

@datboi2008
Copy link
Author

it might be, I got them form Coolrom.com so idk. If i knew of a different place that has iso's i would have did that first before asking here

@socram8888
Copy link
Owner

Could you check the checksum of the games?

@datboi2008
Copy link
Author

copying the tonyhax save and uploading it here?

@socram8888
Copy link
Owner

socram8888 commented Feb 27, 2022

No no, the checksums of the games that fail to load. See if they match those of issue #76.

If you have 7zip installed, you can do so by right clicking on the .bin file of the game, then selecting "7-zip", then "CRC SHA", then "SHA1".

The SHA1 of DDR 2nd Remix (a known working game) should be 2A683CAE4F91884E3C7BF6F28C4688E79E6E15DE.

@datboi2008
Copy link
Author

datboi2008 commented Feb 27, 2022

i dont have 7zip but i have winrar
im not seeing any simular options
Also, there are MANY bin files

@datboi2008
Copy link
Author

i used the first bin file of many and this is what I got
SHA1: 2a683cae4f91884e3c7bf6f28c4688e79e6e15de

@socram8888
Copy link
Owner

That sounds about right. If that is the case, then I am not sure what could be the problem. I don't have access to my console at the moment to test it on my own device, so I will not be able to help you any further in the short term.

@datboi2008
Copy link
Author

i used a program to combine the tracks, but is there a more correct way to do it?

@socram8888
Copy link
Owner

What do you mean you combined the tracks? All the .bin files into a singular .bin file? Was that for burning or for calculating the checksum?

@datboi2008
Copy link
Author

datboi2008 commented Feb 27, 2022

for buring it would not allow me to use the combined bin file, so i just put all the bin files together in a folder and it let me burn, but im not sure if thats the right way to do it and if thats the problem.

@socram8888
Copy link
Owner

socram8888 commented Feb 27, 2022

Yeah that could be it. Which program did you use? Imgburn (freeware) would let you burn a .cue file with multiple .bin files just fine.

@datboi2008
Copy link
Author

imgburn. i put all the bin files in the same folder as the cue files and it burned fine

@datboi2008
Copy link
Author

4x speed if that helps

@alex-free
Copy link
Contributor

Bumping this issue, as I have successfully reproduced it (using an unmodified DDR 2nd Remix properly burned CD-R) with a stock SCPH-1001 using the latest Tonyhax v1.4.4. Boot CD via CD Player Swap Trick.

@socram8888
Copy link
Owner

@alex-free have you tried using your fork, or with AP checking disabled?

@alex-free
Copy link
Contributor

@alex-free have you tried using your fork, or with AP checking disabled?

Yes. My fork has the same issue, it doesn't matter if I add a bypass for AP or not.

The same for original tonyhax with patches disabled. Same issue.

@socram8888
Copy link
Owner

Hmmm interesting. I cannot replicate it on an emulator.

I guess it's time to burn the last CD-R I have and try debugging it in real hardware.

@socram8888
Copy link
Owner

Still looking into this.

So far, what I've discovered is that a function at 0x801C1E38 (loaded from a secondary executable), has a state machine that depends on byte 0x800101F4. This starts at 0, then goes to 1, then 2, takes a good while, then 3, and finally 255. It then gets stuck at that value forever.

In an emulator where this is working properly, from 3 it jumps to 4 instead, and keeps increasing until 8 (I think, I don't remember), and finally returns and keeps executing other code.

@socram8888
Copy link
Owner

socram8888 commented Dec 7, 2022

Function at 0x801C1E38 is formed by seven different steps:

  • Step 0 (801C1F40): execute regular, Sony-sanctioned antipiracy module
  • Step 1 (801C1F88): ???
  • Step 2 (801C19CC): start asynchronous read of sector 12 by calling cd_read_async at 801C1CD4
  • Step 3 (801C1FE4): read first word of read sector, and check if it is 0x00000000.
  • Step 4 (801C19CC): same as 2
  • Step 5 (801C1FE4): same as 3
  • Step 6: nothing
    If the zero check at 801C1FE4 fails, it changes the current step to 0xFF which causes the function to lock forever.

Log via softUART from my PSone:

...
GetSector 801c4800 512
GetSector 800858f8 3
GetSector 801c5000 512
GetSector 800858f8 3
GetSector 801c5800 512
GetSector 800858f8 3
GetSector 801c6000 512
CdlPause...
CdlNop...
CdlGetTN...
CdlNop...
CdlNop...
CD_init:addr=80085de0
CdlNop...
CdlReset...
CdlDemute...
IntToPos 12
CdlSetloc...
CdlSetmode...
CdlReadN...
GetSector 800858f0 3
GetSector 8016e644 585
CdlPause...

Weirdly, the device is trying to read a 2352-byte sector, instead of a 2048-byte sector as it did previously for other thousands of sectors. Any clue why could this be?

@alex-free
Copy link
Contributor

alex-free commented Dec 7, 2022

Function at 0x801C1E38 is formed by seven different steps:

* Step 0 (`801C1F40`): execute regular, Sony-sanctioned antipiracy module

* Step 1 (`801C1F88`): ???

* Step 2 (`801C19CC`): start asynchronous read of sector 12 by calling `cd_read_async` at `801C1CD4`

* Step 3 (`801C1FE4`): read first word of read sector, and check if it is 0x00000000.

* Step 4 (`801C19CC`): same as 2

* Step 5 (`801C1FE4`): same as 3

* Step 6: nothing
  If the zero check at `801C1FE4` fails, it changes the current step to 0xFF which causes the function to lock forever.

Log via softUART from my PSone:

...
GetSector 801c4800 512
GetSector 800858f8 3
GetSector 801c5000 512
GetSector 800858f8 3
GetSector 801c5800 512
GetSector 800858f8 3
GetSector 801c6000 512
CdlPause...
CdlNop...
CdlGetTN...
CdlNop...
CdlNop...
CD_init:addr=80085de0
CdlNop...
CdlReset...
CdlDemute...
IntToPos 12
CdlSetloc...
CdlSetmode...
CdlReadN...
GetSector 800858f0 3
GetSector 8016e644 585
CdlPause...

Weirdly, the device is trying to read a 2352-byte sector, instead of a 2048-byte sector as it did previously for other thousands of sectors. Any clue why could this be?

I should of probably linked this earlier:

https://consolecopyworld.com/psx/psx_game_codes_d.shtml

There are some codes which 'bypass' the anti-piracy for a i.e. DDR ReMix 2. Part of the 'append club mix 1 ' code actually applies to the base DDR ReMix 2 disc. I tried implementing all of those codes and it still even gets stuck at the same point in my fork.

The sector stuff looks fine. That's how the AP works. It tries to read data sectors as audio as part of the ap module.
From what I can tell, the AP module is basically doing this:
Go to sector 12 (which from no $ PSX SPX IIRC states is 'reserved' and entirely contains 0x00 bytes).
Read the entire RAW sector (while sending the 19'04/19'05 test CD commands to check for the spamming SCEX of a non-stealth modchip

@socram8888
Copy link
Owner

On an emulator, this is what the machine is receiving on sector 12:

IntToPos 12
CdlSetloc...
CdlSetmode...
CdlReadN...
GetSector 8016e644 585: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
CdlPause...
CD_init:addr=80085de0
CdlNop...

On real hardware, however:

IntToPos 12
CdlSetloc...
CdlSetmode...
CdlReadN...
GetSector 8016e644 585: 00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000003F13B0BE3F3F3F3F3F3F3F3F3F3F3F3F

The function at 801C1FE4 checks if at buffer+2336 is zero. If it is not, it locks up.

@alex-free
Copy link
Contributor

On an emulator, this is what the machine is receiving on sector 12:

IntToPos 12
CdlSetloc...
CdlSetmode...
CdlReadN...
GetSector 8016e644 585: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
CdlPause...
CD_init:addr=80085de0
CdlNop...

On real hardware, however:

IntToPos 12
CdlSetloc...
CdlSetmode...
CdlReadN...
GetSector 8016e644 585: 00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000003F13B0BE3F3F3F3F3F3F3F3F3F3F3F3F

The function at 801C1FE4 checks if at buffer+2336 is zero. If it is not, it locks up.

OH! So I get it I think.

A real pressed disc will have all 0x00s. A burned disc will correct EDC when burned resulting in the last bytes? Maybe?

@socram8888
Copy link
Owner

No idea, really. The data pasted has missing bytes (used "%X" instead of "%02X"), but yeah.

In an emulator, the last 16 bytes of the CD sector 12 when read in Mode 2/2352 is:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
This is what that 801C1FE4 function expects.

However, in the real, burnt CD I have, as read by the console, that area contains:
3F 13 B0 BE 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F

@alex-free
Copy link
Contributor

No idea, really. The data pasted has missing bytes (used "%X" instead of "%02X"), but yeah.

In an emulator, the last 16 bytes of the CD sector 12 when read in Mode 2/2352 is: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 This is what that 801C1FE4 function expects.

However, in the real, burnt CD I have, as read by the console, that area contains: 3F 13 B0 BE 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F

Yea that looks like EDC which is auto-generated when burning a disc. That wouldn't be there when you have a pressed CDROM.

@alex-free
Copy link
Contributor

There is some additional EDC check not being bypassed. This is actually a really smart anti-piracy measure. You can have 'invalid' EDC when you press a CDROM. Then if you rip that CDROM and burn a CDR those bytes would have been 'corrected' by the burner to the expected EDC. I think at least this is what's going on.

@socram8888
Copy link
Owner

In fact, other PS1 games I have (tested known) good BIN/CUEs for, do have in sector 12 (offset +0x776C inside the BIN) a correct EDC of 0x3F13B0BE. This one, however, does not.

And I can confirm by reading the file back with ImgBurn, that the test disc I am using has had its sector 12 EDC autocorrected, which is triggering that protection.

@alex-free
Copy link
Contributor

In fact, other PS1 games I have (tested known) good BIN/CUEs for, do have in sector 12 (offset +0x776C inside the BIN) a correct EDC of 0x3F13B0BE. This one, however, does not.

And I can confirm by reading the file back with ImgBurn, that the test disc I am using has had its sector 12 EDC autocorrected, which is triggering that protection.

So possibly forcing the EDC to not correct and burning a disc will work. I can try that.

@socram8888
Copy link
Owner

imagen
Top is original BIN/CUE, bottom is the one written and read back to/from a CD by ImgBurn.

@alex-free
Copy link
Contributor

alex-free commented Dec 7, 2022

imagen Top is original BIN/CUE, bottom is the one written and read back to/from a CD by ImgBurn.

Looks like we got it. Strange that none of the consolecopyworld codes bypassed this though from back in the day...

@socram8888
Copy link
Owner

What software did you use for your copy?

@alex-free
Copy link
Contributor

alex-free commented Dec 7, 2022

What software did you use for your copy?

I used CDRDAO, which is an open source burning program on Linux.

I know however that very old (think 1995-1996 CD burners) actually don't correct EDC data. I don't have one of those though.

I am pretty sure it's in the burners firmware itself. I need to figure out again how to disable it.

@socram8888
Copy link
Owner

I'm gonna attempt to get my hands on a CD-RW to test some different software. I am aware that can't be used on the console but should be good enough to burn with different software and read it back.

@socram8888
Copy link
Owner

By the way, you can try reading back the burnt CD you have, fire it on an emulator, and it'll get stuck on the very same screen it does now, further proving the EDC check is the real cause.

@alex-free
Copy link
Contributor

By the way, you can try reading back the burnt CD you have, fire it on an emulator, and it'll get stuck on the very same screen it does now, further proving the EDC check is the real cause.

Holly s*** yup it works now.

@socram8888
Copy link
Owner

@alex-free managed to burn a non-EDC-correct copy, or you mean reading it back?

I've already got a CD-RW from a Chinese bazaar so I'll start some experimentation with different software.

@alex-free
Copy link
Contributor

alex-free commented Dec 7, 2022

`[alex@fedora Dance Dance Revolution 2nd Remix (Japan)]$ cdrdao write --driver generic-mmc-raw --eject --speed 1 *.cue
Cdrdao version 1.2.4 - (C) Andreas Mueller andreas@daneb.de
/dev/sr0: HL-DT-ST DVDRAM GP63EX70 Rev: RF01
Using driver: Generic SCSI-3/MMC (raw writing) - Version 2.0 (options 0x0000)

Starting write at speed 10...
Pausing 10 seconds - hit CTRL-C to abort.
Process can be aborted with QUIT signal (usually CTRL-).
Turning BURN-Proof on
Enabling JustLink.
Using 16 byte P-Q sub-channel data mode.
Executing power calibration...
Power calibration successful.
WARNING: No super user permission to setup real time scheduling.
Writing lead-in and gap...
Writing track 01 (mode MODE2_RAW/AUDIO )...
Writing track 02 (mode AUDIO/AUDIO )...
Writing track 03 (mode AUDIO/AUDIO )...
Writing track 04 (mode AUDIO/AUDIO )...
Writing track 05 (mode AUDIO/AUDIO )....
Writing track 06 (mode AUDIO/AUDIO )....
Writing track 07 (mode AUDIO/AUDIO )....
Writing track 08 (mode AUDIO/AUDIO )....
Writing track 09 (mode AUDIO/AUDIO )....
Writing track 10 (mode AUDIO/AUDIO )....
Writing track 11 (mode AUDIO/AUDIO )....
Writing track 12 (mode AUDIO/AUDIO )....
Writing track 13 (mode AUDIO/AUDIO )....
Writing track 14 (mode AUDIO/AUDIO )....
Writing track 15 (mode AUDIO/AUDIO )....
Writing track 16 (mode AUDIO/AUDIO )....
Writing track 17 (mode AUDIO/AUDIO )....
Writing track 18 (mode AUDIO/AUDIO )....
Writing track 19 (mode AUDIO/AUDIO )....
Writing track 20 (mode AUDIO/AUDIO )....
Writing track 21 (mode AUDIO/AUDIO )....
Writing track 22 (mode AUDIO/AUDIO )....
Writing track 23 (mode AUDIO/AUDIO )....
Writing track 24 (mode AUDIO/AUDIO )....
Writing track 25 (mode AUDIO/AUDIO )....
Writing track 26 (mode AUDIO/AUDIO )....
Writing track 27 (mode AUDIO/AUDIO )....
Writing track 28 (mode AUDIO/AUDIO )....
Writing track 29 (mode AUDIO/AUDIO )....
Writing track 30 (mode AUDIO/AUDIO )....
Writing track 31 (mode AUDIO/AUDIO )....
Writing track 32 (mode AUDIO/AUDIO )....
Writing track 33 (mode AUDIO/AUDIO )....
Writing track 34 (mode AUDIO/AUDIO )....
Writing track 35 (mode AUDIO/AUDIO )....
Writing track 36 (mode AUDIO/AUDIO )....
Wrote 609 of 609 MB (Buffers 100% 100%).
Wrote 271950 blocks. Buffer fill min 93%/max 100%.
Writing lead-out...
Wrote 15 of 15 MB.
Flushing cache...
Writing finished successfully.
[alex@fedora Dance Dance Revolution 2nd Remix (Japan)]$ `

this booted with Tonyhax v1.4.4 Boot CD and got past the screen. Seems fully playable now.
There is some static being played in one of the audio tracks that I still need to figure out.

@alex-free
Copy link
Contributor

@alex-free managed to burn a non-EDC-correct copy, or you mean reading it back?

I've already got a CD-RW from a Chinese bazaar so I'll start some experimentation with different software.

Yea so I've managed to get this working on real hardware. Usually I would use cdrdao to burn a PSX disc like this:
cdrdao write --speed 1 --swap --eject *.cue
the --swap option reverses the endianess of audio files to make sure they are in the expected byte order, else they produce static/hiss when burning with CDRDAO on linux at least. By default, cdrdao is using the generic-mmc driver which does auto regenerate EDC data (like most other burning programs).

By instead forcing the generic-mmc-raw driver, the EDC is not regenerated and the bytes are still 00's in the exepcted place. However, the --swap option no longer does anything. Seems like a bug in cdrdao itself (maybe). I also tried doing --driver generic-mmc-raw:0x20000 and it still won't fix the audio file's endianess.

I can try simply byte swapping the audio files myself I guess, I'm not sure where to go from here with cdrdao.

I'm going to boot into Windows and mess with IMGBurn, pretty sure it does not have the 'static' issue with endianess related to audio files, and that it does allow for not regenerating the EDC.

Funnily enough, I can do this currently:
boot 'raw burned' DDR 2nd Remix disc with Tonyhax v1.4.4 Boot CD.
Once past the screen, open the drive and put in the 'non-raw burned' DDR 2nd Remix disc that gets stuck at the screen. Then CD audio of course works:)

Anyways that's getting down to the nitty gritty. But definitely was the issue. I'll let you know if IMGBurn works out or if I figure out some way to change the endianess of the audio files before buring them (getting everything finally working with just CDRDAO).

@socram8888
Copy link
Owner

Alcohol 120% is perfectly capable of burning a CD-R with those bytes zeroed, if you check "General Protected CD" when burning or dumping.

Since this is just a bad burn problem, I'll be closing the issue.

@m4x10187
Copy link

m4x10187 commented Dec 7, 2022

Nice work there, didn't know such measures were implemented.

@socram8888
Copy link
Owner

I've moved the compatibility section into a dedicated section explaining the different protection mechanisms and what software to use to properly burn such games: https://orca.pet/tonyhax/compatibility.html

@MrUNIVAC
Copy link

FWIW, I got back into DDR recently and have a 30000-model PS2 that can use tonyhax. I experienced this on my real PS with every version I tried (generally 3rd - 5th mix) but the games all work fine on the PS2. I assume it has something to do with the copy protection routines working differently.

@m4x10187
Copy link

Can you explain your findings?

@MrUNIVAC
Copy link

Sure. I have a SCPH-5501 PS1 with a modchip and a SCPH-30001 PS2 that uses FHDB and OPL, but is compatible with tonyhax. I burn all copies at 8X with ImgBurn (lowest speed available to me) but tried the Alcohol 120% method on the compatibility page for these games specifically.

On the PS1, the games would generally fail to load after selecting a menu option, or in 4th mix’s case it would fail to load the credits after an arcade mode set. With the Alcohol burn 4th mix no longer crashes after a set, but it still skips all over the place and is generally choppy in the menus. I have a brand new laser assembly in there and I think I’ve found the pot sweet spot because it loads and plays everything, EXCEPT these DDR games, pretty much without issue.

None of this stuff happens when I boot it on the PS2 with tonyhax (I use the CB4 exploit). It just runs smoothly like a regular game would and never hitches, skips, or fails to load once I swap the disc.

Let me know if you want any further details!

@alex-free
Copy link
Contributor

alex-free commented Jun 23, 2023

Sure. I have a SCPH-5501 PS1 with a modchip and a SCPH-30001 PS2 that uses FHDB and OPL, but is compatible with tonyhax. I burn all copies at 8X with ImgBurn (lowest speed available to me) but tried the Alcohol 120% method on the compatibility page for these games specifically.

On the PS1, the games would generally fail to load after selecting a menu option, or in 4th mix’s case it would fail to load the credits after an arcade mode set. With the Alcohol burn 4th mix no longer crashes after a set, but it still skips all over the place and is generally choppy in the menus. I have a brand new laser assembly in there and I think I’ve found the pot sweet spot because it loads and plays everything, EXCEPT these DDR games, pretty much without issue.

None of this stuff happens when I boot it on the PS2 with tonyhax (I use the CB4 exploit). It just runs smoothly like a regular game would and never hitches, skips, or fails to load once I swap the disc.

Let me know if you want any further details!

There's no such thing as a new laser assembly. You bought a (poorly) refurbished one labeled as new and sold by china as such (a scam).

This isn't copy protection. As long as you are burning with EDC Regeneration disabled that is.

This sounds like it's the PS1 console itself (especially because of the laser assembly). Some games are easier to read then other. And the PS2 is much better at reading CD-Rs then the early PS1 models.

@MrUNIVAC
Copy link

Well that’s a bummer. My OEM assembly does the same thing, but I know it’s starting to go - hence the replacement. At least it didn’t cost much.

@alex-free
Copy link
Contributor

alex-free commented Jun 23, 2023

Well that’s a bummer. My OEM assembly does the same thing, but I know it’s starting to go - hence the replacement. At least it didn’t cost much.

Just to make sure, you are burning these games with the CD Protected mode option on in alcohol 120% right?

I've honestly never tried to use alcohol 120% because cdrdao is free and open source and works:

https://alex-free.github.io/cdrdao

Have you tried the vertical trick:

alex-free#28 (comment)

Or refurbishing your drive properly yourself?

https://alex-free.github.io/unofficial-ps1-cd-drive-service-manual/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

5 participants