Treeki I tried that a while back without much luck. The unpacked size is over 1gb and repacking does not reduce the size again. Even so, the larger file acts just like the original .srl. What I didn't do was edit the header, I simply replaced it. I can't upload any part of the .srl without breaking the NDA I'm under, but I can show you some differences in the header I found. (This way, our dev tags stay offline).
Almost all the differences were in the .srl header, some extra data --completely opposite what I would have expected. (I assumed the .nds header would have the extra data that allows it to run from a flashcart.)
Here's the extra data in my file that's not found on the .nds header (I chose a small .nds file to speed things up; Windy X Windam)
My.srl (partial) :
0x84 ROM header size 0x00004000
0x88 ? 0x00001000
0x8C ? 0x00000600
0x90 ? 0x00040004
0x15C Logo CRC 0xCF56 (OK)
0x15E Header CRC 0xE8EE (OK)
0x180 ? 0x8D898581
0x184 ? 0x8C888480
0x188 ? 0x9C989490
0x18C ? 0x8C888480
0x190 ? 0x9C989490
0x198 ? 0x07C03740
0x19C ? 0x07403700
0x1A0 ? 0x00403000
0x1A4 ? 0x07C03740
0x1A8 ? 0x07403700
0x1AC ? 0x0300000F
0x1B0 ? 0xFFFFFFFF
0x1B4 ? 0x00006008
0x1B8 ? 0x00040406
0x1BC ? 0x81000000
0x1C0 ? 0x00203000
0x1C8 ? 0x02400000
0x1CC ? 0x00002DB4
0x1D0 ? 0x00207000
0x1D4 ? 0x03030CEC
0x1D8 ? 0x02E80000
0x1DC ? 0x000493C4
0x1E0 ? 0x00004000
0x1E4 ? 0x001BB400
0x1E8 ? 0x00203000
0x1EC ? 0x0004D400
0x1F0 ? 0x001BF400
0x1F4 ? 0x0000A500
0x1F8 ? 0x001C9A00
0x1FC ? 0x00000528
Banner CRC 0x4668 (OK)
English banner text, line 1 NINTENDO DSi?
English banner text, line 2 Demonstration
File CRC32: 5204E726
SMT dumper v1.0 curruption check: OK
ARM7 binary hash : C70BEE9E6FFA3234BDE0650E8912F2FFF98E36D9
WARNING! ARM7 binary is NOT verified!
WARNING! ARM7 RAM address does not point to shared memory!
----------
Compared to
wxw.nds header (from the same address down):
0x84 ROM header size 0x00004000
0x88 ? 0x00004B9C
0x15C Logo CRC 0xCF56 (OK)
0x15E Header CRC 0x5FD5 (OK)
0x1BC ? 0x60000000
Banner CRC 0x5A6C (OK)
English banner text, line 1 WINDY WINDAM
English banner text, line 2 Graffiti Entertainment
ARM9 footer found.
1000 2000 4FA54
DS Download Play(TM) / Wireless MultiBoot signature: INVALID
header hash : EF95604E1CAF497620B392648F920D0D802F81F1
ARM9 hash : 8B1EF3DB1BA6AA353C9BDB848D1CE34501449C21
ARM7 hash : A64C309486C205043DCEFBECA3183334D827BD0D
combined hash : 14AC85320F636EE6847C9185EE92BDB1F52204E5
signature hash : 32C066EA0992164CE004B495E28EA366220FA063
File CRC32: 054C8007
SMT dumper v1.0 curruption check: OK
ARM7 binary hash : A64C309486C205043DCEFBECA3183334D827BD0D
WARNING! ARM7 binary is NOT verified!
WARNING! ARM7 RAM address does not point to shared memory!
-------
Notice all the extra addresses in the .srl. The only thing the .nds has that is extra is the footer, which seems to add download play for two players with one card. Honesty unsure about the rest of the footer (if it does anything different). The trouble is, I can's actually edit the headers, only view and replace them. These are just text file dumps of the header info, but I have no way to inject info back into the .bin. I could replace the header entirely by re-packing, but that's about it.
The current way I work with the .srl is to use a NFS explorer to view the game's files (completely different than what the unpacked rom shows). With an unpack, you see the game's arm, y, banner, and header bin files. Browsing through nitro, I see the game's files themselves (all the assets, levels, etc.) Once I create a level with the editor our lead coder created, I export it to a .bin with a title I come up with based on the level (IE: pants.bin) and insert it. There is virtually no build compilation on my end. I only use the editor to compile a level and drop it into the build with the nitro browser. The header info is not located in this data. Unfortunately, my job isn't the coding part. I do the initial design docs, concept art, a good deal of in-game art and promotional illustrations, writing, story and level design.
What I'm hoping we'll eventually come up with is a way to patch the actual .srl file into working as an .nds file, or convert it. They're so similar, I'm really surprised it hasn't been done already. I wish I could supply the .srl to work on, but we really could have our license revoked if it ever got out. Our tags are in the header (and I can't change that from here.) I know there are .srl files out there though. Hmmm... |