¿ Cómo cocinar una buena ROM para mi Trinity - Todo Pocket PC

¿
Cómo
cocinar
una
buena
ROM
para
mi
Trinity
?
Primero necesitamos las herramientas, en este primera parte de curso vamos a utilizar la cocina RomDonalds. Que no es más que un conjunto de herramientas y archivos .BAT que nos ayudan a realizar el trabajo más cómodamente.
Lo primero bajarnos la cocina de http://www.megaupload.com/es/?d=016F868A
Una vez descargada, descomprimimos el archivo y obtenemos un ROMDonalds.exe que ejecutamos. La cocina por defecto se instala en C:\ROMDonalds
Dentro hay 9 carpetas, numeradas del 1 al 9 y 3 archivos. El orden de numeraciónde las carpetas es lógico, nos marca los pasos que debemos ir dando (la 9 no, son aplicaciones extras).
Ahora que ya tenemos la cocina instalada necesitamos la ROM NiAx 6.1.22 FULL que es con la que vamos a trabajar. Sólo necesitamos la ROM, que es el archivo RUU_signed.nbh. Que lo cogeremos de la carpeta de instalación de la misma.
Entramos en 01­NBHextract y pegamos el RUU_signed.nbh. Lo cogemos con el mouse y sin soltar, lo arrastramos y soltamos encima del archivo Drag To Here.bat.
El resultado será ...
De aquí nos interesa el 02­OS.nb, los demás archivos son los dos splash (imágenes) de salen durante el arranque (en formato .bmp y .nb). Copiamos 02­OS.nb y pegamos en la carpeta 02­Dump y lo renombramos a OS.nb Y ahora, igual que antes, lo cogemos, arrastramos y soltamos encima de Dump.bat
Al finalizar el proceso...os queda un archivo dump_MemoryMap.txt y el directorio /dump que es, con el que vamos a trabajar. Pero antes, como siempre, copiamos el directorio /dump y OS.nb y los pegamos en la carpeta 05­Build
De esta forma siempre tenemos una copia de la original en la carpeta 02­Dump
Antes de seguir, un par de cosas que vamos a necesitar:
La primera es un editor de texto que solucione el problema del Word Wrap (ajuste de línea). Aquí os dejo el Notepad2 (está en inglés básico ­ no hace falta ser traductor para entenderlo ) Notepad 2.zip
Otra cosa importante es poder ver las los archivos ocultos y las extensiones de los archivos. Para ello abrimos el Explorador de Windows, Herramientas, Opciones de carpeta..., Ver y marcamos Mostrar todos los archivos y carpetas ocultos, y desmarcamos las casillas Ocultar archivos protegidos del sistema operativo y Ocultar las extensiones de archivo para tipos de archivo conocido. Para acabar lpulsamos Aplicar y Aceptar.
Bueno después de bajaros el programa y modificar las Opciones de Carpeta vamos a entrar dentro de /dump (por fin !!!)
No toqueis nada
(de momento)...vamos a buscar el archivo mxipupdate_zzPIED_100.provxml y vamos a cambiarle el nombre a la ROM Para abrirlo lo haremos con Notepad2 (importante), lo primero una vez abierto ir a File y quitar la marca del Read Only. Vamos a modificamos el contenido de: value="6.1.22 NiAx" por value="HTCMania" (poner el que os de la gana, pero que no sea muy largo sino cogerá el nombre del sistema 0.1.22 NiAx ­ el que sale en letras rojas cuando arranca). Una vez modificado File/Save (trad. Archivo/Guardar), perfecto. Ahora volvemos a marcar File / Read Only y salimos del programa.
Bueno ya tenemos preparada nuestra ROM. Vamos a compilarla, para ello le damos a Build.bat. Vereis que se abre una ventana DOS y empiezan a aparecer cosas...tranquilos !!!
Cuando se cierre la ventana, dentro de la carpeta veremos que han aparecido dos nuevos OS­xxx.nb, el OS­old.nb es el antiguo (renombrar otra vez a OS.nb) y el OS­new.nb es nuestra NUEVA ROM. Pero esta con extension .nb necesitamos .nbh. Vamos a ello, salimos de la carpeta 05­Build y entramos en 07­Final Compilation. Abrimos nbhtool.exe, segunda pestaña NB to NBH en casillero OS elegimos OS­new.nb y en Device: TRIN100. En version y Language poned lo que querais.
Solo nos queda apretar Generate NBH File. Vamos a ello, al pulsar sobre el botón se abre un explorador de windows al que tenemos que indicarle donde guardar el archivo .nbh (os recomiendo en la carpeta 08­Flashing ­ para tener todas las cosas más a mano). Una vez generado el RUU_signed.nbh ya podeis cerrar el programa. Vamos a la carpeta 08­Flashing. Dentro está RUU_signed.nbh el resto borrarlo todo y sustituirlo por el contenido de la carpeta NiAx v6_1_22_FULL (exceptuando el RUU_signed.nbh). Ahora, este paso ya lo conoceis todos: a flasear.
Le damos a ROMUpdateUtily.exe y que empiece la fiesta. El resultado:
Hoy hemos aprendido a volcar una ROM (cualquier ROM para Trinity, ya sea española, inglesa, francesa, china, Lite, Full o Ultra­Full), manejarnos con Notepad2 y a compilar una nueva ROM. Desde aquí on animamos (el NiAx Team que parece que gusta a pocos.
) a volcar la Ultra­Full y a sacar el Total Commander Ya visto como volcar las Rom y volver a compilar, vamos a incluir aplicaciones a la ROM. Usaremos para ello los archivos .CAB.
Nuestro primer reto será incluir el Random­Access (barra de desplazamiento lateral en Contactos) en la versión FULL (que no lo lleva).
De aquí podeis bajar el CAB Random_Access.cab
Que yo sepa, hay dos maneras de incluir un archivo.CAB a una ROM:
1­ El método más fácil y rápido es incluirlo en config.txt (si existe ­ no todas las ROMs lo llevan). Veamos un ejemplo (extraido de NiAx 6.0_14):
LOCK:Enabled EXEC:\Windows\cusTSK.exe \Windows\BlueTheme.tsk EXEC:\Windows\SetHSDPA.exe /Enable CAB: \Windows\Sudoku5.5.CAB XML: \Windows\Settings.xml LOCK isabled RST: Reset
Como veis la línea en negrita ejecuta un CAB, en este caso instalaba el sudoku. Lo que deberíamos hacer es pues, editar con Notepad2 el config.txt (de la carpeta /dump de la 6.1.22 Full) y incluir (ojo, hay que seguir el mismo orden, no la pongais al final, eh ??? ):
CAB: \Windows\Random_Access.cab
Ventajas: Si no gusta al personal...siempre podrán quitarlo con 'Quitar programas'
Desventajas: Si incluye texto en inglés u otro idioma, o MUIs distintos al 0C0A, quizás no funcione correctamente o si funciona, lo haga en otro idioma. La solución pasaría por reconstruir el .CAB con las modificaciones pertinentes. Cosa que escapa a este cursillo. Si alguien quiere hacerlo y luego postear la información, perfecto. Para el que quiera hacerlo necesita Cabwiz.exe
2­ ReVentar el CAB y copiar todos los programas a /dump y modificar el registro con el contenido pertinente. Vamos paso a paso. Tanquilos, suena complicado pero no lo es tanto. Sigamos... Vamos abrir el Random_Access.cab, para ello usaremos (como alguno ya apuntaba) el CAB Manager.exe que debereis tenerlo en c:\ROMDonalds.
Abrimos el programa (que por razones que desconozco está medio en francés medio en inglés ) y abrimos el Random_Access.cab dandole al icono CAB (arriba ­ izda). Al pulsar se abre un explorador para buscar la ubicación, si os fijais en una curiosidad abajo, pone: Tipo All(*.cab,*.tsk,*.000). Nosotros vamos abrir del tipo CAB, pero ¿sabeis que son los de tipo .TSK? Pues sí, los temas que acompañan la ROM. (Podeis probarlo en otro momento). Bueno una vez abierto nos interesan dos pestañas:
Files y Registry Keys. Veamos una imágen:
He marcado en rojo lo que nos interesa (esta claro que lo mío NO es el dibujo...jajaja)
Lo primero que vamos hacer es extraer los archivos y a copiarlos dentro de la carpeta /dump. Lo primero es marcar el icono Use Folder Names (tiene que tener una X ), si no lo haceis extraera la copia de los archivos en /dump/windows.
Vamos a extraerlos, para ello pulsamos el icono (marcado rojo de arriba a la izda ­ que es una carpeta con cremallera y pone 'SEL.'). Al pulsar sonbre el icono de extracción se abre una pantalla nueva con el contenido (4 archivos) ya seleccionado. Sólo tenemos que apretar botón Extract y seleccionar el directorio de destino (/dump).
Un poco rollo...almenos de explicar, pero cada vez es lo mismo...práctica, práctica, ...
Bueno hasta aquí fácil, ya tenemos los 4 archivos en /dump. Ahora vamos por el regsitro, si miramos en la pestaña Registry Keys estan las modificaciones a realizar. Pero ¿para qué se invento el 'copiar y pegar'?... Pulsar sobre el otro icono marcado en rojo, XML. Y lo mismo, pestaña Registry Keys... oalala...esto sí que sí.
Copiamos y reservamos este registro (en un archivo, en el portapapeles, donde quieras), ya que primero hay que aprender a manejar el registro.
¿Dónde está el registro? ¿Qué archivos son? Bueno veamos, tal como tenemos ahora la ROM los archivos que actuan sobre el REGISTRO son :
1.
2.
3.
default.hv config.xml (este
porque
y
es
llamado
user.hv
archivos.provxml
desde
config.txt)
Este es el orden...primero escriben default y user.hv, después modifican el registro los .provxml y por último el config.xml. Es decir, lo excrito en el registro por los primeros archivos puede cambiar posteriormente a medida que se ejecutan, uno tras otro, los siguientes archivos durante el arranque de la Trinity.
Bien, nosotros vamos a trabajar con default.hv y user.hv Si alguien sabe reescribir código XML pues que intente modificar el config.xml (con el contenido del resgitro) y amablemente lo publicaré aquí.
En este caso el contenido del registro ya nos delata que vamos a necesitar los dos, default y user. Por lo general sólo se utiliza default.hv. Pero en este caso usaremos los dos.
Aquí esta el detalle que nos da la información:
[HKEY_CURRENT_USER\Software\Microsoft\Today\Keys\113]
<­­­­
user.hv
[HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\Rai\:MSCONTACTS] <­­­ default.hv
Ahora vamos a utilizar la carpeta 03­Registry (veis como todo tiene un orden), dentro hay dos carpetas: For default.hv y For user.hv (no posían ser más claras... )
Entonces copiemos el archivo /dump/user.hv a /03­Registry/For user.hv y /dump/default.hv a /03­
Registry/For default.hv
Bueno, hasta aquí fácil...vamos a complicarlo un poco más.
Primero, entremos en /For user.hv, cogemos el archivo user.hv, lo arrastramos y soltamos encima de user_hv_boot_rgu.bat, se abre una pantalla, realiza una operación, le damos a enter y ya tenemos un archivo nuevo: boot.rgu
Lo abrimos con notepad2, lo primero que hay que hacer es cambiar el formato, File/Encoding seleccionar UNICODE (con la ROM siempre trabajaremos con este formato). Acto seguido, en la línea 1 escribimos: REGEDIT4 apretamos una vez y copíamos la parte del registro que afecta a USER. Quedaría así:
REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Today\Keys\11 3]
"Open" = "\Windows\RandomAccess.exe"
"" = "Contacts" <­­­­­ Fijaros que está en inglés, cambiarlo por Contactos Pero nos daría error después porque confunde el carcater '\'. Sólo en los campos, no en la clave de registro. Debemos rectificar con:
REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Today\Keys\11 3]
"Open" = "\\Windows\\RandomAccess.exe"
"" = "Contactos"
Doble '\\' en los campos.
File / Save y lo guardamos (modificado). Ahora cogemos el boot.rgu, arrastramos y soltamos encima de boot_rgu_user_hv.bat y con ello obtenemos el user.hv (OJO. este user.hv es el nuevo, el antiguo ha sido renombrado a user­original.hv)
Copiamos el user.hv (nuevo) y lo pegamos en /dump.
Bueno hecho el user.hv vamos a por el dafault.hv. Lo primero es copiarlo a /03­Registry/For default.hv, luego lo cogemos, arrastramos y soltamos sobre default_hv_boot_rgu.bat e igual que antes se abre una ventana dos, realiza un proceso, apretamos un tecla, se cierra y aparece boot.rgu. Como con el anterior lo abrimos con Notepad2. Lo primero, cambiar encoding a UNICODE y escribir en la primera línea REGEDIT4. Ahora usaremos el contenido restante del CAB Manager:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\Rai\:M SCONTACTS]
"" = ""
"1" = "RandomAccess.exe"
"0" = "RandomAccess"
[HKEY_LOCAL_MACHINE\Software\Microsoft\AddrBook]
"" = ""
"Flags" = dword : 01004000
Antes de pegar en boot.rgu deberemos buscar alguna cadena igual/parecida en boot.rgu. Para ello marcamos y copiamos al portapapeles la primera cadena:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\Rai\:M SCONTACTS]
Y vamos a Edit, Find (se abre una ventana de búsqueda) y pegamos la cadena y pulsamos el botón Find (buscar) y sí, encuentra una cadena:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\Rai\:M SCONTACTS]
"3"=dword:0
"2"=dword:1
"1"=":MSPOUTLOOK contacts"
"0"="Contacts"
Bueno, fácil, sustituimos los valores 1 y 0 por:
"1" = "RandomAccess.exe"
"0" = "RandomAccess"
Con eso tenemos lista la primera, vamos a buscar si existe la segunda:
[HKEY_LOCAL_MACHINE\Software\Microsoft\AddrBook]
Vemos que no encuentra nada...entonces deberemos pegar el registro en boot.rgu
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Microsoft\AddrBook]
"" = ""
"Flags" = dword : 01004000
Aquí hay que arreglar el espacio vacío entre d:01, estos espacios no pueden estar. Tiene que quedar así:
"Flags" = dword:01004000
Y ya para acabar, hay un bug en una cadena que no hace correctamente a la hora de pasar de hv a rgu, que si no lo arreglamos nos daría problemas a la hora de pasar de rgu a hv. Es esta:
[HKEY_LOCAL_MACHINE\Software\Apps\Shared]
"\Windows\mscoree.dll"=dword:1
Buscarla y recordar, como ya comenté, que hay que poner los \\
[HKEY_LOCAL_MACHINE\Software\Apps\Shared]
"\\Windows\\mscoree.dll"=dword:1
Esto solo pasa la primera vez...ahora cada vez que trabajaremos lo haremos con boot.rgu , hacer los cambios y pasar a .hv.
Bueno pues una vez acabado, lo guardamos y salimos del programa. E igual que antes lo cogemos, arrastramos y soltamos encima de boot_rgu_default_hv.bat. Con lo que obtenemos un nuevo default.hv pasando el original a llamarse defaul­original.hv.
Copiamos el default.hv y lo pegamos en /dump (sobreescribiendo el anterior).
Con esto hemos acabado la instalación de Random_Access. Sólo nos queda volver a compilar (igual que hicimos la primera vez) y flasear de nuevo la Trinity. El resultado en contactos es este:
La barra es gris pero hay distintos colores: negra, azul, verde, púrpura, roja, amarilla. Lo mismo ocurre con el cuadrado que envuelve a la letra. Si quereis cambiarlos podeis hacerlo vosotros mismos cambiando y renombrando los archivos .PNG en la carpeta /dump.
¿Cómo quitar el Explorador de Windows de la ROM? Bueno, pues es bastante fácil. Lo primero eliminar el modulo (carpeta) fexplore.exe de /dump y el archivo fexplore.
(lnk), que es el enlace. Ahora debemos abrir con Notepad2 el initflashfiles.dat y buscar esta línea:
Directory("\Windows\Menú Inicio\Programas"):­File("Explorador de archivos.lnk","\Windows\fexplore.lnk"). Tenemos 2 opciones o la borramos por completo o la comentamos (comentar significa poner ; ­punto y coma delante, vereis algunas líneas que lo llevan). Elegimos borrar toda la línea El siguiente paso es desmarcar el Read Only, comprobar que este en formato UNICODE y Save (guardar). Luego ya podeis cerrar el programa. Este archivo también tiene una peculiaridad y es que si en vez de usar el Notepad2, usais el Bloc de Notas, al guardar el archivo crea dos caracteres al principio que deben ser borrados con un editor hexadecimal. Y como ya vimos anteriormente, aquí todo tiene una continuidad, dicho editor está en la carpeta 04­xvi32 (Hex Editor) para comprobar como se ha grabado lanzar XVI32.exe. Si los 2 primeros bytes son FF FE deberemos borrarlos y posteriormente guardar el archivo.
Bueno, en el caso que nos encontremos esos bytes (en rojo) hay que borrarlos y guardar.
Bueno ya sólo nos queda modificar el atributo de initflashfiles.dat a Sólo lectura. Botón derecho del mouse sobre el archivo, Propiedades, Sólo lectura, Aplicar y Aceptar.
Ahora tocaría compilar de nuevo la ROM, para posteriormente flasear.
Veamos como sustiuir el 'Grabador de voz' del Menú Inicio por Task Manager
Aquí trabajaremos única y exclusivamente con initflashfiles.dat (repasar los apuntes anteriores sobre como operar con este archivo).
Abrimos el archivo con Notepa2, como siempre comprobar formato UNICODE y desmarcar Read Only del menú File.
Vamos a buscar la línea que contiene el Grabador de voz y que haga referencia a Menú Inico:
Directory("\Windows\Menú Inicio"):­File("Grabador de voz.lnk","\Windows\Voice Recorder.lnk")
Esta es la línea en concreto. Vamos aprovecharla sin borrarla, sólo necesitamos cambiar el nombre 'Grabador de voz.lnk' y 'Voice Recorder.lnk' por:
Directory("\Windows\Menú Inicio"):­File("Adm de Tareas.lnk","\Windows\TaskMgr.lnk")
NoTa: El enlace TaskMgr.lnk lo he buscado en /dump y 'Adm. de Tareas.lnk' es el nombre que aparecerá en pantalla (podeis poner el nombre que querais)
OK, pues ya está, guardamos, volver a marcar como Read Only (sólo lectura) y salimos del programa. Ya por último, sólo queda compilar y flasear. Resultado:
Instalar Resco Explorer dentro de la ROM en español
Lo primero bajarse el CAB desde http://www.resco.net/pocketpc/explorer/downloads.asp
Bajaros el Multilanguage 'Download CAB'.
Una vez descargado vamos a inspeccionarlo. Como siembre lo abrimos con CAB Manager.exe, esta vez como ya se ha comentado en posts posteriores, el icono XML no está activo aunque si hay información en la pestaña Registry Keys. De todas formas los datos contenidos sólo son propaganda (si alguien ve algo importante que lo diga).
Lo siguiente es extraer todos los archivos y carpetas con el icono de siempre (carpeta con cremallera) a un directorio distinto del /dump. Vosotros mismos, personalmente tengo una carpeta llamada CAB donde los tengo todos y, allí mismo los abro en carpetas con el mismo nombre.
Una vez extraidos los archivos/carpetas entramos en el directorio de extracción y vemos:
Dos carpetas, Program Files y Windows, 000Setup.dll y Explorer.inf. Del 000Setup.dll nos podemos olvidar sólo sirve para la instalación del CAB. Entremos en la carpeta Windows y, de aquí, copiamos: RExplorer.htm, RUpdate.exe y RUpdate.040a.mui a la carpeta /dump. Ahora entramos en la carpeta Program Files/Resco Explorer y copiamos: Todos los archivos a la carpeta /dump. Ahora entramos en /Lang y copiamos Explorer.040a.mui y RFileShell.040a.mui a la carpeta /dump.
Bueno con ello ya tenemos todos los programas necesarios dentro de /dump. Depués os explico porque sólo he cogido los mui con numeración 040a. De todas formas ya sabeis que los españoles son 0C0A.MUI esto ya os puede dar una pista. Sigamos, bueno, como ya hemos dicho, no hará falta tocar nada del regsitro, es decir, default.hv (rgu) e user.hv (rgu) ni tocarlos. El único que debemos tocar es initflashfiles.dat para indicar donde y con que nombre son llamados los programas Resco Explorer y RUpdate. Os pongo lo que yo he puesto para aligerar (ya no comento como editar, guardar, etc...el initflashfiles.dat; lo doy por sabido):
Directory("\Windows\Menú Inicio\Programas"):­File("Explorador Resco.lnk","\Windows\Explorer.lnk")
Directory("\Windows\Menú Inicio\Programas"):­File("Actualizar Resco.lnk","\Windows\RUpdate.lnk")
Directory("\Windows\Help"):­File("RExplorer.htm","\Windows\RExplorer.htm")
Estas líneas las he puesto al final, pero ojo, dejar siempre como mínimo una línea en blanco al final <­ IMPORTANTE
Veamos que significa cada línea, la primera dice que el archivo estará ubicado en Programas con el nombre Explorador Resco y que este, apunta a Explorer.lnk que es un enlace (link) al .exe.
La segunda viene a decir lo mismo, pero para el RUpdate.
Y la tercera, pues lo mismo, pero para el menú ayuda. Que no es otra cosa que una página WEB (htm).
Lo primero que os podeis preguntar es de dónde he sacado toda esta información, lo primero la experiencia y lo segundo del Explorer.inf. Pego aquí las últimas líneas:
[RaccourcisCourts]
Resco File %AppName%.lnk, 0, %AppName%.exe, %CE11% ; (\Windows\Programs)
Resco Update.lnk, 0, RUpdate.exe, %CE11% ; (\Windows\Programs)
[Raccourci02],
Resco File %AppName%.lnk, 0, "R%AppName%.htm" ; Répertoire (ID Dir 006) : %CE2%\Help (\
Windows\Help)
Esta un poco liado el tema, pero si mirais con atención lo vereis claro. Bueno todavía no hemos acabado, aunque tenemos el RUpdate.exe y Explorer.exe no tenemos los .lnk
Vamos a crearlos, para ello abrimos el Notepad2 con formato ANSI. Y escribimos:
72#"\windows\RUpdate.exe"
y lo guardamos con el nombre RUpdate.lnk (el usado en initflashfiles.dat), marcamos como Read Only y cerramos el programa.
Repetimos la misma operación pero ahora escribimos:
75#"\windows\Explorer.exe" y lo mismo que antes, lo guardamos como Explorer.lnk, marcamos como Read Only y cerramos.
Los número pueden ser los que querais, así es como se crean los enlaces. Ni más ni menos. Supongo que debe ser algún formato aceptado. Se hacen así por LEY.
Bueno con esto ya podríamos compilar y funcionaría el Resco Explorer y el RUpdate... pero...en inglés. Ohhhhh!!!!
Veamos como podemos arreglarlo. Antes os he comentado que el español equivale a 0C0A pues entonces que hacen esos 040a, hay que cambiarles la numeración.
Pero eso tampoco es todo...ahora viene cuando me saco el conejo del sombrero. Os pongo un solo ejemplo de uno de los MUI. Fijaros en estos dos archivos:
RFileShell.dll y RFileShell.0C0A.mui (con el número ya cambiado)
¿ Qué diferencias les veis ?
Pues que si el 0C0A.mui significa 'en español' a este segundo archivo le falta la extensión .dll. Quedaría así: RFileShell.dll.0C0A.mui
Entonces hemos de renombrar los tres MUIs que teníamos tal que:
RFileShell.dll.0C0A.mui, Explorer.exe.0C0A.mui y RUpdate.exe.0C0A.mui.
Con estos tres cambios ya podríamos compilar la ROM y flasear. El resultado esta visible aquí: http://www.htcmania.com/showpost.php...5&postcount=91
Avance: Aunque el 040a ya me indicaba que seguramente ese era el archivo en español, lo he comprobado con otra herramienta que viene con ROMDonalds, en la carpeta 09­AdvancedTools y teneis la carpeta Resource Hacker y dentro el ResHacker.exe Este programa sirve para estos menesteres, podeis probar de abrir esos MUI, DLL e incluso EXE.
En la próxima clase veremos su uso, para traducir ROMs.