Welcome, Guest!

Here are some links you may find helpful

Dreamcast Wince+CDDA Fix

truemaster

Well-known member
Registered
May 31, 2019
217
165
43
guys as much as i love dc scene (long live) as much as i respect those who contribute and help them any way i can. i also need to tell you this
gdrom is old even those that are in working contition how much life they have? consider your self an ode you will never look back;)
 

blackwaltz

Member
Registered
Jul 3, 2020
19
16
3
(y)yes i tried on cd and it works.More i tried your fix in another game bust a move 4 where the cdda always start from track one and repeats eveywhere, and it fixes all, play perfect.Great job man:DI will continue testing other games and posting resultscomic2.PNG
 
  • Like
Reactions: fafadou and Pitito

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
Ok I will post in the main post the games that you tested and are corrected
There are more games with problems, these are the ones that I know
Worms ARMAGEDON audio cdda works perfectly in menus, but ingame is not heard
Spirits of Speed audio cdda works perfectly in menus, but ingame is not heard
Rainbow Six audio cdda works perfectly in menus(Although sometimes you don't hear), but ingame is not heard
Armada Audio works perfect, but restarts when paused

Now I am testing in games like sega rally.
I think there is something in the original ip.bin, that when passing it to cd it doesn't work

Edit: The tests I have done with sega rally 2 are the same as with Nightmare Creatures, with ip.bin hack, original, custom ... etc
In none of them have I managed to make the tracks work

As I mentioned previously in position 2C0013D0, every time a track is played, the values of this position change.
While in cdi they always remain static
I think this is the call to the tracks

It is possible that the game when passing it to cd has information that is not loaded, such as a GD-ROM protection, or perhaps another type of protection

Perhaps a new ip.bin hacked is required for this type of wince.
Since most likely the problem is also here.
 
Last edited:
  • Like
Reactions: fafadou

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
If the audio works you may need another fix in ip.bin
 
  • Like
Reactions: fafadou

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
@FamilyGuy @darcagn @megavolt85 @SiZiOUS First of all say that I have found this in Ram inside the ip.bin, I suppose it is the boot sector that injects binhack so that a cdi is loaded, and it is in that sector where the problem may be in games like sega rally
Captura de pantalla (12).png

Specifically in the offset 2C0013D0
In this test you can see it, as you see when a track is activated this happens, while in Sega Rally copy it continues as if nothing.
Maybe modifying boot sector could correct the problem of tracks in sega rally 2 and other games of your nature.

Captura de pantalla (13).png
 
  • Like
Reactions: fafadou

FamilyGuy

2049 Donator
Donator
Registered
May 31, 2019
344
337
63
AGName
-=FamilyGuy=-
AG Join Date
March 3, 2007
Do you run bincon on the binaries?

IIRC, bincon actually moves a chunk of data around in the binary, that might explain the differences.
 

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
Yes, I have used bincon.
What bincon does is remove 800 bytes from the beginning of the wince binary and add them to the end
In ip.bin I don't think I haven't looked to see if it does something.

Keep in mind that tracks did not work with original ip.bin, but 0winceos was hacked by bincon

So what you say is possible and something should be changed
 

FamilyGuy

2049 Donator
Donator
Registered
May 31, 2019
344
337
63
AGName
-=FamilyGuy=-
AG Join Date
March 3, 2007
Yes, I have used bincon.
What bincon does is remove 800 bytes from the beginning of the wince binary and add them to the end
In ip.bin I don't think I haven't looked to see if it does something.

Keep in mind that tracks did not work with original ip.bin, but 0winceos was hacked by bincon

So what you say is possible and something should be changed
I was under the impression that it was 2048 bytes, so I guess you mean 0x800.

My point is that that operation might mess with a program if it expects a specific memory address to contain a specific routine.
 

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
Yes, sorry I meant 0x800
There may be something interfering

But maybe it can be repaired from the boot sector

@FamilyGuy Do you know what the program can be?
Do you remember my theory?
All wince like sega rally must have BGM selector in sound options

If I remember correctly virtua cop 2 the tracks are not heard either
and I think I remember that it also has BGM selector in options
 
Last edited:

blackwaltz

Member
Registered
Jul 3, 2020
19
16
3
bincon removes data from the begining,moving all information offsets up and only adds zeros to the end to make the binary stay with same size, so if information is needed to be in a specific offset it will not be there.I already try to copy the information of original 0winceos.bin to the bincon one( the last part full of zeros(that was before your fix) and it dont work my now will...
 

darcagn

Well-known member
Registered
May 30, 2019
152
190
43
dcemulation.org
AGName
darcagn
AG Join Date
May 12, 2007
bincon.exe removes 2048 bytes from the beginning of 0WINCEOS.BIN and discards those bytes. It does not fill the last 2048 with zeros, it copies the previous 2048 bytes and duplicates it at the end of the file.

Just taking a step backing and thinking about some things here for a moment. Why do we do this with bincon?

Kalisto's release of Midway's Vol. 1 was the earliest time I see someone running WinCE code, on 7/25/2000. This was using Utopia bootCD, and the 0WINCEOS.BIN was renamed 1ST_READ.BIN and they cut the first 2048 bytes and repeated the last 2048:
Today we bring you the first working Windows CE game for your DC. This works with the current boot loader and once again shows you what is possible with the current boot loader. Have fun with the first WinCE game and remember who did it first.
They also did Sega Rally 2 without CDDA on 7/27 and Nightmare Creatures 2 with CDDA on 7/28, Armada on 7/29, etc.
Meanwhile bincon was written by dopefish so that 0WINCEOS.BIN could be loaded by the Utopia Boot CD, released on 7/28, clearly he copied Kalisto's work:
usage: bincon <0WINCEOS.BIN file> <new 1ST_READ.BIN to create>
example: bincon 0WINCEOS.BIN 1ST_READ.BIN

It does what it says it does. It allows you to run DC WinCE apps withUtopia's Boot Disc v1.1.
[...]
Thanks to:
-Utopia for the boot disc; we wouldn't be here without them.
-Kalisto for cracking the first WinCE games; I couldn't have written this without that.
Kalisto did the first selfboot pirate with Katana-developed Virtua Fighter 3tb next month on 8/19/2000 and a month later on 9/19/2000 Echelon released the selfboot toolkit, designed to allow people to make non-selfboot pirate releases into selfboots. It says WinCE binaries won't need to be binhacked and mentions nothing about bincon. This makes sense because clearly Utopia bootCD pirate versions already had their binaries "bincon'ed"

So it sounds to me like:
1. The Dreamcast loads binaries differently depending on if they're Katana or WinCE games, and the Utopia only wrote their loader to load binaries Katana-style
2. Instead of writing a WinCE type loader, Kalisto modified the binary so that it would load like a Katana binary
3. When converting these Kalisto releases to selfboot with the selfboot toolkit, Echelon realized WinCE bins worked if you kept the Katana binary format and made sure it was set to Katana in the IP.BIN meta info
4. Everyone has just taken for granted that we can do bincon+Echelon IP.BIN+check Katana in IP.BIN to load WinCE binaries, thus no one ever bothered to do a disc with WinCE OS selected and WinCE IP.BIN (esp. since it needs assembly hacking to unlock the drive)?

Does anyone know what the difference is between loading with Katana OS vs. WinCE OS set in IP.BIN?
Perhaps this is causing an incorrect/unexpected memory state?
 

blackwaltz

Member
Registered
Jul 3, 2020
19
16
3
that true..the tools were made too make katana games work not wince.they were just "converted"...
 

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
The case is that in the original game those 0x800 bytes do not appear in RAM, it does not load them.
The game starts in Ram right at position 0x800 of the wince at offset 2C010000, which is just what bincon does, remove that 0x800, so that it loads into Ram at that offset.
Since if you leave it as the original 0winceos it is not found.

The case is that with the original ip.bin and with wince scrambled if it finds 0wiceos, but in Ram it comes out complete, that is with that 0x800 bytes that should not be loaded, therefore the game is not launched


bincon.exe removes 2048 bytes from the beginning of 0WINCEOS.BIN and discards those bytes. It does not fill the last 2048 with zeros, it copies the previous 2048 bytes and duplicates it at the end of the file.

Just taking a step backing and thinking about some things here for a moment. Why do we do this with bincon?

Kalisto's release of Midway's Vol. 1 was the earliest time I see someone running WinCE code, on 7/25/2000. This was using Utopia bootCD, and the 0WINCEOS.BIN was renamed 1ST_READ.BIN and they cut the first 2048 bytes and repeated the last 2048:

They also did Sega Rally 2 without CDDA on 7/27 and Nightmare Creatures 2 with CDDA on 7/28, Armada on 7/29, etc.
Meanwhile bincon was written by dopefish so that 0WINCEOS.BIN could be loaded by the Utopia Boot CD, released on 7/28, clearly he copied Kalisto's work:

Kalisto did the first selfboot pirate with Katana-developed Virtua Fighter 3tb next month on 8/19/2000 and a month later on 9/19/2000 Echelon released the selfboot toolkit, designed to allow people to make non-selfboot pirate releases into selfboots. It says WinCE binaries won't need to be binhacked and mentions nothing about bincon. This makes sense because clearly Utopia bootCD pirate versions already had their binaries "bincon'ed"

So it sounds to me like:
1. The Dreamcast loads binaries differently depending on if they're Katana or WinCE games, and the Utopia only wrote their loader to load binaries Katana-style
2. Instead of writing a WinCE type loader, Kalisto modified the binary so that it would load like a Katana binary
3. When converting these Kalisto releases to selfboot with the selfboot toolkit, Echelon realized WinCE bins worked if you kept the Katana binary format and made sure it was set to Katana in the IP.BIN meta info
4. Everyone has just taken for granted that we can do bincon+Echelon IP.BIN+check Katana in IP.BIN to load WinCE binaries, thus no one ever bothered to do a disc with WinCE OS selected and WinCE IP.BIN (esp. since it needs assembly hacking to unlock the drive)?

Does anyone know what the difference is between loading with Katana OS vs. WinCE OS set in IP.BIN?
Perhaps this is causing an incorrect/unexpected memory state?

@FamilyGuy The same thought I, who had adapted the boot katana to WinCE, and he was right.
 
Last edited:

darcagn

Well-known member
Registered
May 30, 2019
152
190
43
dcemulation.org
AGName
darcagn
AG Join Date
May 12, 2007
What happens when using the legitimate GD-ROM or GDI file? Are those 0x800 bytes loaded into memory? And perhaps the BIOS jumps past them?

What would happen if instead of truncating those 0x800 bytes from the beginning, you filled them with 0x800 bytes of NOPs instead?
Thus filling the area with actual instructions that won't crash the console, but also keeping the rest of the binary in memory?
Or putting an instruction to jump past the block?
 

Pitito

Well-known member
Original poster
Registered
Jun 19, 2019
161
159
43
AGName
pitito
AG Join Date
03/08/2015
@darcagn I just tested and wince is not loaded in ram
I will try but this time with ip.bin hacked

Edit: with ip.bin hacked the same thing happens
 
Last edited:

Make a donation