daraku:0:06000004:01:000:disable Japanese subtitle
gunbird2:0:06040004:01:000:english language
s1945ii:0:06000004:01:000:english language
sbomberb:0:06000004:01:000:english language
soldivid:0:06000004:01:000:english language
Psikyo SH-2 - Language switches
-
- Posts: 163
- Joined: Wed Sep 19, 2001 1:00 am
- Location: UK
- Contact:
D'oh, I found them last week.
I've spent the intervening time working out how it all works.
You've probably spotted that it does a TST #0F against a value read from the EEPROM address to determine whether to clear 6000004/6040004 or not.
i.e the lower 4 (or 3 for soldivid) bits of MSB32 of 5800004.
change line 167 to:
and add a dip like
or for gunbird2:
You wouldn't believe how long I spent tracing R13 (or whichever) on and off the stack to only realise that it's never initialised and probably a compiler optimisation ;(
I've spent the intervening time working out how it all works.
You've probably spotted that it does a TST #0F against a value read from the EEPROM address to determine whether to clear 6000004/6040004 or not.
i.e the lower 4 (or 3 for soldivid) bits of MSB32 of 5800004.
change line 167 to:
Code: Select all
return ((EEPROM_read_bit() << 28) | (readinputport(4) << 24));
Code: Select all
PORT_START /* fake region */
PORT_DIPNAME( 0x01, 0x01, "Region" )
PORT_DIPSETTING( 0x00, "Japan" )
PORT_DIPSETTING( 0x01, "World" )
Code: Select all
PORT_START /* fake region */
PORT_DIPNAME( 0x03, 0x01, "Region" )
PORT_DIPSETTING( 0x00, "Japan" )
PORT_DIPSETTING( 0x01, "International Ver A." )
PORT_DIPSETTING( 0x02, "International Ver B." )
I actually didn't dig much into the eeprom routines i've never traced through SH-2 code before so some things were foreign to me. Besides you piped up before i got too deep into it.
Its kind of funny i realized later if i had looked through the driver a bit closer i could have saved some tracing time. The DRIVER_INIT had the eeprom read buffer address ?
Anyway i tried the code you listed but the dip switches didn't seem to have any effect.
Oh BTW you list 0x0F000000 as the address that it tests the region against
i take it that's i/o as isn't that outside of the mapped rom or ram space?

Its kind of funny i realized later if i had looked through the driver a bit closer i could have saved some tracing time. The DRIVER_INIT had the eeprom read buffer address ?
Anyway i tried the code you listed but the dip switches didn't seem to have any effect.
Oh BTW you list 0x0F000000 as the address that it tests the region against
i take it that's i/o as isn't that outside of the mapped rom or ram space?
-
- Posts: 163
- Joined: Wed Sep 19, 2001 1:00 am
- Location: UK
- Contact:
Did you place the dip AFTER the other dipsMalice wrote:Anyway i tried the code you listed but the dip switches didn't seem to have any effect.

Sorry, that's not an address. I meant the absolute value i.eMalice wrote:Oh BTW you list 0x0F000000 as the address that it tests the region against
i take it that's i/o as isn't that outside of the mapped rom or ram space?
X1XXXXXXh - XFXXXXXXh return true (English), X0XXXXXXh are false (i.e. Jap)