lito69 escribió:Yo no noto diferencias,tengo la n64 pal y ntsc, juego en una n64 ntsc actualmente (para poder ponerle el rgb) con el chip de region de la consola pal y el ed64plus a juegos pal y ntsc y no noto diferencia con la consola pal.
Jur!
Me gusta la idea, no lo había pensado. ¿No usaba el PIF el cristal para algo del refresco o sólo generaba el aleatorio y comparaba con el CIC?
Aquí hay más info del mod y pruebas:
http://assemblergames.com/l/threads/n64 ... ble.19232/El proceso de arranque de la N64:
marshallh escribió:On boot, the PIF inside the n64 starts sending a very, very long sequence of random numbers to the CIC. The PIF is always reading the response back (this is a continuous process while the N64 is turned on).
Once the PIF is happy with the values it's getting back, it releases NMI on the R4300. This causes an NMI interrupt on the cpu, and causes it to start executing code from the memory location 0xBFC00000. Because all the memory is accessed through the RCP, this small segment of memory is mapped to a small almost 2k chunk of ROM in the PIF called PIF-rom.
The code in there is r4300 executable code. The actual boot process is pretty convoluted, that's another time. But about halfway through the sequence of boot programs, the R4300 reads from PIF ram (small 64byte area) and this contains values used in the calculation of the CIC seed. (6102 seed is 0x3f)
The way a game determines whether it's running on a PAL or NTSC console is simple - it's hardcoded in the PIF rom.
If you have a logic analyzer and some tools you can put probes on the lines that go from the PIF to the RCP and catch all the contents of the pif ROM as it's read. This is the only way to get access to it, because after the boot process you will read all 0's from where the PIFrom used to be mapped.
Once you have it dumped you can look for the instruction that loads the register s4 (something like li s4, 0x01) and change it to 0x0 for PAL, and 0x1 for NTSC.
You can also use a boot emulator to do all this, but it means you have to have a way of running your own code. The boot emulator basically runs a version of PIFrom that is hacked to skip the security checks, and you patch in whatever values you want (you can fake different CICs and regions this way)
The CIC seed is also used to checksum the bootcode in the first 4k of game ROM, and to also checksum the first 1MB transferred to make sure the cart interface is reliable.
Estoy pensando en hacer pruebas lo más precisas posible y compartirlos
Encontré esta imagen sobre el proceso de arranque:
Ese esquema es de una N64 pal (15,625), ¿El valor inicial del RAC no será diferente en una NTSC?
¿Quizá un PIF de otra región haga mal esa división?
¿El MX8330 y el RPC no creerán ahora que un juego NTSC es PAL y otro PAL es NTSC? (register s4)
La información sobre el ultraCIC que comentaba
@josete2khttp://github.com/mikeryan/UltraCICload_seed:
movlw 0xFF; FIXME - use a real
seed; FIXME - replace this with a real checksum
checksum 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xb
https://github.com/saturnu/alt64/blob/m ... ils.c#L854 (este es el seed y supongo que el CHK será el get_cic)
143,145c143,145
< call main_algorithm
< call main_algorithm
< call main_algorithm
---
> call cic_round
> call cic_round
> call cic_round
149,151c149,151
< call main_algorithm
< call main_algorithm
< call main_algorithm
---
> call cic_round
> call cic_round
> call cic_round
323c323
< adc_no_carry_out
---
> adc_nocarry_out
480c480
< movlw 0xFF ; FIXME - use a real seed
---
> movlw 0x3F ; FIXME - use a real seed
538c538
< cb MACRO byte
---
> kb MACRO byte
565c565
< checksum 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb
---
> checksum 0x3, 0x6, 0xa, 0x5, 0xf, 0x1, 0xc, 0x0, 0x5, 0x9, 0xd, 0x8
source PDFNecesito grabar un PIC!
EL ED64 chino este que CHK tendrá