This thread isn't for custom ROMs, but to learn and experiment on the cooking technique. There are already various custom roms hanging around now.
Currently the most 'all-in-one' tool to cook ROMs is latest Pako777's i900 EXECUTOR, which can be found around. If not, you have to deal with multiple tools to handle each particular step in the process.
Some handy tutorials/tools to get you started:
Guide to Flashing ROMs ( by TACCHAN23 ) A very complete place to get started in the I8000 ROMs world
RodrigoFD O2UTIL ( multi-purpose utility for I8000/I8000L/B7610 roms)
Brief tutorial on how to cook a I8000 ROM
1. I8000 accepts flashing two PDA ROM formats: MST and NB0. The first one includes an image of internal memory, the second doesn't. Both can have an optional language pack with multiple languages.
We don't cook MST roms, but NB0 ones, as structure is simpler. If you want use a MST as a base, you can use my utility to extract MST contents (see links above).
2. At the moment, YOU CAN'T COOK MULTILANGUAGE ROMS. So choose one language at a time to cook your roms.
3. NB0 file: is composed of: 256-bytes header, and the rest is a file you can call 'PDA.OS.NB'... This last one is the OS-IMAGE, and corresponds exactly to the .BIN file that Sorg utility dumps.
4. PDA.OS.NB is 'similar' to other devices .NB files, but has some non-standard formats... E.g. the MSFLASH area has an unconventional format..
It has 3 partitions: boot (0), xip (1) and imgfs (2). All can be extracted and reinserted with utility OSNBTOOL.
In the particular case of IMGFS partition, argument '-acwan' must be specified. That is: OSNBTOOL.EXE -d pda.os.nb 2 imgfs.bin -acwan
5. IMGFS.BIN extracted from PDA.OS.NB, can be dumped with IMGFSTODUMP.EXE, recommended is a modified version from WEISUN. For the inverse, to pack dump into IMGFS.BIN, use tool imgfsfromdump.exe, 'big rom' exe version.. it's a special version that allows big IMGFS files, (not the ones in XDA).
6. If you want to add new modules, or port the WM version, you have to do xip-porting and do rellocation. Supposedly Executor 2.5 does it, if not check WES guide on the matter.
7. Before repacking, you have to edit original PDA.OS.NB in an Hex editor, and expand it so it reaches size 0x1B200000 (in hex). You can just add FFFF values. My O2Util has a command for that.
8 Finally, you recompose NB0 file from the original 256 bytes header + PDA.OS.NB.NEW... And you need an additional step: patch the header.
Open such header in WinHEX editor (look for it in internet).... and look the noted positions (offsets).
In position 0x4 goes the PDA.OS.NB file size.... In Position 0x8 : block count.. Position 0xC : Checksum-32 bit.. All three are 32-bit integers, that is, integer numbers represented by 4 bytes.
To get the byte representation:
Use windows calculator (cientific mode).... input number in decimal , then change to hexadecimal, note such number, brake it in digit pairs, and invert the pairs:
33292800 (decimal) > convert to hex > 01FC0200 (hex): -> brake to pairs -> 01 FC 02 00 -> invert pairs -> 00 02 FC 01
You have to get 8 digits or letters (4 pairs).. if your number is shorter, add zeros to the left..You have to patch bytes in the header, in that way , with pairs inverted. That is called 'little endian' or LSB encoding.
Note: 'Block count' is the real byte-size of PDA.OS.NB, divided by: 0x1F800, and as for checksum, to calculate it, open PDA.OS.NB (don't include header) in WinHEX, go to menu Tools > Compute hash... > Checksum-32... Note that hex number... AGAIN, invert the pairs, and patch with this value.
9. There you have your NB0 ROM image ready to be flashed by OCTANS (in PDA option).
Edited by rodrigofd, 24 December 2009 - 02:04 AM.