Related
Hello, there!
I've found one bug in each of reg2fdf.pl and tounicode.
reg2fdf
reg2fdf.pl does not copy registry paths which contain no values to the resulting fdf file. For example the key "HKLM/Software/Microsoft/Windows Media Player 8/Button Map" is empty by default in my ROM (O2 GER 3.19.01), but needs to be present in the registry for Media Player to start up.
A workaround (which currently runs on my machine) is, to create an empty key=value pair for each path. This, however, increases the size of the fdf file by about 20KB, since every path gets this dummy key. The solution would be to detect paths with no keys and to add this dummy key only to those.
tounicode
tounicode uses signed chars and shorts to do the conversion. This makes it impossible to convert ASCII characters greater than 0x7F since they are treated as negative values. The German "ü" (ASCII: 0xFC) becomes some strange unicode character (0xFCFF).
The solution is to use unsigned types and do an implicit typecast to char where necessary.
HTH,
Christian
thanks,
fixed now in http://nah6.com/~itsme/download/mkrom_136.zip
Does any one out there know how to edit the .exe files so that I can turn them into VGA (96dpi) for the Uni?
I have tried with the Camera and WLanMgr modules and neither of them seem to work so I don't know what I am doing wrong.
I have tried PE Explorer, XN Resource Editor and Resource Hacker but none of them seem to work. Is there any sort of builtin checksum or protection.
Thanks in advance,
Pug
I think Visual Studio is the best resource editor for this job.
However, examine Azhad's work on fixed VGA apps, he did great work.
From memory, you have to create a new resource dll and sign it. But I'm not sure, I got for less direct routes personally.
V
pug said:
Does any one out there know how to edit the .exe files so that I can turn them into VGA (96dpi) for the Uni?
I have tried with the Camera and WLanMgr modules and neither of them seem to work so I don't know what I am doing wrong.
I have tried PE Explorer, XN Resource Editor and Resource Hacker but none of them seem to work. Is there any sort of builtin checksum or protection.
Thanks in advance,
Pug
Click to expand...
Click to collapse
I am using Tweaks2k2 always, the VGA hack is built in there. You just have to browse for the .exe file and click a button to apply "VGA brute force".
pug said:
Does any one out there know how to edit the .exe files so that I can turn them into VGA (96dpi) for the Uni?
I have tried with the Camera and WLanMgr modules and neither of them seem to work so I don't know what I am doing wrong.
I have tried PE Explorer, XN Resource Editor and Resource Hacker but none of them seem to work. Is there any sort of builtin checksum or protection.
Thanks in advance,
Pug
Click to expand...
Click to collapse
DPI aware applications just check in the registry which DPI is used.
QVGA Pocket Pc, 176 x 220 Smartphone & 240x240 Pocket PC have a resolution of 96 dpi.
VGA Pocket Pc & 480x480 Pocket Pc have a resolution of 192 dpi.
QVGA Smartphone has a resolution of 131 dpi.
This info can be found in MSDN (Windows Mobile Version 5.0 SDK, High DPI Display)
Windows Mobile Version 5.0 SDK, User Interface layout:
UI elements whose positions and sizes are specified in pixel coordinates that assume 96-DPI will be incorrect in high DPI. In general, all UI elements should be laid out using scaled positions and sizes, or relative to controls, fonts, or system metrics.
The GetDeviceCaps Windows CE-based function can be used to obtain a display's DPI by passing in either LOGPIXELSX or LOGPIXELSY as the second parameter. The CrosswordSample demonstrates how you can define SCALEX and SCALEY macros to apply a scaling factor based on information from GetDeviceCaps.
You can continue to work in pixels but remove assumptions about the DPI by:
Using the SCALEX and SCALEY macros to scale 96-DPI pixel coordinates, or using the metrics returned by GetSystemMetrics.
Expressing sizes or positions relative to other controls.
Expressing sizes or positions relative to a font.
Dialog boxes already use font sizes to determine their layout, so typically they need no special modification to work on high-DPI devices.
Here is an example of positioning a window with DPI awareness, where x, y, dx, and dy are pixel coordinates in 96-DPI:
SetWindowPos(hwnd, NULL, SCALEX(x), SCALEY, SCALEX(dx), SCALEY(dy), SWP_NOZORDER);
If you choose to scale 96-DPI pixel metrics, be aware of rounding problems when using integers. For example, SCALEX(a + b) may not equal (SCALEX(a) + SCALEX(b)) because of rounding issues.
For drawing lines or images and icons, the same should be applied.
So even if you change the size of the resources, the application will try to find and scale the image with the dpi found in the registry.
The dpi values are stored under:
HKLM/System/GWE/Display
Cheers,
.Fred
Thanks for the info guys,
Just read it so will shoot off and have a look at all the info and see which works best for me.
Once again, thanks.
Pug
Battery
I'm 200% sure the battery is gone, b'coz i faced the same problem with my Dopod 900. Strange, it was just 4 months old and the battery just gone.
I replaced it by warranty, but I was privately told there was a problem in some deliveris with battery
Hi all,
I've noticed that my TT7 still ran a little behind with occasional lag as per the Raphael (but nowhere near as bad)
Thought I would start a new thread for those of thus that experience this to list there tweaks/changes and radio versions so that we can keep track of this.
When posting, please state
Radio Stack currently using
Navigation software and version
Tweaks applied.
Mine are as follows
Rom Version : 1.19.401.0 (51489) WWE
Radio Stack : 3.44.25.27
Protocol Version : 61.25t.25.19U
Nav System : TT 7.910.9185
Tweaks applied.
HKLM\System\CurrentControlSet\GPS Intermediate Driver\
Deleted Data for current and old log files
HKLM\System\CurrentControlSet\GPS Intermediate Driver\Drivers\
InputBufferSize dropped to 1024 (DEC)
OutputBufferSize dropped to 1024 (DEC)
HKLM\System\CurrentControlSet\GPS Intermediate Driver\Drivers\GPSOneDevice\
PollInterval dropped to 100 (DEC) this is MilliSeconds
Hope this helps others.
Cheers,
Beasty
Thanks! Will definitely try these once I get the chance to actually test the GPS while moving about, at least if it seems there's still some GPS-lag in this shiny-new-monster-of-a-phone
I have added the above info to the Wiki, as this thread will soon dissappear into the ether.
The Rhodium forums are starting to pick up pace now
Cheers,
Beasty
How did your tweaks improve the lag on the tp2 ?
I did not tweak yet. TOMTOM 7 runs reasonably... the lag in IGO can be up to 40 metres. Will your tweaks improve IGO also ( and google maps for example )??
Regards
It should work for any Nav app, as the reg entries modify the intermediate MS driver config.
Reducing the buffer sizes should reduce lag, I was 10 metres behind actual location on stock settings and am now approx 2 metres to spot on depending on speed and road type. (ie twisty country lanes not as accurate as straight roads)
Cheers,
Beasty
this may saound really stupid but what do you actually mean by
Deleted Data for current and old log files
Click to expand...
Click to collapse
do you mean delete the entries entirely in the registry or or delete the valuse of the entery or empty the files they point to. Sorry for being stupid
i'm stupid too .... i also like to know
everybody will stuck with stoopidity if they just waiting for people feed them. how about a few secs to search & discover the registry key path.
there are two registry strings under the given key.
"CurrentLogFile"=""
and
"OldLogFile"=""
btw this is a known hack for raphael & kaiser also but may not needed with different gps apps.
EEEEEH ..... if you would read correctly ... you should have figured out that was not the question.
Offcourse I have found the entries. The question was about what to do with them:
1) deleted the complete registry key
2) delete the value \windows\gpslogfile.txt
i read correctly even my english is not perfect
shown above is what it should be.
monx® said:
i read correctly even my english is not perfect
shown above is what it should be.
Click to expand...
Click to collapse
Hi Monx,
Nice to see you here.
I was a big fan of yours in Raphael
Will you be developing for Rhodium too?
Cheers,
Beasty
Hi friend, sure (but still too early & hspl still not available yet). Stock ROM is just fine as there are many improvements & more user friendly. Thanks.
A. With Advanced config nel menu GPS
disable A-GPS
disable GPS logging
logfile name must be empty
old logfile name must be empty
maximum size of logfile must be 0
delete the files :
\windows\GPSLogFile.txt and \windows\GPSLogFileBack.txt
With those changes car usage will be quite perfect
B. Then edit registry
Under: HKLM\SYSTEM\CurrentControlSet\GPS Intermediate Driver\
Drivers\GpsOneDevice\PollInterval -> 100 (default is 1000)
Drivers\InputBufferSize -> 512 (default is 4096)
Drivers\OutputBufferSize -> 512 (default is 4096)
Drivers\SleepOnNoData -> 100 (default is 1000)
Multiplexer\MaxBufferSize -> 512 (by default not present, you have to create it)
With those tweaks pedestrian usage will be much better but not perfect.
I NEVER had a faster fix . even after a reset it won't take more then 10 secs to get a good signal in tomtom / igo 8 / google maps. Huge improvement
I noticed the position is a bit of in google maps but i'm testing from my window ( so not sure how it is with movement ). I will test that tomorrow in my car.
@dgh
mate, sorry to ask. how about QuickGPS. Have valid data or u didnt update it? It helps me a lot to get fix with Garmin Mobile XT & Mapking R12 Diamond edition (just for info).
sure i have downloaded that. the problem was however that the fix (after reset ) could take rather long ( well not as long as my tytn 2 .... so whats long )
after the tweak the thing that takes longest is to start the gps (tomtom says no gps for a few secs ) . when the gps came online i have almost an instant fix.
beast0898 said:
Hi all,
I've noticed that my TT7 still ran a little behind with occasional lag as per the Raphael (but nowhere near as bad)
Thought I would start a new thread for those of thus that experience this to list there tweaks/changes and radio versions so that we can keep track of this.
When posting, please state
Radio Stack currently using
Navigation software and version
Tweaks applied.
Mine are as follows
Rom Version : 1.19.401.0 (51489) WWE
Radio Stack : 3.44.25.27
Protocol Version : 61.25t.25.19U
Nav System : TT 7.910.9185
Tweaks applied.
HKLM\System\CurrentControlSet\GPS Intermediate Driver\
Deleted Data for current and old log files
HKLM\System\CurrentControlSet\GPS Intermediate Driver\Drivers\
InputBufferSize dropped to 1024 (DEC)
OutputBufferSize dropped to 1024 (DEC)
HKLM\System\CurrentControlSet\GPS Intermediate Driver\Drivers\GPSOneDevice\
PollInterval dropped to 100 (DEC) this is MilliSeconds
Hope this helps others.
Cheers,
Beasty
Click to expand...
Click to collapse
tried these but just keep getting access denied
combat goofwing said:
tried these but just keep getting access denied
Click to expand...
Click to collapse
What do u mean mate? access denied changing registry? which app u use? totalcmd is a good freeware (for PPC).
using ceregeditor
u may use this. pre-configured cab inside the zip.
Browse the \\Plugins folder.
beast0898 said:
Hi all,
I've noticed that my TT7 still ran a little behind with occasional lag as per the Raphael (but nowhere near as bad)
Thought I would start a new thread for those of thus that experience this to list there tweaks/changes and radio versions so that we can keep track of this.
When posting, please state
Radio Stack currently using
Navigation software and version
Tweaks applied.
Mine are as follows
Rom Version : 1.19.401.0 (51489) WWE
Radio Stack : 3.44.25.27
Protocol Version : 61.25t.25.19U
Nav System : TT 7.910.9185
Tweaks applied.
HKLM\System\CurrentControlSet\GPS Intermediate Driver\
Deleted Data for current and old log files
HKLM\System\CurrentControlSet\GPS Intermediate Driver\Drivers\
InputBufferSize dropped to 1024 (DEC)
OutputBufferSize dropped to 1024 (DEC)
HKLM\System\CurrentControlSet\GPS Intermediate Driver\Drivers\GPSOneDevice\
PollInterval dropped to 100 (DEC) this is MilliSeconds
Hope this helps others.
Cheers,
Beasty
Click to expand...
Click to collapse
thanks the new TC works great, i have altered the bottom 3 but still not sure what i should be deleting or adding to log files so i have left them alone for now
In order to relase even more RAM, after having applied the NoPushInternet Cab, PPCGeeks suggested to set the reg key ShareMemSize to 0 (this key can be found at HKLM/Software/HTC/ResProxy). This worked for me very well on my TP2 with WinMo 6.1 and "old" TF3D 2.1.
After upgrading to WinMo 6.5 and the "new" HTC Sense 2.1 it does not work as well anymore. You can set this value to 0, but the key regenerates its old value every time after a soft reset. Between resets it works fine.
Does someone know a way/reg hack to keep the ShareMemSize value at 0 at all times?
It's worthwhile finding this out because my TP2 with WinMo 6.5 boots up with merely 40% of RAM usage. Without this tweak its about 48-50%.
regards, Kuzibri
nobody has an idea/suggestion?
is it safe to delete this key??
I suspect the CM_Guardian service is setting it back. I'd disable that service and see if it helps.
thanks for your answer, but where do I find this service and what does it do?
From Topaz thread :
http://forum.xda-developers.com/showthread.php?t=584288&page=1
it works with the official upgrade from HTC.
thanks, but is was me who "invented" this reg tweak and also found out, later, that this reg key regenerates itself over time, at least on the TP2. Don't know how this key behaves on other devices/
Just a FYI, don't know if it was this way before but I after installing your CAB as well as SSK TP2 Dynamic Resource Proxy.cab I found off PPG on my new TP2, I found this already set to 0 and I would assume is staying there.
No cooked ROM though.
But perhaps the SSK is doing this and might keep it that way on one?
Also to note, I do have HD Tweak installed with all it performance setting set to max though, perhaps that did it?
kuzibri said:
thanks, but is was me who "invented" this reg tweak and also found out, later, that this reg key regenerates itself over time, at least on the TP2. Don't know how this key behaves on other devices/
Click to expand...
Click to collapse
It is working fine with official WM6.5 - after dozens of soft-resets it is still in place.
The figures right after soft reset are as following: 187.41MB available in total, 61.24MB (thus 33%) allocated and 126.17MB free for applications.
I do use native WM6.5 interface without TouchFlo etc, unbranded European TP2.
I would agree then with colleagues arguing, there is registry protection mechanism applied and restoring it to its original state.
Hey,
Currently I've been working on a game for the Windows Phone but a couple things have really irritated me during porting, one of which is they don't allow custom GPU programs...which is very stupid considering there basiceffect class is completely useless.
The Windows Phone has some awesome hardware and it sucks that its being restricted by the dev team.
So right now I'm looking at microsoft.xna.framework.graphics in reflector(the GAC version not the reference version). The effect class itself is NOT marked as security critical, but the constructor is(because it requires compiled GPU bytecode to be passed down), so the logical why would be to load it via the contentmanager, but the damn thing spits out("You are unable to compile custom effects for winphone7).
My question is does anyone know where that error is actually located?
It looks like XNA is using a custom content importer to import some kind of template called "BasicEffectReader" , and "BuiltInEffectReader" . I don't know if I'm allowed to post reflected code on here, but if you open up BasicEffectReader.cs youll find that it creates a "cloned effect" from the BuiltInEffectReader.
My other questions are, is the bytecode for Windows Phone 7 different from the 360/Windows(I'd assume so), and if so is XNA actually compiling bytecode on the fly, is it using a template for basiceffect?
If it is requires its own bytecode, what kind of methods do you guys think would be feasible to be able to create custom effects? The graphics card on the phone should follow the DX9 specs, unless its a 9.5 hybrid like the 360.
EDIT3:
Alright it looks like if you compile it on another platform, strip out the contentmanager stuff at the start of the file, it will load(passes all the header checks) but it fails because UnsafeNativeMethods.Effect.GetGlobal(graphicsDevice).CreateEffect(pEffectCode, ((uint) effectCode.Length) - num2, graphicsDevice.pComPtr, out effect_desc); returns a invalid handle...
Very surprised they don't let you use custom GPU shader programs.
Yeah I know :/ anyway I kind of got a custom program loaded, but I'm not sure about the OpCodes, so I don't know how to customize it yet.
_effect = new Effect(device, Code);
static byte[] Code = new byte[] {
0xcf, 11, 240, 0xbc, 12, 0, 0, 0, 0, 0, 0, 0, 1, 9, 0xff, 0xfe,
0x62, 0x61, 0x73, 0x69
};
Click to expand...
Click to collapse
First Int(4 bytes) are the XNA header magic number,
Next Int(4bytes) byte offset to the code(from start of the buffer).
(Offset 12) - 1, 9, 0xff, 0xfe - FX Magic Number dx9 i believe.
Next 4 bytes are the IDENTIFIER for the effect. basi <-- basiceffect, skin <-- skinable effect etc.
Click to expand...
Click to collapse
Also what version of Direct3D is the phone running? Is it a 10/11 hybrid? cause in XNAFrameworkCore.dll it references D3D11CreateDeviceAndSwapChain and it also references CreateDXGIFactory1
Has anyone got PInvoke to work? The only way to get access to the HLSL compiler for the phone is through non-exposed API's in XnaFrameworkCore.dll.
When it creates the effect it looks for the unique four byte effect iden to create the shader internally(D3D_Effect_CreateHandle in XnaFrameworkCore.dll). So to get access to the HLSL compiler and compile our own effects it looks like we have to call some of the non-exported API's from the DLL. Which shouldn't be a problem if someone has found out how to get PInvoke to work( Not the COM dll hack but actually calling PInvoke. ).
EDIT
For anyone thats interested here are the different ID's(remember the hex is actually in reverse order):
.text:1003DF68 mov eax, [ebp+var_4]
.text:1003DF6B cmp eax, 69727073h
.text:1003DF70 jz loc_1003E086
.text:1003DF76 cmp eax, 69736162h
.text:1003DF7B jz loc_1003E05F
.text:1003DF81 cmp eax, 6C617564h
.text:1003DF86 jz loc_1003E038
.text:1003DF8C cmp eax, 6D766E65h
.text:1003DF91 jz short loc_1003E009
.text:1003DF93 cmp eax, 6E696B73h
.text:1003DF98 jz short loc_1003DFD7
.text:1003DF9A cmp eax, 74736574h
.text:1003DF9F jnz loc_1003E0B5
Click to expand...
Click to collapse
crozzbreed23 said:
Has anyone got PInvoke to work? The only way to get access to the HLSL compiler for the phone is through non-exposed API's in XnaFrameworkCore.dll.
Click to expand...
Click to collapse
A number of us have tried to do it, but have failed. The correct path is probably '\Windows\X.dll.' I haven't tried that yet. It's probably worth mentioning that even if you do get it working, Microsoft has sworn to reject any app that uses PInvoke.
I know the app would be rejected, I only want to build a portfolio project that I can take with me to a job interview.
Even though a lot of the HLSL code is in XnaFrameworkCore.dll, there is a d3dcompiler dll(which is compiled against D3D10). I know this is probably something that has been answered before, but is there a method for opening up the WM ARM dll's in IDA?
My thinking is this, we can launch executables but to get access to the OS dll's we have to build valid OS libraries. I wanted to try the COM dll method, but I don't have the phone yet and the emulator obviously won't load COM dll's.
If we can get as far as calling LoadLibrary than we can call:
D3D11CreateDeviceAndSwapChain
and
CreateFactory1
Click to expand...
Click to collapse
Than ASSUMING D3DCompiler.dll works(its not referenced in the XNAFrameworkCore except for loading in the HLSL sig), we can load custom GPU programs(that are HLSL based not effect based which is just fine...) as well as exposing more of the Direct3D API.
The only reason why I want all the graphics API's is so I don't have to create a portfolio project with baked lightmaps with bumpmapping built in. Its such a shame that the GPU on the phone is going to waste because they designed a very restrictive effect interface :/.
Its a pain but it has been but there are lots of reason why they are doing that. for one when the chassis requirements where released the minimum requirement is that the gpu had to do opengl. xna is built for direct x and hence the problem, some stuff had to be ported to opengl for it to work properly, the problem wiht this is that the new chips now have directx gpus with them, and i am not sure but i believe none of the wp7 phones that have been released has any of the directx acceleration. Becuase of this and compatibility with the later phones (atleast up to next year) some stuff had to go, custom shaders for one. But i believe if you work close with microsoft they actually give you the the ability to create custom shader. I have not played much with xna for windows phone, just on xbox so i am not to sure what i can do and not do. But your post was enlightening and i will go back to it after i finish my few apps.
Yeah your right. I just read up that they are using the ADRENO 200 GPU(http://developer.qualcomm.com/dev/gpu/processors), which supports opengl es, and "Direct3D Mobile" whatever that means. But that still doesn't explain why they didn't allow custom GPU programs because everything is still being compiled down to bytecode. If the GPU can do per-pixel lighting it is more than capable of bump mapping that reacts to lighting which is why I really want to see if I can maybe extend one of the .net effect classes, but I still haven't figured out if that would mess with any of the internal core functions.
But as I did with the XNA 360 code, I got access to the UnsafeNativeMethod classes inside the framework dll that expose all the native interfaces to the core. So basically I just skip passed all the XNA init code. The only thing that creates a problem with on the phone is that they use a "messaging service" to communicate with the framework, they build a byte[] array in the .NET code and pass it to the framework which parses it and does whatever it needs to do. On the phone, pointers aren't allowed, but I might just be able to use reflection to get the messaging code.
Also I thought of something, sense the GPU supports OpenGL ES and I know that someone has been able to create a window(the FS example on Chris's site), I wonder if we create a COM dll and link against the OpenGL ES library that we can just use OpenGL rather than the "non finished" d3d api? I would try that myself but I'm not going to be able to get the phone for a couple weeks and I havent found a way to get COM dll's to work in the emulator :/
Yeah your right. I just read up that they are using the ADRENO 200 GPU(http://developer.qualcomm.com/dev/gpu/processors), which supports opengl es, and "Direct3D Mobile" whatever that means. But that still doesn't explain why they didn't allow custom GPU programs because everything is still being compiled down to bytecode. If the GPU can do per-pixel lighting it is more than capable of bump mapping that reacts to lighting which is why I really want to see if I can maybe extend one of the .net effect classes, but I still haven't figured out if that would mess with any of the internal core functions.
But as I did with the XNA 360 code, I got access to the UnsafeNativeMethod classes inside the framework dll that expose all the native interfaces to the core. So basically I just skip passed all the XNA init code. The only thing that creates a problem with on the phone is that they use a "messaging service" to communicate with the framework, they build a byte[] array in the .NET code and pass it to the framework which parses it and does whatever it needs to do. On the phone, pointers aren't allowed, but I might just be able to use reflection to get the messaging code.
Also I thought of something, sense the GPU supports OpenGL ES and I know that someone has been able to create a window(the FS example on Chris's site), I wonder if we create a COM dll and link against the OpenGL ES library that we can just use OpenGL rather than the "non finished" d3d api? I would try that myself but I'm not going to be able to get the phone for a couple weeks and I havent found a way to get COM dll's to work in the emulator :/
You can pretty much give up on that one, the COM dlls for the phone are ARM assembly, but the emulator runs on x86. Not likely to work.