Dreamcast
What binhack does
Changes LBA Value at offset 1461904 ( 8 Bytes before CD001 string) from 6EB0 (45166) to LBA Value+166 specified during binhack.
Adds Region Codes for JAP,EUR and USA and strings for that. Adds some bootcode, probably SH4 ASM to make the GDROM accept CDRs.
What cdda does
Changes some bytes, probably SH4 ASM to enable playback of CDDA tracks.
What dahack does
Changes LBA Values at offsets 1301408,1302380 and 1461904. First 2 offsets get rewritten from 5EB0 (45150) to 9600 (150). Third offset gets rewritten from 6EB0 (45166) to LBA Value+166 specified during dahack. 3rd offset change is basically the same what binhack does.
What hack3 does
Changes LBA Values at offsets 1301408,1302380 and 1461904. First 2 offsets get rewritten from 5EB0 (45150) to LBA Value+150 specified during dahack. Third offset gets rewritten from 6EB0 (45166) to LBA Value+166 specified during dahack. 3rd offset change is basically the same what binhack does.
LBA 45000 Trick
69120000 bytes in first session will result in LBA 45000.
Fill 1st Session ISO File to 69120000 bytes with zeros
6912000 bytes = 33750 2048-byte-sectors
CORRECTION : Must be 33598 Sectors !!! = 68808703 bytes
1st Session Leadout = 11250 Sectors = 23040000 Bytes
2nd Session will start at Sector 45000
dd if=/dev/zero of=<ISOFILE> bs=1 count=1 seek=69119999
Creating & Burning DATA/DATA ISOs
1. mkisofs -l -duplicates-once -V <DISCNAME> -o <OUTPUT1.ISO> <DIRECTORY_TO_GAME_DATA> 2. cdrecord -v -multi -tao -xa <OUTPUT1.ISO> 3. cdrecord -msinfo 4. mkisofs -duplicates-once -V <DISCNAME> -o <OUTPUT2.ISO> -G <IP.BIN> -M <OUTPUT1.ISO> -C <MSINFO VALUE> <SMALL FILE FROM DIRECTORY_TO_GAME_DATA, take 1ST_READ.BIN> 5. cdrecord -v -tao -xa <OUTPUT2.ISO>
Merging track03 & track05 into one file
Create dummy file first Calculate 1185760800 - <SIZE OF track03.bin + SIZE OF track05.bin>
dd if=/dev/zero bs=1 count=0 seek=<RESULT> of=dummy.bin cat track03.iso dummy.bin track05.iso > combined.iso
This also helps when extract.exe only outputs garbage out of track03.iso along with track05.iso. This way only the combined.iso needs to be extracted.
Burning DATA/DATA CDIs
cdirip <CDIFile> <Destination Directory> cdrecord dev=/dev/sr0 -v -multi -tao -xa tdata01.iso cdrecord dev=/dev/sr0 -v -tao -xa tdata02.iso