the region code is in the hardware, yes, but the checking is done in the software
i believe its in VSH.prx.
I had a look myself, i was able to change the error msg etc, but i only have IDA Pro so, even tho i can change to the code to what "may" work, i cant recompile & my hex etc aint good enuf to dissassemble & rebuild the prx.
followng x86 logic tho, typically, when something was checked via software, eg, lets take a CD check for example, the software would check for a CD in drive, if it wasnt, it would report error "NO CD Found!"
the trick was to use ollydbg to trace back the message, and see what jumps to it. normally a Jump if equal to zero command. or carry on...
so if no cd was discovered, it would jump to the message otherwise it would jump further down...to get around this you would set the jumper is error to the same as if jump if found.... so the outcome would be, the app would check for a CD and if it didnt find one, it carried on as if it HAD found it.
almost like an old skool cracktro thing!!
would the same theory be worth looking into in the prx. i know it does a check and jumps if region is incorrect, or plays disc if its correct... there's gotta be a way to do it ......
like i said, i spent some time looking at this my self, but my hex editing skills aint so good in PSP stuff - i dont know enough about MIPS etc
but like i said, i found the jumps etc, i managed to get a little way, in that it appeared in the UMD list for about 1 second, but then the PSP froze completely. had to rip the battery out

... it took days to get that far, and i gave up since my know how aint that good yet lol
fingers crossed for the future tho!