Welcome, Guest!

Here are some links you may find helpful

Dreamcast Wince+CDDA Fix

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
Thanks Neo for your tests and I feel the delay but I am full of work.

For the tests that I did recently, this type of 0winceos must have some gdrom protection, and it is possible that this protection is in the file WSEGACD.DLL.
The data in this row is also housed within 0winceos.

In the CDI tests I have not managed to reproduce the tracks, the game behaves as if they did not exist
 

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
I have done new tests, this time creating gdi with different LBAs for the audio tracks and as @neo comment, the tracks work correctly.
So I think it's not an LBA problem, but some kind of cdda crash for cdrom.

@neo, could you create some kind of ip.bin that makes the hardware believe that a gdrom is running and not a cdrom?
As I have explained in previous posts bincon is not necessary, this hack removes 0x800 at the beginning of the 0winceos and adds them at the end.

And you make 0winceos truncate it works anyway just removing the 0x800 from the beginning.

However, in the gdrom that 0x800, although if it is in the original, in GDROM it does not load it in ram, which if it happens in CDI

Perhaps with a clean boot that simulates the same functions that a gdrom does, it will be possible to make the tracks play
 

neo

Well-known member
Feb 1, 2019
64
59
18
AGName
Mrneo240
AG Join Date
06/08/2010
It gets the media type from the syscalls and the hardware. I'm sure it could be patched but idk if that would be enough
 
  • Like
Reactions: Pitito

fafadou

Well-known member
Registered
Aug 16, 2019
206
119
43
AGName
fafadou
I'm terribly sorry to ask this at the eighth page of this topic.
Are you trying to find an issue to run wince games with CDDA for gdemu ? It means the cdda with gdemu and Demul don't run perfectly ?
 

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
@fafadou Most wince games do not work well for cdda on cdi.
This fix solves the problem of many of them.

Other wince however need something more
 

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
I have been doing new tests, this time with the ARMADA game, in this game the FIX does not work and the music keeps restarting when pausing the game.
I have changed the binary 0WINCEOS.BIN for that of another game in which the music does not give problems Worms World Party and the problem with the cdda persists.
In other words, if with the original ip.bin and with another winceos binary taken from another game, it still crashes, or it is a problem with the change to CDI of the game or it is a .dll or .exe from the WINCE folder that does not do its job well.

I have also discovered a way to run 0WINCEOS through a KATANA binary, thanks to the SEGA SMACK PACK game.
This game contains a KATANA executable, for WINCE games, called SAMPLE.BIN
We must apply binhack to SAMPLE.BIN together with the IP.BIN of the WINCE game, we must also apply DAHACK and CDDA hack and finally hack the values 0xCDE4436A to 0x09000900.
You don't have to do anything to the 0WINCEOS binary :)
You place SAMPLE.BIN and MAIGO.BIN (this binary does not have LBA protection, so it is not necessary to hack) in the root of the game and create the iso.
Don't forget before hacking, change the name of the executable inside the IP.BIN (0WINCEOS to SAMPLE.BIN)
Notes:

I don't know what the function of MAIGO.BIN is, but it is loaded into RAM at offset 0x2C008300.
I have also tried booting a game without using MAIGO.BIN and deleting the entry of this file in SAMPLE.BIN, and the game runs without problems.

With this method it is not necessary 3 fictitious tracks for the audio to be heard on your site, since thanks to the CDDA hack in SAMPLE.BIN the Audio starts on track 01.

Games with cdda problems are not fixed, even though 0winceos is intact,
so the problem may be in a dll or exe file as I have commented before.
Maybe it does not contain enough routines for CD-ROM, and if you have them for GD-ROM
 

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
I have done another new test, this time I have taken all the contents of the WINCE folder, and the binary 0WINCEOS.BIN of the Worms World Party game (this game does not present CDDA problems) and I have replaced it in the ARMADA game, renaming the executable ARMADA.EXE to GAME.EXE. (Name of the executable in Worms)

The game loads perfectly, but the cdda keeps restarting when paused.

My conclusions

In view of what we have seen, the problem may be due to the change from GDI to CDI format, or the safest thing that is in the executable of the game, in this case ARMADA.EXE.
This executable may need to be fixed, as is the case with many PC games.
For example the iso of the sega rally 2 version pc does not work the cdda either, and I have found this hack to make it work.

https://mega.nz/file/yQUGmR5T#Jf1uVUYTLxkzsIjJPIvTlfMpb29eXzLyqPDsPFXZFgk

Maybe this can be of help to hack these problematic games on Dreamcast.

Curiously, this hack is also used for other versions of PC, such as Virtua COP 2. Does it sound like something to you?
 

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
It's been some time since the last time I posted in this thread, but I bring news regarding the CDDA of the Armada.

As you know, this game restarts the CDDA when pausing or entering any game station.
I have located where what appears to be the Audio Summary is written to ram.
Position in Ram from the GDI (in CDI it can vary a bit)
0x8CD1629C

In this position, when you pause, the summary of cdda is saved, and when you remove the pause, it is not deleted.
The summary is saved in the CDI, but when the pause is removed it returns to 00
Captura de pantalla (311).png

Also in value 01 in position 0x8CD162B4 (A few lines below) is the one that controls the "PAUSE" of the CDDA.
If this value is changed to 00 the audio will not stop when pausing the game.

The file offset where these values are written within the Armada.exe executable
Offset
0xDF49C
0xDF4B4

EDIT:
I have managed to locate the access and write pointer in the resume position and I have been testing to see which one resets the value.
It seems that this Pointer
00 0F 22 9C
Ram
8CE9D568
Armada.exe
0x1A968
The function comes from something higher
Ram
8CE9D406
Armada.exe
0x1A806

It may be the beginning to repair the CDDA of this game in CDI :)
 
Last edited:

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
Ok, a little news
I've been trying to find a solution for the last 4 days, but I'm not an expert in this...
Perhaps @megavolt85 , @SiZiOUS , they would be the most indicated since they better control this topic

About how to repair the summary, I have no idea at the moment how to do it...
If I have been able to locate a small fix so that the CDDA does not pause when pausing the game, but when entering any station in the game the CDDA is paused again and it will restart again.
Armada.exe
0x1A7C2 = 01E3 to 00E3
0x1496 = 01E2 to 00E2

In the event that the CDDA summary cannot be fixed, this option would be ideal if you can also fix the CDDA pausing when entering game stations.
In this way the CDDA would not have a pause, with which it could be heard in its entirety and without restarts
 
  • Like
Reactions: truemaster

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
In my stubbornness to know what the problem is in this game I have located more broken functions, all related to the CDDA
I have discovered that other functions are activated by the game and that in GDI they do not occur
For example
Ram offset 8CD1629C (pointer Armada.exe 9C220F00)
This is where the summary is saved and a part of function 2b100 (Offset 0X1A806 from Armada.exe) takes care of resetting the summary (this does not happen in GDI)
Ram offset 8CD162FC
This function concerns the volume of the CDDA
When you come out of a pause the volume increases until the value 0xBE (GDI)
In CDI it is also broken, normally the value 0xC8 or 0xBE were static, there was no increase, therefore the cdda did not have that volume increase from 0x0 to 0xBE after leaving a pause or station.
Captura de pantalla (330).png

Ram 8CD16484 (pointer 84240F00 of Armada.exe)
Another function that concerns the CDDA.
When pausing it is marked in Ram as 0x01 and when unpausing it should return to 0x00 (on GDI)
In CDI it is also broken
When pausing it is marked with 0x01, but it remains static, it does not return to its 0x00 position when leaving pause
Captura de pantalla (331).png

In one of the break points that I have made, this has appeared
I don't really know what it is, but it seems like some protection

IMG-20220730-WA0006.jpeg
 

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
I just found out where the Armada summary problem is coming from and I have achieved a fix that works 90%
The problem comes from function 2b100 of the ARMADA.EXE file.
This function makes a call to function 2af34 from a pointer which must be disabled in armada.exe offset
0x1A348 change to 0900
0x1A360 change to 0900
Once I did this, I focused on the 2b100 function and by modifying the position of 2b140, the summary began to work almost perfectly, it only does a reset the first time you pause. (When entering a planet the cdda is restarted, this also happens in the GDI, and also counts as the first pause, in this case)
In the first changes the summary worked 100% without counting that first pause, but at some point and for no reason I got a reset, and always in the same period of time, until I found a value which seems to work well, although that first pause is still resisting...
Armada.exe offset
1A540 change to 7F70

Making these 3 changes you get a 90% summary.
As I have mentioned, it does not work with that first pause and when you pause the CDDA it will take a while to be played again.
But once this is over, the game will have a summary in the following pauses, in the star stations, when changing the zone of space and when dying.
I was testing it for more or less a little over an hour in the emulator and there didn't seem to be any problems


Edit: The first pause does not make a reset as I had commented, it makes a summary of about 30 seconds later, that's why when pausing as soon as the game started it seemed to be a reset

Maybe @megavolt85 or @SiZiOUS can improve this fix to a definitive one, since we already know where the problem lies
 
Last edited:
  • Like
Reactions: FamilyGuy

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
Video seeing how hack works summarizes in Armada of a burned CDI image.



I've edited the main post with the hack, and one less on the list :)
 
  • Like
Reactions: FamilyGuy

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
Well, once the Armada was finished I started to investigate the CDDA problem of SEGA RALLY 2 V.1.004 JAP, since this is the best version of the game.
If you remember in a later post, I explained a bit about the problem of CDDA in RAM in CDI versions at offset 0x8C0013D0, and that said CDI version acted as if there was no CDDA.
You can see it here

I have found what may be the root of the problem in the MGAMEAUDIO.DLL file.
Apparently this row handles all the CDDA in the game, and when I override certain functions in GDI I get the same problem as in CDI.
The GDI behaves as if there were no CDDA and writes the same parameters to RAM offset 0x8C0013D0 as the CDI.

MGAMEAUDIO.DLL
Cancel function call 10002298
offset
0x8CA to 0900
0x8DA to 0900
Causes the same problem as the CDI

Cancel function call 10002478
offset
0x8EA to 0900
0x8F8 to 0900
Causes the same problem as the CDI

Image
Captura de pantalla (341).png

MGAMEAUDIO.DLL
Cancel function call 100022A4
offset
0x94E to 0900
0x964 to 0900
Causes the same problem as the CDI

Image

Imagen
Captura de pantalla (342).png

MGAMEAUDIO.DLL
Cancel function call 100022A4
offset
0xBFC to 0900
0xC16 to 0900
Although it is the call to the same function, from this offset the values in RAM 0x8C0013D0 do not adjust well, activating the audio track but not activating the value 0x03 explained in a previously written post and that I have left you above.
Therefore, the CDDA does not work.

Image
Captura de pantalla (340).png

Assuming all this, this file may be the solution for sega rally 2 to have CDDA in CDI versions, now that we know what file is in charge of making CDDA work.
 
  • Like
Reactions: fafadou

Make a donation