De todas formas, si tienes ganas, muchas ganas, algunas pistas interesantes, para no andar a ciegas:
para el checking del disco, se llama a una funcion dde la libreria llamada sceCdGetDiskType() que nos retorna un entero indicando que tipo de disco ha detectado el sistema. Antes de llamar a esa funcion se debe llamar a sceCdDiskReady() para asegurarse de ke el kernel ya sabe que tipo de disco has metido.
En este mismo hilo puse la descripcion completa de que retorna la llamada sceCdGetDiskType(), creo que era en algun mensaje donde expliqué como funciona "el bug" de Datel
Te pongo un trozo, para que veas que hace la libreria:
0000000000001938 :
1938: 27bdffd0 addiu $sp,$sp,-48
193c: ffbf0020 sd $ra,32($sp)
1940: 0c0004de jal 1378
1944: ffb00010 sd $s0,16($sp)
1948: 14400003 bnez $v0,1958
194c: 3c020000 lui $v0,0x0
1950: 1000001a b 19bc
1954: 0000102d move $v0,$zero
LABEL1:
1958: 3c040000 lui $a0,0x0
195c: 24500c80 addiu $s0,$v0,3200
1960: 248410a0 addiu $a0,$a0,4256
1964: afa00000 sw $zero,0($sp)
1968: 24050003 li $a1,3
196c: 0000302d move $a2,$zero
1970: 0000382d move $a3,$zero
1974: 0000402d move $t0,$zero
1978: 0200482d move $t1,$s0
197c: 240a0004 li $t2,4
1980: 0c000000 jal 0
1984: 0000582d move $t3,$zero
1988: 04410006 bgez $v0,19a4
198c: 3c020000 lui $v0,0x0
1990: 8c44001c lw $a0,28($v0)
1994: 0c000000 jal 0
1998: 00000000 nop
199c: 10000007 b 19bc
19a0: 0000102d move $v0,$zero
LABEL2:
19a4: 8c44001c lw $a0,28($v0)
19a8: 0c000000 jal 0
19ac: 00000000 nop
19b0: 3c032000 lui $v1,0x2000
19b4: 02031825 or $v1,$s0,$v1
19b8: 8c620000 lw $v0,0($v1)
LABEL3:
19bc: dfbf0020 ld $ra,32($sp)
19c0: dfb00010 ld $s0,16($sp)
19c4: 03e00008 jr $ra
19c8: 27bd0030 addiu $sp,$sp,48
19cc: 00000000 nop
Como puedes ver, lo primero que hace es llamar a otra función, y luego hace varias syscalls, la función scmd_prechk es tal que así:
0000000000001378 :
1378: 27bdffc0 addiu $sp,$sp,-64
137c: ffb00000 sd $s0,0($sp)
1380: ffbf0030 sd $ra,48($sp)
1384: 3c100000 lui $s0,0x0
1388: ffb20020 sd $s2,32($sp)
138c: 0c0000b8 jal 2e0
1390: ffb10010 sd $s1,16($sp)
1394: 8e04001c lw $a0,28($s0)
1398: 0c000000 jal 0
139c: 00000000 nop
13a0: 8e03001c lw $v1,28($s0)
13a4: 1462003f bne $v1,$v0,14a4
13a8: 0000102d move $v0,$zero
13ac: 3c020000 lui $v0,0x0
13b0: 3c050000 lui $a1,0x0
13b4: 8c440000 lw $a0,0($v0)
13b8: 0c000000 jal 0
13bc: 24a50008 addiu $a1,$a1,8
13c0: 0c0004c4 jal 1310
13c4: 24040001 li $a0,1
13c8: 10400005 beqz $v0,13e0
13cc: 00000000 nop
13d0: 0c000000 jal 0
13d4: 8e04001c lw $a0,28($s0)
13d8: 10000032 b 14a4
13dc: 0000102d move $v0,$zero
LABEL2:
13e0: 0c000000 jal 0
13e4: 0000202d move $a0,$zero
13e8: 3c030000 lui $v1,0x0
13ec: 8c620034 lw $v0,52($v1)
13f0: 0441002b bgez $v0,14a0
13f4: 0060902d move $s2,$v1
13f8: 1000000a b 1424
13fc: 3c110000 lui $s1,0x0
LABEL10:
1400: 2403ffff li $v1,-1
1404: 2442ffff addiu $v0,$v0,-1
LABEL5:
; un monton de NOPs
; ...
141c: 1443fffa bne $v0,$v1,1408
1420: 2442ffff addiu $v0,$v0,-1
LABEL4:
1424: 263010a0 addiu $s0,$s1,4256
LABEL9:
1428: 3c058000 lui $a1,0x8000
142c: 0200202d move $a0,$s0
1430: 34a50593 ori $a1,$a1,0x593
1434: 0c000000 jal 0
1438: 0000302d move $a2,$zero
143c: 04430015 bgezl $v0,1494
1440: 8e020024 lw $v0,36($s0)
1444: 3c020000 lui $v0,0x0
1448: 8c430010 lw $v1,16($v0)
144c: 18600005 blez $v1,1464
1450: 3c020010 lui $v0,0x10
1454: 3c040000 lui $a0,0x0
1458: 0c000000 jal 0
145c: 248400f8 addiu $a0,$a0,248
1460: 3c020010 lui $v0,0x10
LABEL7:
1464: 2403ffff li $v1,-1
1468: 2442ffff addiu $v0,$v0,-1
LABEL8: ; un monton de NOPs
; ...
1484: 1443fffa bne $v0,$v1,1470
1488: 2442ffff addiu $v0,$v0,-1
148c: 1000ffe6 b 1428
1490: 263010a0 addiu $s0,$s1,4256
LABEL6:
1494: 1040ffda beqz $v0,1400
1498: 3c020010 lui $v0,0x10
149c: ae400034 sw $zero,52($s2)
LABEL3:
14a0: 24020001 li $v0,1
LABEL1:
14a4: dfbf0030 ld $ra,48($sp)
14a8: dfb20020 ld $s2,32($sp)
14ac: dfb10010 ld $s1,16($sp)
14b0: dfb00000 ld $s0,0($sp)
14b4: 03e00008 jr $ra
14b8: 27bd0040 addiu $sp,$sp,64
14bc: 00000000 nop
... ahora ya sabes un poco a que te enfrentas, solo tienes que seguir la ejecución de las syscalls en la bios ...