Page 1 of 1
Psikyo SH-2 - Language switches
Posted: Mon Apr 01, 2002 4:38 am
by Malice
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
Posted: Mon Apr 01, 2002 2:54 pm
by Tourniquet
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:
Code: Select all
return ((EEPROM_read_bit() << 28) | (readinputport(4) << 24));
and add a dip like
Code: Select all
PORT_START /* fake region */
PORT_DIPNAME( 0x01, 0x01, "Region" )
PORT_DIPSETTING( 0x00, "Japan" )
PORT_DIPSETTING( 0x01, "World" )
or for gunbird2:
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." )
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 ;(
Posted: Wed Apr 03, 2002 4:41 am
by Malice
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?
Posted: Wed Apr 03, 2002 10:26 am
by Tourniquet
Malice wrote:Anyway i tried the code you listed but the dip switches didn't seem to have any effect.
Did you place the dip AFTER the other dips

It needs to be the 5th port (i.e readinputport(4) ).
Malice 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?
Sorry, that's not an address. I meant the absolute value i.e
X1XXXXXXh - XFXXXXXXh return true (English), X0XXXXXXh are false (i.e. Jap)