Related
Could you explain please (very short description) how you modified the xip chain for rom kitchen?
All I can see is the following:
- no length (0)
- no RSA1 signature
- only file entries
What I want to know:
- how to find phys. (ROM) position (do you use unused holes in rom?)
- is 0 length for ROM = autolength
- how to choose the RAM position
- why can length of RAM be 0
Please help. (I need this info for a smartphone project)
I did not bother setting the length, only the 'pvAddr' field is used.
I only make fileentries, because I have yet to implement the generation of modules. ( if I ever do ).
yes, I use unused holes in the rom.
actually, if you don't care about xip updates of other sections, you
may use addresses anywhere in the rom, where your data fits.
It does not nescesarily have to be contigous.
I just copied the ram setting from the other xip entries.
Thank you for the information.
Why don't you take romimage.exe from platformbuilder to generate a XIP block. You only have to write a little .bib file for it. This tool can handle modules and compression as well.
John
P.S. Source code for romimage.exe is available in PB 4.2 private build tree.
I hadn't found that tool yet when I wrote makexip, and then we couldn't have made the romkitchen with it, since romimage.exe runs only under windows.
Don't waste your time with this crap tool (romimage.exe). Some needed files are missing (e.g. bin2xip.exe).
How can I be sure to choose a good phys. addr.? There might be some memory mapped devices...
I have one additional difficult question:
Modules are relocated when embedded into XIP's. Even there seems to be a modification to the import table of the module (e.g. references to coredll.dll will be checked/updated?)
If I extract a module (e.g. a *.dll) from a XIP of an other phone do I have to re-relocate it / modify it's import section even if I place it in a FILES section?
Thanks
John
converting bin to xip is not that difficult. see http://www.xs4all.nl/~itsme/projects/xda/wince-flashfile-formats.html
do you mean the 'physfirst' field in the romheader? that is just the startaddress in the rom.
since the relocation information is not stored in rom, the only way to really
recover it, is to disassemble the file, and find the offsets to stuff that
needs to be reallocated.
so that is a lot of work. and dumprom only extracts nonrelocatable .exe and .dll modules.
if your extracted dll is fixed to a memory location that overlaps with an already existing dll, you will have a problem I think.
I am not even sure, if an extracted dll works at all, I only use them for reverse engineering.
Yes, I mean phys first field. But how can I be sure to choose a valid address for the new XIP block?. My idea is to use address space between existing XIP blocks. Or can I simply choose a very high address (e.g. 8F000000) and hope not to use a region where memory mapped devices are located?
Since I used (your?) dumprom to extract the *.dll files do you think they are "nonrelocated"?
John
I ask so much because I crashed my lovely smartphone a week ago. :-(
My new XIP seems to be invalid... so it doesn't boot anymore. Unfortunately I've killed the bootloader too...
When I try next time (I've ordered a new one) this must not happen!
I am sure they are nonrelocated, fixed to run from a specific memory location.
( just wrote another post about this )
maybe even the module loader does not allow non-xip modules to be loaded in xip reserved memory.
THANK YOU VERY MUCH
I've got it. My Smartphone now have a new XIP block with some files in it...
Only thing left is to rewrite some *.dll files (only resource dlls with no function exports) to extend the language of the MIO 8380.
Are you familiar with languages on smartphone? There are multiple .mui files (resource dlls containing all the dialogs and strings). I've exported all resources and (re)created the dll's as resource only. Unfortunately they don't work ... yet ...
Are there some other files for language extension? What about "wince.nls" or "mxip_lang.vol" ?
Thanks again for your great tools. I will setup a site containing detailed information about this hack soon.
John Smith
cool, I am always interested to see how things work out that I haven't actually tried myself yet.
is this how you create resource only dll's:
http://www.xs4all.nl/~itsme/projects/programming/icondll.html
Currently I'am a little bit confused. PB 4.2 docu says MUIs are resource only .dlls and sample in smartphone sdk adds a dllmain...
I will have to investigate this things a little bit more...
John
O.K.
I've tried anything. The only thing left is that the new resource dlls are not XIPed as modules...
The sample mui app works fine (regardless of resource only / normal dll).
John
P.S. I've successfully changed all other settings some things already appear in the new language. Only poutlook, homescreen and control panel will not change!
Now after some more testing (included a dllmain into the mui file which logs the loading/unloading to file) it seems that my mui.dll is never loaded by system (if I load it manually with LoadLibrary the log is written).
Here is my question:
I've looked a little bit deeper into the dumped mui.dll and found a pointer in security section (pe header) which points to nowhere (just after the [virtual] end [rva] of all of the e32/o32 sections).
Could it be, that I've missed something? Does dumprom fill in this values correctly?
One other interesting idea could be to exchange only the data section of the module (since I want to patch resource only .dlls). But since english is a very short term language all other files will be bigger...
John
>>> I've got it <<<
the new (mui-language) modules have to be REAL xip modules...
So I've build a custom.bib file and used RomImage from CE3.0 Platformbuilder. Even compression is possible now.
Note: romimage.exe does the same thing as makexip.pl
To share my results here is the content of the .bib file I've used:
Code:
MEMORY
; Name Address Size Type
MYXIP 81f00000 0013f000 RAMIMAGE
RAM 8c020000 00fe0000 RAM
CONFIG
COMPRESSION = ON
PROFILE = OFF
ROMFLAGS = 2
ROMSTART=81f00000
ROMSIZE=13f000
ROMWIDTH=32
DLLHIGHADDR=00b00000
MODULES
; Name Path Memory Type
; ------------------------- ------------------------------- ------ ----
outres.dll.0407.mui input\outres.dll.0407.mui MYXIP SHU
syncres.dll.0407.mui input\syncres.dll.0407.mui MYXIP SHU
tapres.dll.0407.mui input\tapres.dll.0407.mui MYXIP SHU
tshres.dll.0407.mui input\tshres.dll.0407.mui MYXIP SHU
wmplayer.exe.0407.mui input\wmplayer.exe.0407.mui MYXIP SHU
FILES
; Name Path Memory Type
; ------------------------- ------------------------------- ------ ----
Busy.0407.mid input\Busy.0407.mid MYXIP
mxip_lang_799.rgu input\mxip_lang_799.rgu MYXIP
ms_splash.gif input\ms_splash.gif MYXIP
carrier_splash.gif input\carrier_splash.gif MYXIP
- The MYXIP region in MEMORY section is a hole in the ROM I've found with calcgaps.pl.
- The RAM region is copied from the other sections (they all use the same)
- ROMSTART and ROMSIZE have to be the same values as defined in MYXIP
- DLLHIGHADDR has to be the !!!lowest!!! loading address found with dumprom (header: dlls=...-... ).
Example: If the lowest address found is "header: dlls=00b00000-00c90000 ..." then DLLHIGHADDR has to be 00b00000
Don't care about the warning the warning "Unable to do imports from ... to COREDLL.dll - will late bind". Thats because coredll is in another XIP.
John
P.S. Thanks a lot for all of your support.
DETAILED INFORMATION ABOUT THIS HACK CAN BE FOUND HERE:
http://smartphonerom.tripod.com (only download the "detailed information")
A few people have been trying to figure out how to get rid of SQM, and custsat.dll was causing most of the errors. I posted a few weeks ago in the kaiser forum the I was going to post how to do it, but forgot. Anyway, removing SQM is now simple (for ROM cooks):
1. Delete SQM package from SYS
2. Place my dummy custsat.dll (attatched).
...dummy custsat is a dummy custsat.dll that exports all correct ordinals, and simply returns zero for all functions. SQM is a reporting library that apparently sends non-personal information to microsoft about your pocketpc's performance. note this is for wm6.1, wm6 you can just delete sqm.
no2chem said:
A few people have been trying to figure out how to get rid of SQM, and custsat.dll was causing most of the errors. I posted a few weeks ago in the kaiser forum the I was going to post how to do it, but forgot. Anyway, removing SQM is now simple (for ROM cooks):
1. Delete SQM package from SYS
2. Place my dummy custsat.dll (attatched).
...dummy custsat is a dummy custsat.dll that exports all correct ordinals, and simply returns zero for all functions. SQM is a reporting library that apparently sends non-personal information to microsoft about your pocketpc's performance.
Click to expand...
Click to collapse
Wouldn't it be easier to remove the whole SQM package:
-custsat.dll
sqmce.dll
sqmconn.dll
sqmdata.dll
sqmevent.exe
sqmsvc.dll
uptime.dll
uptimesqm.exe
AND remove the RGU entries from the Hive?
Then the whole package wouldn't be called upon anymore, so no errors with custsat.dll etc.
Code:
REGEDIT4
[HKEY_LOCAL_MACHINE\System\SQM]
"Enabled"=dword:1 ; Device-wide SQM enabled state
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SqmEngine]
"Dll"="sqmce.dll"
"Prefix"="SQM"
"Index"=dword:1
"Order"=dword:1
"IClass"=multi_sz:"{A32942B7-920C-486b-B0E6-92A702A99B35}"
"Flags"=dword:2
[HKEY_LOCAL_MACHINE\System\SQM\Engine]
"MachineId"="{00000000-0000-0000-0000-000000000000}"
"UserId"="{00000000-0000-0000-0000-000000000000}"
"MaximumSessionSize"=dword:FFFF ; Default: 64 KB
"MaximumPacketPoolSize"=dword:FF ; Default: 255
"MaximumFileQueueSize"=dword:20 ; Default: 32
"MaximumUploadFolderSize"=dword:40000 ; Default: 256 KB
"PacketProcessorThreadPriority"=dword:FB ; Default: THREAD_PRIORITY_NORMAL (251)
"UploadFolderFilePattern"="_%d.dat"
"PersistentSessionFolder"="\\Windows\\System\\SQM\\Sessions\\"
[HKEY_LOCAL_MACHINE\System\SQM\Sessions\Global]
"MaxSize"=dword:FA0
"Timeout"=dword:15180 ; one day in milliseconds
"Persistent"=dword:1
[HKEY_LOCAL_MACHINE\System\SQM\Sessions\PMWeek]
"MaxSize"=dword:FA0
"Timeout"=dword:93A80 ; one week in milliseconds
"Persistent"=dword:1
[HKEY_LOCAL_MACHINE\System\SQM\UploadSettings]
"UploadFolder"="\\Windows\\System\\SQM\\Files"
"UploadEvent"="System/SqmUploadReady"
"UploadRetryInterval"=dword:5265C00
"ThrottleInterval"=dword:48190800
"ConnectionFlags"=dword:1
[HKEY_LOCAL_MACHINE\Services\SqmUpload]
"Context"=dword:0
"Dll"="sqmsvc.dll"
"Order"=dword:99
"Keep"=dword:1
"Prefix"="SQM"
"Index"=dword:0
"DelayLoadOnEvents"="SDP_DATA_AVAILABLE"
[HKEY_LOCAL_MACHINE\System\SQM]
"Enabled"=dword:0 ; Device-wide SQM enabled state
"EnableUI"=dword:1 ; Show event-triggered prompt to join and control panel applet
"PromptDelayMin"=dword:F ; Number of minutes (in hex) to delay before displaying prompt after receiving initial event notification
[HKEY_LOCAL_MACHINE\System\SQM\Sessions]
"MaxTransient"=dword:100
"TransientSignature"="sqmdata%02d.sqm"
"TransientDir"="\\windows\\SqmTempFiles"
"TransientFlags"=dword:0
"FlushInterval"=dword:0
[HKEY_LOCAL_MACHINE\System\SQM\Sessions\Global]
"MaxSize"=dword:5000
"Timeout"=dword:15180
"Persistent"=dword:1
"Flush"=dword:1
"SessionCount"=dword:0
[HKEY_LOCAL_MACHINE\System\SQM\Sessions\BiWeekly]
"MaxSize"=dword:FA0
"Timeout"=dword:127500
"Persistent"=dword:1
"Flush"=dword:1
"SessionCount"=dword:0
[HKEY_LOCAL_MACHINE\System\SQM\UploadSettings]
"ConnectionDll"="sqmconn.dll"
"ConnectionFlags"=dword:0
[HKEY_LOCAL_MACHINE\System\Uptime]
"Interval"=dword:258
"UserFix"=dword:B4
[HKEY_LOCAL_MACHINE\init]
"Launch100"="uptimesqm.exe"
"Depend100"=hex:3c,00 ; services(=0x3c)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\State\ScreenOff]
"upt1:"=dword:1 ; D1
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\State\Unattended]
"upt1:"=dword:1 ; D1
Regards,
EqX
the-equinoxe said:
Wouldn't it be easier to remove the whole SQM package:
-custsat.dll
sqmce.dll
sqmconn.dll
sqmdata.dll
sqmevent.exe
sqmsvc.dll
uptime.dll
uptimesqm.exe
AND remove the RGU entries from the Hive?
Then the whole package wouldn't be called upon anymore, so no errors with custsat.dll etc.
Code:
REGEDIT4
[HKEY_LOCAL_MACHINE\System\SQM]
"Enabled"=dword:1 ; Device-wide SQM enabled state
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SqmEngine]
"Dll"="sqmce.dll"
"Prefix"="SQM"
"Index"=dword:1
"Order"=dword:1
"IClass"=multi_sz:"{A32942B7-920C-486b-B0E6-92A702A99B35}"
"Flags"=dword:2
[HKEY_LOCAL_MACHINE\System\SQM\Engine]
"MachineId"="{00000000-0000-0000-0000-000000000000}"
"UserId"="{00000000-0000-0000-0000-000000000000}"
"MaximumSessionSize"=dword:FFFF ; Default: 64 KB
"MaximumPacketPoolSize"=dword:FF ; Default: 255
"MaximumFileQueueSize"=dword:20 ; Default: 32
"MaximumUploadFolderSize"=dword:40000 ; Default: 256 KB
"PacketProcessorThreadPriority"=dword:FB ; Default: THREAD_PRIORITY_NORMAL (251)
"UploadFolderFilePattern"="_%d.dat"
"PersistentSessionFolder"="\\Windows\\System\\SQM\\Sessions\\"
[HKEY_LOCAL_MACHINE\System\SQM\Sessions\Global]
"MaxSize"=dword:FA0
"Timeout"=dword:15180 ; one day in milliseconds
"Persistent"=dword:1
[HKEY_LOCAL_MACHINE\System\SQM\Sessions\PMWeek]
"MaxSize"=dword:FA0
"Timeout"=dword:93A80 ; one week in milliseconds
"Persistent"=dword:1
[HKEY_LOCAL_MACHINE\System\SQM\UploadSettings]
"UploadFolder"="\\Windows\\System\\SQM\\Files"
"UploadEvent"="System/SqmUploadReady"
"UploadRetryInterval"=dword:5265C00
"ThrottleInterval"=dword:48190800
"ConnectionFlags"=dword:1
[HKEY_LOCAL_MACHINE\Services\SqmUpload]
"Context"=dword:0
"Dll"="sqmsvc.dll"
"Order"=dword:99
"Keep"=dword:1
"Prefix"="SQM"
"Index"=dword:0
"DelayLoadOnEvents"="SDP_DATA_AVAILABLE"
[HKEY_LOCAL_MACHINE\System\SQM]
"Enabled"=dword:0 ; Device-wide SQM enabled state
"EnableUI"=dword:1 ; Show event-triggered prompt to join and control panel applet
"PromptDelayMin"=dword:F ; Number of minutes (in hex) to delay before displaying prompt after receiving initial event notification
[HKEY_LOCAL_MACHINE\System\SQM\Sessions]
"MaxTransient"=dword:100
"TransientSignature"="sqmdata%02d.sqm"
"TransientDir"="\\windows\\SqmTempFiles"
"TransientFlags"=dword:0
"FlushInterval"=dword:0
[HKEY_LOCAL_MACHINE\System\SQM\Sessions\Global]
"MaxSize"=dword:5000
"Timeout"=dword:15180
"Persistent"=dword:1
"Flush"=dword:1
"SessionCount"=dword:0
[HKEY_LOCAL_MACHINE\System\SQM\Sessions\BiWeekly]
"MaxSize"=dword:FA0
"Timeout"=dword:127500
"Persistent"=dword:1
"Flush"=dword:1
"SessionCount"=dword:0
[HKEY_LOCAL_MACHINE\System\SQM\UploadSettings]
"ConnectionDll"="sqmconn.dll"
"ConnectionFlags"=dword:0
[HKEY_LOCAL_MACHINE\System\Uptime]
"Interval"=dword:258
"UserFix"=dword:B4
[HKEY_LOCAL_MACHINE\init]
"Launch100"="uptimesqm.exe"
"Depend100"=hex:3c,00 ; services(=0x3c)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\State\ScreenOff]
"upt1:"=dword:1 ; D1
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\State\Unattended]
"upt1:"=dword:1 ; D1
Regards,
EqX
Click to expand...
Click to collapse
if you tried that in wm6.1, you would quickly discover that unresolved imports will cause everything from tmail.exe to cprog.exe not to execute.
no2chem said:
2. Place my dummy custsat.dll (attatched)
Click to expand...
Click to collapse
hey no2chem.. will try this out, but where should i place this file? in windows? i mean is it ok if i just place this file of urs in oemapps (it will automatically get stored in windows, rite?)
EDIT: sorry.. posted too early b4 i saw what was nside sorry again.. please ignore my question
Hi,
good work, i have cooked in my new Rom.
with friendly greet
starbase64
no2chem said:
if you tried that in wm6.1, you would quickly discover that unresolved imports will cause everything from tmail.exe to cprog.exe not to execute.
Click to expand...
Click to collapse
Ahh, I (obviously) haven't tried that in WM6.1 (haven't cooked a WM 6.1 ROM yet).
Well done, I'll going to use your dll when I decide to cook me a WM6.1 ROM.
ok i will try in my new rom! thanks!
Very useful
I 'll use your SQM in my next ROM. Thanks.
OK cooked in and NO problems at all. Thnaks for sharing!!!
What i didn't post thanks for this...
Dammit, muchos gracias great job testing now.
I wnet almost insane trying to get rid of SQM in WM 6.1
Worked on this side of the coin!
Thanks a lot!
I used this with WM 6.1 Classic edition for Hx4700( remove Phone and related phone folder in SYS) , returned error.
I deleted all except original custsat and rgu and dsm , no error.
I used with ASUS P525 and hTC Cruise , all's OK.
Thanks.
vivi
no2chem said:
A few people have been trying to figure out how to get rid of SQM, and custsat.dll was causing most of the errors. I posted a few weeks ago in the kaiser forum the I was going to post how to do it, but forgot. Anyway, removing SQM is now simple (for ROM cooks):
1. Delete SQM package from SYS
2. Place my dummy custsat.dll (attatched).
...dummy custsat is a dummy custsat.dll that exports all correct ordinals, and simply returns zero for all functions. SQM is a reporting library that apparently sends non-personal information to microsoft about your pocketpc's performance. note this is for wm6.1, wm6 you can just delete sqm.
Click to expand...
Click to collapse
Thanks for this
I'll try in my Spanish Lite ROM for Kaiser...
One question, may i delete ceipui.exe too or this is not related to this? I have tryied a WM5 mxip_notify.vol that does not include the two ceipui.exe notifications, but the ROM don't boot...
CHeers
Cheers
jcespi2005 said:
Thanks for this
I'll try in my Spanish Lite ROM for Kaiser...
One question, may i delete ceipui.exe too or this is not related to this? I have tryied a WM5 mxip_notify.vol that does not include the two ceipui.exe notifications, but the ROM don't boot...
CHeers
Cheers
Click to expand...
Click to collapse
Since noone responded to that I am gonna answer to cut other peoples problems away. If you try the other way incl. deleting ceipui.exe you will have seriouse activesync issues. People on vista (some, specialy those who havent updated theyre computer) wount be saved by sktools for cleaning up and make a new repllog session. So my experience is that deleting ceipui.exe is not a smart move
raiisak said:
Since noone responded to that I am gonna answer to cut other peoples problems away. If you try the other way incl. deleting ceipui.exe you will have seriouse activesync issues. People on vista (some, specialy those who havent updated theyre computer) wount be saved by sktools for cleaning up and make a new repllog session. So my experience is that deleting ceipui.exe is not a smart move
Click to expand...
Click to collapse
Thanks for your answer...
Finally found a MIX_NOTIFY.VOL without ceipui notifications that works for me in my lite spanish ROM
Cheers.
one question... where i have to place this dll?
Activating this thread again, hopeing to get an answer...
From what I can understand, SQM (System Quality Metrics) is a service running in winmo 6 and ff. Services are always manageable in the way that they can be disabled and/or stopped. Shouldnt it be possible to get rid of ceipui.exe making its "call home" to redmond by just disabling the SQM-service (and possibly a few others that might be depending on it)?
I had a quick look in the registry and found what I think is the service in question, sqmupload (sqmsvc.dll). Easy to set it to manual start and easy to "disable" it (just move it to another location in the registry for safety, dont delete it).
I'll hardreset my device and test it, will post results here later on.
[Edit]
Btw, I am not a cook, therefor I'm trying to find another way to solve this
Ok, I should clarify that what I wanted to do was to remove the annoying popup dialog about participating in the Customer Feedback and this registry tweak has done just that.
Its workning perfectly on an Athena 7500 with a wm 6.1 ROM.
The registryentry this regards is:
[HKEY_LOCAL_MACHINE\Services\SqmUpload]
Should look something like this:
"Context"=dword:00000000
"Dll"="sqmsvc.dll"
"Order"=dword:00000099
"Keep"=dword:00000000
"Prefix"="SQM"
"Index"=dword:00000000
"DelayLoadOnEvents"="SDP_DATA_AVAILABLE"
"Flags"=dword:00000004
Create a key in HKCU\Software, name it whatever you like (f.ex. Backup) and move this key to that location. The service is now "disabled", and it doesnt look like its calling ceipui.exe, nor does it call on uptimesqm.exe as far as I have been able to spy on the system.
If anyone experiences any problems, please tell me. I'd really like to know
//Anders
what about 6.5?
isn't it enough to delete all files from SQM package excluding dsm and custsat.dll? what is the difference between using dummy custsat?
Any experience with these with latest builds (6.5.3)?
- Remove customer feedback
- remove error reporting
- etc etc...
Thanks.
6Fg8 proudly presents:
m9editor
development discontinued
m9editor is your little helper when it comes to editing manila files. It lets you edit nearly all aspects of a mode9 file. Additionally it will assist you with graphics, allowing import, export and CFC compression. And It includes a directory viewer with information specific to manila files.
requirements:
m9editor is written in .net, so .netCF3.5 (currently SP1) must be installed (usually its already there). It has been developed and tested using Windows XP x64, but should run on any Windows platform.
usage:
see the manual contained in the download package (PDF)
making of / credits:
thanks to: D-MAN666, sztupy, nixx-X1, Chainfire, pcarvalho, showaco, guap, 12aon, xboxmod, NisseDILLIGAF, smotrs, for contributing knowledge, ideas, testing. Thank you guys (& gals of course) !
version history:
2009-03-10 - v3.3.0.1
BUGFIX: crashed when using selections
2009-03-09 - v3.3.0.0
- LuaConv is now included in the m9editor download package
- CHG: all sourcecode related functions use ".lua" as default extension
- NEW: compile and import function for lua script sourcefiles:
for mode9 files (embedded scripts):
m9editor remembers the filename of the source on a per-node basis and lets you subsequently edit the recently used file from the particular node. You may also attach/detach such a link manually. If a link is established, you may edit the sourcefile (check if you set the "SourceCodeViewer" option in m9editor.cfg) and recompile/import in a single step. When saving the mode9 file the links are saved too (mode9file.ann) and reloaded on next open.
for standalone scripts:
m9editor checks if a correspondig xxxxxxxx_manila.lua exists in the script directory. If yes, you are offered edit and compile options.
- NEW: editor context menu: view source for embedded scripts
- NEW: search previous button
- FIX: editing characterreference threw exception
- NEW: dirviewer context menu for mode9 files: compare with: compare two mode9 files without loading it first
- NEW: dirviewer context menu for all files: hex compare with: compare two files with hexview.
Only available if AptDiff is installed. Edit m9editor.cfg and insert the following line (use the path on your system):
AptDiffPath=c:\Program Files (x86)\Brother Technology\AptDiff 1.5\aptdiff.exe
If AptDiff is installed and configured in m9editor.cfg, text compares are done with AptDiff instead of ExamDiff
WARNING:
during directory analyze, if a lua script is found, m9editor checks for existence of <filename>.luac.lua. If its found it will be renamed to <filename>.lua. In directory viewer the line will be shown blue colored to indicate the presence of a sourcecode file.
during mode9 file load, if a embedded script is found, m9editor checks for existence of <filename>_<bytepos>.luac.lua. If its found it will be renamed to <filename>_<bytepos>.lua. In mode9 editor you will notice the link to the script sourcecode. Dont forget to save the mode9 file to make the link permanent (otherwise if you modify the structure, links might be lost due to changing byteposition).
WARNING2:
The pdf attached doesnt reflect the latest changes to m9editor, update follows.
2009-02-22 - v3.2.0.1
- fixed definitions for weather.mode9 and landscape.mode9 which rendered them unusable after modifying
2009-02-22
I removed the QtcConv and LuaConv tools because they lack of syntactical checks and the same functionality is available in m9editor.
EDIT: added the old LuaConv again, seems to work not that bad i thought it would
2009-02-21 - v3.2.0.0
- font changes for various fields to avoid overlapping
- if "manila files dir" is changed in settings, directoryview will be reloaded
- new: directory viewer context menu option for mode9 files: "extract embedded scripts", writes them to script directory
- changed interpretation of UV property (16.16 instead of INT32)
- picture view: new "save as PNG" and "save as QTC" buttons will save your graphic to a selectable directory
2009-02-19 - v3.1.0.1
bugfix for "save tree to file" function
2009-02-19 - v3.1.0.0
time for a new version
- m9editor now remembers last window/splitter positions and restores them on start and returning from minimize
- HOT compare feature: if a mode9 file is loaded, rightclick on the toplevel node to compare with another mode9 file, or save the treeview as a textfile. Compares are done with a freeware tool named "ExamDiff" from PrestoSoft.
2009-02-18 - v3.0.5.0
new context menu functions in directory viewer: delete, copy to
2009-02-17 - v3.0.4.0
content of XML, HTML displayed in lower right panel
evaluation of XML locales in directory viewer
manual is complete, and now a part of the package
2009-02-16 - v3.0.3.1
annotations now work for new tags as well, and will be copied between instances (+corrected a few flaws during display)
new: search within decompiled lua scripts
new: copy annotations between instances of m9editor
2009-02-11 - v3.0.2.0
bugfix: empty value crash
minor improvements
2009-02-10 - v3.0.1.0
some little improvements:
- sourcecode of embedded scripts and .luac files is shown whenever possible
- zoom percentage display for graphics display
2009-02-09 - v3.0.0.0
I've made a lot of changes to improve m9editor. The most important are:
- integration with sztupy's luadec (thanks and credits to sztupy for great decompiler and permission to use, and of course once again to D-MAN666 for providing knowledge)
- import of compiled lua scripts (ANSI or Unicode, autodetected)
- UI reworked: editor, directory viewer, image viewer combined in one window
planned for next releases of m9editor:
- copy files to/from PDA if connected via ActiveSync
- smart-select referenced graphic files in a mode9 file
- selfcheck for consistent mode9 writing
- analysis of lua script "require"'s for valid manila names
download stats:
v.3.2.0.1: 1554 views (wow! impressed!)
Guess I'll have to try that, seems great !
Your editor seems (as you describe it) only able to change values, but not the structure of the mode9 file, do you intend to change that ?
I have an ongoing project of mode9/xml converter in C, if I can be of some help, don't hesitate to ask
Hi Ximoon,
guess you belong to the "intended audience"
At the moment only changing values is allowed, correct. The main reason for this is that i'm unable to interpret and understand the complete structure, and to make sure that writing of m9 files produces valid files. If there's more info on that i could build it into the editor of course.
What i could imagine is a more generic approach, e.g. allow insertion/deletion of tags based on hex-values. I'll give that a thought.
Do you have any detailed info about the tag-structure? It can be seen in the tagfile but as hexvalues. Ive been able to interpret some of them, but the meaning of many others is unknown to me. So m9editor filters most of them for better reading.
Anyway, there's more to come with m9editor. I already built routines to disassemble lua scripts which run fine, but as its output is only relevant to p-code its pretty useless at this time. Also planned is a tool to allow image replacement. That could go to a point where we have a complete workbench for TF3D, including preview and the like. But thats far beyound my current scope.
Nice anyway !
I have no more information than you do, all I got is from the manilla thread where you posted earlier
But in the end, names of the tags doesn't really matter.
For LUA, I found some decompiler on the web, so I guess a tool to convert lua-unicode to lua-ascii and reverse could work to use those tools.
I guess I'll go on with my editor and see what I could do in the end, for two different approches could be constructive !
Must have been ChunkSpy, right? I found many more but mostly outdated and not working for Lua 5.1.
The Lua routines i've already written allow converting unicode to ascii, and save the scripts in ascii respectively. I'll have to recode them in .net as the first quick approach has been VB
Nice start, man
I was waiting for so long since somebody starts public Manila DevKit since i posted specs i reversed
Drop me a PM if you have any questions
Can't wait to use those lua tools
yeah, right D-MAN, most of that thing is based on your findings, my respect m8.
I'll PM you later, gotta go shopping now for newyears eve
6Fg8 said:
yeah, right D-MAN, most of that thing is based on your findings, my respect m8.
I'll PM you later, gotta go shopping now for newyears eve
Click to expand...
Click to collapse
Yah, sure, after NY eve when my hangover is over
oh oh, nice tool thank you
new version has been released, details here
got ean error if i want to open a file..
System.UnauthorizedAccessException: Der Zugriff auf den Pfad C:\Dokumente und Einstellungen\Administrator\Desktop\HTC\tf3d\2c684cd8_manila wurde verweigert.
bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
bei System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
bei System.IO.FileStream..ctor(String path, FileMode mode)
bei m9editor.m9efunctions.readm9(String fname, Boolean writedebug)
bei m9editor.m9editor.fileopen_Click(Object sender, EventArgs e)
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
bei System.Windows.Forms.Button.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Click to expand...
Click to collapse
edit: i was write protected.....
schreda said:
got ean error if i want to open a file..
System.UnauthorizedAccessException: Der Zugriff auf den Pfad C:\Dokumente und Einstellungen\Administrator\Desktop\HTC\tf3d\2c684 cd8_manila wurde verweigert.
Click to expand...
Click to collapse
sorry, i dont have that file on my touch HD, cannot test. Are you sure its a mode9 file? Can you upload it here?
schreda said:
edit: i was write protected.....
Click to expand...
Click to collapse
that explains something
hmm.. i'm trying to port the analog clock from the Diamond to the HD.. i must change the Resolution i think but i got a bad result if i change the size var... ( i took the original file from the Hd to compare it
schreda said:
hmm.. i'm trying to port the analog clock from the Diamond to the HD.. i must change the Resolution i think but i got a bad result if i change the size var... ( i took the original file from the Hd to compare it
Click to expand...
Click to collapse
great idea, i'd appreciate to see a analog clock on the HD
new version has been released, details here
wow! finally someone is doing it
thanks and keep up the good work!!!
what i show in screenshot, is it portion of unparsed data?
can one edit them? i tried and failed cause i dont know what to change...
i'm missing: RectF, X, Y, Width, Height
pcarvalho said:
wow! finally someone is doing it
thanks and keep up the good work!!!
what i show in screenshot, is it portion of unparsed data?
can one edit them? i tried and failed cause i dont know what to change...
i'm missing: RectF, X, Y, Width, Height
Click to expand...
Click to collapse
its the value of the tag above, "Viewport". Currently i dont know how to parse that, as its binary and i dont understand the meaning. Could be 8 x Int16, or 4x Int32, or a mixture of that, and even then i wouldnt understand what these values mean. Obviously parameters for Viewport.
Yes, you can edit that, simply overwrite the hexvalues and press enter, it will be written.
Can you shed light into the purpose of these values? I'll be glad to parse them right.
BTW there is a baaad bug in v1.0.2.0 when writing m9, i'm currently correcting that.
6Fg8 said:
its the value of the tag above, "Viewport". Currently i dont know how to parse that, as its binary and i dont understand the meaning. Could be 8 x Int16, or 4x Int32, or a mixture of that, and even then i wouldnt understand what these values mean. Obviously parameters for Viewport.
Yes, you can edit that, simply overwrite the hexvalues and press enter, it will be written.
Can you shed light into the purpose of these values? I'll be glad to parse them right.
BTW there is a baaad bug in v1.0.2.0 when writing m9, i'm currently correcting that.
Click to expand...
Click to collapse
take your time my friend
those ones for Viewport i only know that they are:
<Property Name="Viewport" Type="RectF" X="0" Y="0" Width="31457280" Height="35127296" Animated="False"/>
cause i used D-MAN666's mode9parser, talk with him cause he might help, i hope
Purpose:
This purpose of this VBScript is to process and organize data in RGU/REG files to remove duplicates, identify faulty entries, and move entries to ascending alphabetical order (the same way it is displayed in a registry editor).
Requirements:
Windows Scripting Host (included in most versions of windows)
rgucomp.exe and cereg400.dll located somewhere in your path (same folder as the script probably won't work if the script is run from another folder)
.reg and .rgu files are expected to be UTF-16LE with BOM
Usage:
Drag a .rgu, .reg, or .hv onto RGUber.vbs OR run "wscript.exe RGUber.vbs example.rgu"
Details:
When an rgu|reg file is specified, RGUber will:
1) create backup of input file
2) rename input file to boot.rgu
3) use rgucomp to convert it to *.hv
4) use rgucomp to convert new .hv to original rgu path\name
5) Reorder all keys in ascending alphabetical order and all values for each key in ascending alphabetical order with default value first
When an hv file is specified, RGUber will:
1) use rgucomp to convert it to *.rgu
2) Reorder all keys in ascending alphabetical order and all values for each key in ascending alphabetical order with default value first
Options
Open RGUber.vbs in your favorite text editor. All options are set at the beginning with (hopefully) meaningful descriptions.
Code:
'//Path to rgucomp (leave this as default if rgucomp.exe is located in your system path)
Const RGUCOMP = "rgucomp.exe"
'//Path to notepad, only needed if %OPENAFTER% is true
Const NOTEPAD = "notepad.exe"
'//The following options can be set to True/False or 0/1
'//Organize registry entries in ascending alphabetical order
Const REORDER = True
'//Open in %NOTEPAD% after conversion is done
Const OPENAFTER = False
'//Save any errors from rgu -> hv conversion
Const LOGERRORS = True
'//Save a backup copy of %INPUTRGU% as "%INPUTRGU%_Backup.rgu"
Const BACKUPRGU = True
Other info
If target file already exists, RGUber will ask if you want to overwrite.
Text files (the MS way) typically contain CRLF for next line. Output from rgucomp.exe contains many CRCRLF. RGUber removes the extra CR.
I have very few comments in the code. If requested, I will upload another copy with as many detailed comments as I can manage.
I tried to code this as efficiently as VBScript can possibly be. I kept getting errors when trying to run 'rgucomp.exe -b -nologo' so instead of running it directly, RGUber creates a bat file, executes it, then deletes it.
On my AMD Phenom 9600 with Vista64 and 3 SATA in Raid5, RGUber completes rgu->hv->rgu of 2084 lines in <3s
RGUber always saves output from rgu->hv conversion but deletes the file if there were no errors.
RGUber crashes on files with no reg entries (e.g. empty app.reg in an EXT package that does not add any registry entries)
Changelog:
v1.21a
Values are now sorted in alphabetical order for each key
v1.2
Replaced Organize function with one from RGUOrder
Lost ability to reorder values for each key (To be readded in next version)
v1.1
Fixed a bug with removing hashdata from output (RGUber would mix data from two keys under one)
Changed sorting algorith with a much faster one
v1.02
Added option to remove RegistryUpdate key from rgucomp output
Fixed a typo where RGUber was not removing the system attribute from input rgu files
v1.01
Fixed typo where RGUber was waiting for backup file instead of log file
Change 'Done' msgbox to one that shows beginning time and ending time
v1.0
Initial Release
RGUOrder v1.4
This script will only reorder the contents of an rgu without processing with RGUComp, thereby keeping comments and delete key entries. RGUComp/cereg400.dll are not needed to use this app.
Changelog:
v1.4
Fixed a bug where if the original rgu did not end with a new line then the last entry after being sorted would be lost.
Fixed two bugs where only the first 25 tabs and first 25 spaces would be removed before sorting (This did not affect data integrity or performance, but the checksum would be different each time you run the output back through RGUOrder until all the original tabs/spaces were removed)
Added code to prevent multiple entries of the same key from being reordered
Fixed other miscellaneous bugs/oddities introduced with v1.3
v1.3
Added code to add a delete key for each subkey of a deleted key so that when reordered, the key deletion isn't broken
v1.2
Fixed a bug where the last key processed was being concatenated to another with no CRLF producing an invalid rgu file
I'm not sure if this relates to your app but I have a small question:
If a dumped a rom (raw, not kitchen type) and removed several apps/programs but did not clean the registry (very tedious), will this help me clean it up (remove dead paths, etc)?
And if so, how will it know just by dragging the .hv file? I mean how will your app know if a registry entry does not have the app/program included in the rom anymore?
Please forgive me if my question does not relate to your app
There is no way for my app to know, it isnt that smart
It would take an extensive app/database to know which keys are related to which apps.
Thanks for this post
updated to v1.1
v1.02 had a bug in the code which removed hash data from output which made it mix data from the key before it with the key after it
If I ever get around to updating again, I will use hvedit instead of rgucomp
I get an error.
Script: D:\RGUber.vbs
Line: 136
Char: 2
Error: File not found
Code: 800A0035
Source: Microsoft VBScript runtime error
Any reason why?
I attach the file i want to sort alphabetically.
I have no idea
It worked for me with no problem (file attached)
Please tell me the location of RGUber.vbs and of 51329f91-0017-4364-bcff-e032c5d45b01.rgu
Great application bro!!
Only limitation is that I have to put reg400.dll and rgucomp in C:\windows
c_shekhar said:
Great application bro!!
Only limitation is that I have to put reg400.dll and rgucomp in C:\windows
Click to expand...
Click to collapse
yeah, I tried to get around that but I didn't find anything feasible with vbscript :-/
Actually, they don't have to go in C:\windows
I reinstall windows regularly so I keep as many apps portable as I can. I have a bin folder on another partition that I add to the system path variable after a new install for stuff like this.
selyb said:
yeah, I tried to get around that but I didn't find anything feasible with vbscript :-/
Actually, they don't have to go in C:\windows
I reinstall windows regularly so I keep as many apps portable as I can. I have a bin folder on another partition that I add to the system path variable after a new install for stuff like this.
Click to expand...
Click to collapse
can you elaborate this a bit more. Because I too would like a similar arranfements...
My C:\ partition has Vista64
My F:\ partition has all my documents, downloads, music, movies, etc and a folder F:\bin\
F:\bin contains >100 downloaded command line programs and vbs scripts that I have written including
RGUber.vbs
lame.exe
rgucomp.exe
cereg400.dll
FixVTS.exe
faad.exe
nuerecmod.exe
Tag.exe
find Advanced System Properties (I can't remember how, it's different for XP/Vista/7) go to the Advanced tab and hit the Environment Variables button
Under system variables, scroll down to 'Path', double click it. This defines your 'system path'. It contains a list of folders separated by semicolon ";". At the end, add a semicolon and the path to the folder you want to add (e.g. ;F:\bin) after that, hit ok. XP may need to reboot to reflect the change but I'm not sure. Vista and 7 are affected immediately.
With this setup, you can open a command prompt in any folder on your computer and type "RGUber.vbs xyz.rgu" and it would work as if all the files are in that folder.
Thanks a lot bro!!!
I am grateful...
I'd really like to use this, but unfortunately I get this error regardless of the app.reg I drag onto the script:
Script: C:\RGUber\RGUber.vbs
Line: 232
Char: 3
Error: The system cannot find the path specified.
Code: 80070003
Source: (null)
Thanks if you can advise.
Quetzecotyl said:
I'd really like to use this, but unfortunately I get this error regardless of the app.reg I drag onto the script:
Script: C:\RGUber\RGUber.vbs
Line: 232
Char: 3
Error: The system cannot find the path specified.
Code: 80070003
Source: (null)
Thanks if you can advise.
Click to expand...
Click to collapse
Hmmm... this line asks the system for what is in the %temp% variable and attempts to change the working directory to the result.
Open RGUber.vbs in notepad and go to line 232
Modify
Code:
WSH.CurrentDirectory = WSH.Environment("SYSTEM")("temp")
to
Code:
WSH.CurrentDirectory = "C:\RGUber\"
then try again
Works great after your fix, selyb. Thank you for this useful app and your many helpful contributions to the Kaiser forums.
Quetzecotyl said:
Works great after your fix, selyb. Thank you for this useful app and your many helpful contributions to the Kaiser forums.
Click to expand...
Click to collapse
Yeah, I may relocate from Kaiser forums to Rhodium. I have an AT&T Tilt 2 in the mail to me ATM
Grats on getting a Rhodium. Found a question after using it for a while. This is just one example of such behavior, but why does:
Code:
[HKEY_CURRENT_USER\Software\HTC\TaskManager\ExclusiveList\System]
"CMBandSwitching.exe"=dword:0
get turned into:
Code:
"CMBandSwitching.exe"=dword:0
How do I make it regard CURRENT_USER keys?
Quetzecotyl said:
Grats on getting a Rhodium. Found a question after using it for a while. This is just one example of such behavior, but why does:
Code:
[HKEY_CURRENT_USER\Software\HTC\TaskManager\ExclusiveList\System]
"CMBandSwitching.exe"=dword:0
get turned into:
Code:
"CMBandSwitching.exe"=dword:0
How do I make it regard CURRENT_USER keys?
Click to expand...
Click to collapse
I had this problem with an earlier version. If you are using v1.1 then please attach the original rgu/reg. I have tried and I can't seem to reproduce it since I fixed it already.
Please, replace rgucomp with hvedit . I really need your help because rgucomp doesn't work for me . Thanks in advance .
tomcug said:
Please, replace rgucomp with hvedit . I really need your help because rgucomp doesn't work for me . Thanks in advance .
Click to expand...
Click to collapse
why doesn't rgucomp work? I would be surprised to learn that hvedit will work when rgucomp won't.
Hi guys.
First, some sidenotes:
1) I'm not sure where this post belongs. I hope moderator will move it accordingly
2) I'm not able to post urls, so please replace hxxp:// in those links below with http//. I will fix that as soon as the forum lets me.
Russia has changed its DST rules this year. All time zones are shifted +1 hour and DST is now disabled. To reflect those changes under WM we need to edit registry a little.
HKEY_LOCAL_MACHINE\Software\Microsoft\TimeZones\ is a key that allows to override timezone info. So, you need to create a subkey, which name will be the time zone index needed to change. Time zone indexes could be looked up here: hxxp://msdn.microsoft.com/en-us/library/ms912053.aspx
Here is an example for Moscow time zone (MSK). It's index is 145
Code:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\Software\Microsoft\TimeZones\[B]145[/B]]
"Display"="GMT+4 Moscow"
"Dlt"="Russian Daylight Time"
"Std"="Russian Standard Time"
"TZI"=hex:\
10,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
Where do you obtain this? There are two ways:
1) The easy one. If you already installed MS updates on your PC, its registry already contains all that we need. Go under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\ and select appropriate key. (for Moscow it's under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Russian Standard Time). Export it and import to the device with your favorite registry editor (I use TotalCommander).
2) The hard one. Write it by yourself. OK...
All the fields are self-explanatory except TZI. Let's take a closer look on that. According to MSDN hxxp://msdn.microsoft.com/en-us/library/windows/desktop/ms725481%28v=vs.85%29.aspx, it's contains REG_TZI_FORMAT structure:
Code:
typedef struct _REG_TZI_FORMAT
{
LONG Bias;
LONG StandardBias;
LONG DaylightBias;
SYSTEMTIME StandardDate;
SYSTEMTIME DaylightDate;
} REG_TZI_FORMAT;
Bias is the offset in minutes, so that UTC = local time + bias
Since Moscow is UTC+4, the bias should be -4 hrs = -240 mins. -240 is 0xFFFFFF10 in hex, hence first 4 bytes of TZI are 10,ff,ff,ff
StandardBias is the bias during standard time (when DST don't apply): UTC = local time + bias + standard bias. So, it should be zero.
DaylightBias is the bias during daylight time: UTC = local time + bias + daylight bias. Should be zero for current Russian DST rules
Those two SYSTEMTIME fields contain dates when DST applies. They should be zero in our case. You can refer to the above link for details, if curious.
So, all you need to do is to just fill 4 first bytes with proper values.
OK, after registry is changed, you should be immediately able to see new time zone in clock settings. If that is not the case, try rebooting your device.
Now, maybe someone will create a cab for all Russian timezones... that would be nice.
---
Now Manila aka HTC Sense is the whole different story. It has its own city database with UTC offsets. The file in question is \Windows\2330fc3c_manila. This is actually an SQLite database file, so it can be edited easily. I use SQLite Database Browser (hxxp://sqlitebrowser.sourceforge.net), which is free. You can also use sqlite native console client.
So, you need to copy that file to the PC, find your city and change its timezone field. The file is in ROM, so you need a proper file manager to do that (TotalCommander is OK). E.g. for Moscow you should change -180 (UTC+3) to -240 (UTC+4).
Before writing the file back, Manila should be disabled. This can be done under Today settings (second tab, uncheck 'HTC Sense'). Replace the file and then enable Manila again.
I'll attach the patched file for HTC Rhodium aka TouchPro2. I'm not sure if it will suit other device or even other ROM on same device. Mine is T-Mobile v1.91.531.4
Thanks for the tip. I tried to this for my HD2 (WM6.5.3) and found out there is no TimeZones branch in the registry. And there is no \Windows\2330fc3c_manila file. There is a lot other *_manila files in Windows folder though. How did you find out which one contained timezone data?
rugubara said:
Thanks for the tip. I tried to this for my HD2 (WM6.5.3) and found out there is no TimeZones branch in the registry.
Click to expand...
Click to collapse
Please, read the post carefully. The TimeZones branch is on your PC!
rugubara said:
And there is no \Windows\2330fc3c_manila file. There is a lot other *_manila files in Windows folder though. How did you find out which one contained timezone data?
Click to expand...
Click to collapse
For Manila file guide please go here: http://forum.xda-developers.com/wiki/Manila_Files. If the file is missing - there is a good chance you don't need to do anything on Manila part.