Bak 7001 - Rotacionar tela em 90° para rodar Jogos

Mensagem
Autor
Roberttobr
Mensagens: 6
Registrado em: 11 Dez 2009, 23:00
Localização: Valparaíso de Goiás

Bak 7001 - Rotacionar tela em 90° para rodar Jogos

#1 Mensagem por Roberttobr »

Como não consegui instalar o Miopocket em meu Bak-7001, resolvi fazer meu próprio menu, que já está com o layout finalizado e rodando o navegador Igo. A parte crítica está sendo fazer os games rodarem. Os mais simples como o Solitare rodam perfeitamente, Porém, não estou conseguindo rotacionar a tela em 90° para rodar jogos como o Pipes e GameBox, por exemplo. Quando o ícone Pipes é pressionado dá o seguinte erro: Die datei ist leer oder nicht im unicode format (O arquivo está vazio ou não em formato Unicode). Para teste salvei o script (Pipes.mscr) no formato Unicode e erro passou a: SystemInformation - Ignoriere unbekannten (ignorado desconhecido). Pesquisei alguns fóruns e não encontrei a solução. Nos fóruns nacionais achei pouca matéria relacionada a scripts. Você pode me ajudar?

Disposição das pastas na raiz do meu cartão SD:

veja em "Anexos" (abaixo).

Comando no arquivo Games.ini, que chama o script "Pipes.mscr" quando o ícone Pipes é pressionado:

#--------------------[Icon01]
ICONXPBUTTON
x = 15
y = 65
#NewIni = ..\..\Scripts\Pipes.mscr
Command = \StorageCard\GPSMenu\Scripts\Pipes.mscr
SizeNormal = 40
SizePushed = 30
ScaleAlpha = 100
IconNormal = ..\Icons\Pipes.ico
ScaleAlpha = 80
IconPushed = ..\Icons\Pipes.ico

Conteúdo do arquivo Pipes.mscr:

Errorlevel ("off")
Rotate 90
RunWait ("\StorageCard\GPSMenu\Programs\Games\Pipe.exe")
Rotate 0


P.S.: Tenho os programas “RotateCE4”, “RotateLeft”, “ScreenRotate”.
Você não está autorizado a ver ou baixar esse anexo.


Bak Japan GPS7001 - WinCE 4.2 NET - IGO 8.3.4.102680
Android: iGO primo 9.6.29.427562

Roberttobr
Mensagens: 6
Registrado em: 11 Dez 2009, 23:00
Localização: Valparaíso de Goiás

Re: Bak 7001 - Rotacionar tela em 90° para rodar Jogos

#2 Mensagem por Roberttobr »

Respondendo a mim mesmo...

Resolvi o problema da seguinte forma:

a) Sobre os erros que estavam ocorrendo:

Não encontrei material em sites da linguagem portuguesa que me ajudasse, mas em inglês, descobri o seguinte:
- No meu arquivo Game.ini, o comando para fazer a chamada ao script pode ser feita tanto utilizando “NewIni” quanto “Command”. A diferença é que no primeiro comando deve ser informado o caminho absoluto do programa a ser executado, enquanto o outro, pode ser informado o caminho relativo. No meu caso foi informado o caminho relativo. Em ambos os casos não se deve informar o comando ShutDownAnimation. Este é designado para a chamada de arquivos .ini, para habilitar ou desabilitar efeitos no fechamento da tela.

Exemplo:
#[Icon01]
ICONXPBUTTON
x = 15
y = 65
SizeNormal = 40
SizePushed = 30
ScaleAlpha = 100
IconNormal = ..\Icons\Pipes.ico
ScaleAlpha = 80
IconPushed = ..\Icons\Pipes.ico
NewIni = ..\..\Scripts\ScriptPipes.exe


Caminho Absoluto: "NewIni = \StorageCard\GPSMenu\Scripts\ScriptPipes.exe"

- Os arquivos de script devem ser salvos no formato ANSI, e não em Unicode, como suspeitei;

b) Solução:

- Observe que no exemplo acima não foi informado ScriptPipes.mscr, pois não consegui fazê-lo rodar diretamente. A solução foi colocar uma cópia do arquivo AutoRun.exe (arquivo do tipo MortRunner que vem com o MortScript) , na pasta de scripts, renomeado-o a ScriptPipes.exe;

Conteúdo do ScriptPipes.mscr
Errorlevel("off")
CallScript(ScriptsFolder\"OrientationToggle.mscr",GamesFolder\"Pipes.exe"):


- Para complementar, note que a chamada CallScript, acima, executa o script primeiramente “OrientationToggle.mscr” (que altera a orientação da tela de landscape para portrait, e vice-versa), para depois executar o game. Estes arquivos estão localizados na pasta de scripts do MioPocket. OrientationToggle.mscr faz referência a Variables.mscr, arquivo que contém as variáveis do programa, dentre elas “ScriptsFolder” (CallScript(ScriptsFolder\"OrientationToggle.mscr",GamesFolder\"Pipes.exe").

Copie também estes dois arquivos OrientationToggle.mscr e Variables.mscr, para sua pasta de scripts.

Conteúdo (alterado) de OrientationToggle.mscr:
ErrorLevel("off")
Include("Variables.mscr")
Call("Variables_Install")
##############

#Assign the first parameter to variable App, which designates the application that will be run after the screen orientation is switched to portrait.
app = argv[1]

If(Screen("landscape"))
Call("SetPortrait")

#If the screen in still in landscape mode (i.e. rotation did not work), run MoveWindow.exe
If(Screen("landscape") and not ProcExists("MoveWindow.exe"))
Run(ProgramsFolder\"MoveWindow.exe")
EndIf

#If an application was supplied as a parameter, run it, wait for it to exit, then rotate back to landscape
If(app ne "")
RunWait(app)
If(ProcExists("MoveWindow.exe"))
Kill("MoveWindow.exe")
EndIf
Call("SetLandscape")
EndIf
Else
#If an application was supplied as a parameter, run it; otherwise, rotate back to landscape
If(app ne "")
Run(app)
Else
Call("SetLandscape")
EndIf
EndIf

Sub SetPortrait
#CE 4.x does not support MortScript's Rotate() command
If(CeVersion = 4)
RunWait(ProgramsFolder\"RotateCE4.exe")
Else
Rotate(90)
EndIf

#RunWait(ProgramsFolder\"Rotate (90)")

#Set the work area of the screen to the full screen
Run(ProgramsFolder\"SetFullscreen.exe")

#Get the active window

AW = ActiveWindow()

#Message("AW = " & AW = ActiveWindow())

#Maximize window

If(app eq "" AND AW ne "" AND AW ne "MainShell" AND AW ne "MortScript")
Run(ProgramsFolder\"TroNik\WindowMove.exe", """" & AW & """ " & 0 & " " & 0 & " " & ScreenWidth() & " " & ScreenHeight())
EndIf

#Refocus the original program
If(AW ne "" AND AW ne "MainShell" AND AW ne "MortScript")
Show(AW)
EndIf
EndSub

Sub SetLandscape
#CE 4.x does not support MortScript's Rotate() command
If(CeVersion = 4)
RunWait(ProgramsFolder\"RotateCE4.exe")
Else
Rotate(0)
EndIf

#Set the work area of the screen to the full screen
Run(ProgramsFolder\"SetFullscreen.exe")

#Get the active window
AW = ActiveWindow()

#Maximize window
If(app eq "")
Run(ProgramsFolder\"TroNik\WindowMove.exe", """" & AW & """ " & 0 & " " & 0 & " " & ScreenWidth() & " " & ScreenHeight())
EndIf

#Refocus the original program
If(AW ne "" AND AW ne "MainShell" AND AW ne "MortScript")
Show(AW)
EndIf
EndSub


Conteúdo (alterado) de Variables.mscr:

#Variables calls all other subroutines to retrieve all available variables. This is handy if you don't know or care which subroutines you need, as well as to not require changes to any existing scripts.
Sub Variables
Call("Variables_Common")
Call("Variables_Install")
EndSub

#Variables_Common contains variables that all scripts and all other subroutines should have
Sub Variables_Common
If(not Called_Variables_Common)
CeVersion = SystemVersion("major")
Drive = "\"&Part(SystemPath("ScriptPath"),"\",2)
InstallFolder = Drive\"GPSMenu"
ProgramsFolder = InstallFolder\"Programs"
GamesFolder = InstallFolder\"Programs\Games"
ScriptsFolder = InstallFolder\"Scripts"
SkinFolder = InstallFolder\"Skin"
SystemFolder = InstallFolder\"System"
WindowsFolder = InstallFolder\"Windows"
Called_Variables_Common = TRUE
EndIf
EndSub

#Variables_Install contains variables that are needed only during installation and uninstallation
Sub Variables_Install
If(not Called_Variables_Install)
Call("Variables_Common")
Called_Variables_Install = TRUE
EndIf

#If SD-free installation, get the name of the SD card from the registry
If(DirExists("\StorageCard"))
SDDrive = "\StorageCard"
Else
SDDrive = "\StorageCard"
EndIf

If(SDDrive eq "" OR IsEmpty(SDDrive))
SDDrive = Drive
EndIf
EndSub


- Se der erro por falta de algum arquivo, identifique-o através da mensagem de erro, copie-o da pasta "MioPocket\Programs" e cole na pasta "\StorageCard\GPSMenu\Programs" do skin.

- A fim de evitar erros que sempre nos desanimam, pois MortScript não tem um debuggador, preste bastante atenção aos caminhos e a ortografia informados nos comandos;

- Como paliativo para encontrar erros em scripts, você pode adotar a exibição de variáveis através do comando Message( <text>[,<title>] );
Os comandos para o MortScript estão no arquivo commands.txt que acompanha o programa;

- Atente para o fato que o meu skin foi colocado na pasta "GPSMenu". O seu pode estar em uma pasta diferente;

P.S.: o Meu “BakPocket@” já está quase pronto.
Você não está autorizado a ver ou baixar esse anexo.


Bak Japan GPS7001 - WinCE 4.2 NET - IGO 8.3.4.102680
Android: iGO primo 9.6.29.427562

Responder Exibir tópico anteriorExibir próximo tópico

Voltar para “BAK”