Addin Restart routine
17 posts
• Page 1 of 2 • 1, 2
Addin Restart routine
I got aroutine in CK that give restart acces directly from main menu without getting by an ohter app, but I miss one funtion :"OSVersionAsInt". where could I get it?
I know that i's was on CK, I got it there, but I miss these routine specially
- Code: Select all
short*APP_EnableRestart(){
short*pEnableRestartFlag;
switch ( OSVersionAsInt() ){
case 0x01020000: case 0x01030000: pEnableRestartFlag = (short*)0x88006970; break;
case 0x01040000: case 0x01050000: case 0x01051000: pEnableRestartFlag = (short*)0x88006974; break;
case 0x01100000: case 0x01110000: pEnableRestartFlag = (short*)0x88006CC4; break;
case 0x02000000: pEnableRestartFlag = (short*)0x8800773C; break;
default : pEnableRestartFlag = 0;
}
if ( pEnableRestartFlag ) *pEnableRestartFlag = 1;
return pEnableRestartFlag;
}
I know that i's was on CK, I got it there, but I miss these routine specially
- SimonLothar
- Senior Member
-
- Posts: 605
- Joined: Sat Sep 15, 2012 6:59 am
- Location: Krautland ****
- Calculators: Casio fx-7400GII, Casio fx-7400GII (SH4), Casio fx-9750GII, Casio fx-9750GII (SH4), Casio fx-9860G, Casio fx-9860G SD, Casio fx-9860G Slim, Casio fx-9860GII SD, Casio fx-9860GII SD Power Graphic 2, Casio Classpad 330 plus, Casio fx-CG20, Casio fx-CG50, Casio Classpad fx-CP400
OSVersionAsInt
- Code: Select all
//
int OSVersionAsInt( void ){
unsigned char mainversion;
unsigned char minorversion;
unsigned short release;
unsigned short build;
GlibGetOSVersionInfo( &mainversion, &minorversion, &release, &build );
return ( ( mainversion << 24 ) & 0xFF000000 ) | ( ( minorversion << 16 ) & 0x00FF0000 ) | ( release & 0x0000FFFF );
}
GlibGetOSVersionInfo is legacy syscall 0x0015 (http://www.casiopeia.net/forum/downloads.php?view=detail&df_id=72).
But APP_EnableRestart has to be updated related to OSes 2.01+. I'll have a look this afternoon.
I'll be back!
- SimonLothar
- Senior Member
-
- Posts: 605
- Joined: Sat Sep 15, 2012 6:59 am
- Location: Krautland ****
- Calculators: Casio fx-7400GII, Casio fx-7400GII (SH4), Casio fx-9750GII, Casio fx-9750GII (SH4), Casio fx-9860G, Casio fx-9860G SD, Casio fx-9860G Slim, Casio fx-9860GII SD, Casio fx-9860GII SD Power Graphic 2, Casio Classpad 330 plus, Casio fx-CG20, Casio fx-CG50, Casio Classpad fx-CP400
APP_EnableRestart()
An OS-independent implementation for the legacy OSes up to 2.01 would be:
- Code: Select all
short*APP_EnableRestart(){
unsigned int ea;
unsigned int j;
short*pEnableRestartFlag;
if ( OSVersionAsInt() < 0x02020000 ){
ea = *(unsigned int*)0x8001007C;
ea += 0x0490*4;
ea = *(unsigned int*)( ea );
j = *(unsigned char*)( ea + 1 );
j *= 4;
j = ( ea + j + 4 ) & 0xFFFFFFFC;
pEnableRestartFlag = (short*)(*( unsigned int*)( j ) + 8 );
}else{
pEnableRestartFlag = 0;
}
if ( pEnableRestartFlag ) *pEnableRestartFlag = 1;
return pEnableRestartFlag;
}
I'll be back!
Re: Addin Restart routine
Any ideas for a workaround for Os 2.02?
I use GetKey and PutKey but I have to reset all variables then...
I use GetKey and PutKey but I have to reset all variables then...
- SimonLothar
- Senior Member
-
- Posts: 605
- Joined: Sat Sep 15, 2012 6:59 am
- Location: Krautland ****
- Calculators: Casio fx-7400GII, Casio fx-7400GII (SH4), Casio fx-9750GII, Casio fx-9750GII (SH4), Casio fx-9860G, Casio fx-9860G SD, Casio fx-9860G Slim, Casio fx-9860GII SD, Casio fx-9860GII SD Power Graphic 2, Casio Classpad 330 plus, Casio fx-CG20, Casio fx-CG50, Casio Classpad fx-CP400
Re: Addin Restart routine
No workaround! Just a straightthrough. Meanwhile I verified, that the scheme works for 2.02 as well.Casimo wrote:Any ideas for a workaround for Os 2.02?
You can omit the os-check-if.
Though, I added a few security-checks.
- Code: Select all
//
short*APP_EnableRestart(){
unsigned int ea;
unsigned int j;
short*pEnableRestartFlag;
ea = *(unsigned int*)0x8001007C;
ea += 0x0490*4;
if ( ea < 0x8001007C ) return 0;
if ( ea > 0x81000000 ) return 0;
ea = *(unsigned int*)( ea );
if ( ea < 0x8001007C ) return 0;
if ( ea > 0x81000000 ) return 0;
j = *(unsigned char*)( ea + 1 );
j *= 4;
ea = ( ea + j + 4 ) & 0xFFFFFFFC;
if ( ea < 0x8001007C ) return 0;
if ( ea > 0x81000000 ) return 0;
pEnableRestartFlag = (short*)(*( unsigned int*)( ea ) + 8 );
if ( ( (unsigned int)pEnableRestartFlag & 0xFF000000 ) != 0x88000000 ) return 0;
if ( pEnableRestartFlag ) *pEnableRestartFlag = 1;
return pEnableRestartFlag;
}
I'll be back!
- SimonLothar
- Senior Member
-
- Posts: 605
- Joined: Sat Sep 15, 2012 6:59 am
- Location: Krautland ****
- Calculators: Casio fx-7400GII, Casio fx-7400GII (SH4), Casio fx-9750GII, Casio fx-9750GII (SH4), Casio fx-9860G, Casio fx-9860G SD, Casio fx-9860G Slim, Casio fx-9860GII SD, Casio fx-9860GII SD Power Graphic 2, Casio Classpad 330 plus, Casio fx-CG20, Casio fx-CG50, Casio Classpad fx-CP400
Re: Addin Restart routine
At least I am not surprised. APP_EnableRestart() is not normal either.Casimo wrote:But is it normal that on the emulator 0 is returned?
I'll be back!
Re: Addin Restart routine
flyingfisch wrote:Hmm... for some reason my calc freezes when I exit the game, and I have to restart it with the reset button.
(calculator: modded fx9750)
What's wrong with APP_EnableRestart()?
17 posts
• Page 1 of 2 • 1, 2
Who is online
Users browsing this forum: No registered users and 21 guests