Difference between revisions of "DS-Xtreme OpenSource Firmware Project"
(Fixed some spelling, etc. Keep up the good work!) |
|||
Line 10: | Line 10: | ||
<div style="font-size:200%;padding:0.4em;">'''DS-Xtreme OpenSource Firmware Project'''</div> | <div style="font-size:200%;padding:0.4em;">'''DS-Xtreme OpenSource Firmware Project'''</div> | ||
|- | |- | ||
− | |The '''scope''' of this project is to open up the DS-Xtreme flash cartridge hardware/firmware for homebrewers to modify. I have asked the | + | |The '''scope''' of this project is to open up the DS-Xtreme flash cartridge hardware/firmware for homebrewers to modify. I have asked the DS-X for the information prior on embarking on this project. No information was forthcoming. |
Line 46: | Line 46: | ||
'''11)''' Using the knowledge gained make some schematics of the DS-X cartridge. | '''11)''' Using the knowledge gained make some schematics of the DS-X cartridge. | ||
− | This order was chosen because the firmware "'''[[:image:V112_update.bin| update.bin]]'''" is one large zipped?, binary file. So first we have to decompile the updater application to understand how | + | This order was chosen because the firmware "'''[[:image:V112_update.bin| update.bin]]'''" is one large zipped?, binary file. So first we have to decompile the updater application to understand how it's zipped and what parts make up the USB, FPGA and NDS launcher.... |
|} | |} | ||
Line 55: | Line 55: | ||
== '''How [http://shunyweb.info/forum/ Shuny's] Downgrader Works''' == | == '''How [http://shunyweb.info/forum/ Shuny's] Downgrader Works''' == | ||
− | At offset 0x000B79F4 in the [[:media:V112_UpdaterTool.rar| DSX updater application file]] you will find the URL that points to the | + | At offset 0x000B79F4 in the [[:media:V112_UpdaterTool.rar| DSX updater application file]] you will find the URL that points to the DS-X server. This is where [[:media:V112_update.txt| update.txt]] can be loaded by the [http://wiki.gbatemp.net/images/c/cf/V112_UpdaterTool.rar updater application]. |
In the file [[:media:V112_update.txt| update.txt]] there is a URL which tells the [[:media:V112_UpdaterTool.rar| DSX updater application file]] where it can load [[:media:V112_update.bin| updater.bin]] from. | In the file [[:media:V112_update.txt| update.txt]] there is a URL which tells the [[:media:V112_UpdaterTool.rar| DSX updater application file]] where it can load [[:media:V112_update.bin| updater.bin]] from. | ||
Line 70: | Line 70: | ||
− | Using a [http://www.mirkes.de/blog/uploads/Downloads/mpth_18.exe hex/binary editor] alter the URL found in the PC updater at offset '''0x000B79F4''' | + | Using a [http://www.mirkes.de/blog/uploads/Downloads/mpth_18.exe hex/binary editor] ,alter the URL found in the PC updater at offset '''0x000B79F4''' |
Line 104: | Line 104: | ||
'''My Path''' is whatever path or paths you choose to put the update files in.<BR> | '''My Path''' is whatever path or paths you choose to put the update files in.<BR> | ||
<BR> | <BR> | ||
− | Use START->RUN->CMD ipconfig /ALL to find your Host Name and IP Address, if you | + | Use START->RUN->CMD ipconfig /ALL to find your Host Name and IP Address, if you don't know it<BR> |
Line 118: | Line 118: | ||
Initial viewing of the PC Updater tool yields the following information. | Initial viewing of the PC Updater tool yields the following information. | ||
− | 1) The updater was coded with [http://www.codegear.com/products/delphi/win32 Borland Delphi] development | + | 1) The updater was coded with [http://www.codegear.com/products/delphi/win32 Borland Delphi] development environment in C/C++. |
− | 2) The updater contains [http://zlib.net/ ZLIB compression | + | 2) The updater contains [http://zlib.net/ ZLIB compression libraries] (probably for the firmware). |
− | 3) The updater contains [https://www.altera.com/support/software/download/programming/jam/jam-index.html Altera Jam] FPGA communication | + | 3) The updater contains [https://www.altera.com/support/software/download/programming/jam/jam-index.html Altera Jam] FPGA communication libraries (maybe for the JTAG connector on the circuit board). |
4) The updater contains [http://www.indyproject.org/Sockets/index.EN.aspx Indy Sockets library.] | 4) The updater contains [http://www.indyproject.org/Sockets/index.EN.aspx Indy Sockets library.] | ||
− | 5) The Updater contains [http://download.cypress.com.edgesuite.net/design_resources/reference_designs/contents/cy4604___usb_developer_s_ustudio_18.pdf Cypress USB communication | + | 5) The Updater contains [http://download.cypress.com.edgesuite.net/design_resources/reference_designs/contents/cy4604___usb_developer_s_ustudio_18.pdf Cypress USB communication libraries.] |
− | On running the updater, it uses windows sockets api to download '''[[:image:V112_update.txt| update.txt]]''' and '''[[:image:V112_update.bin| update.bin]]''' from the | + | On running the updater, it uses windows sockets api to download '''[[:image:V112_update.txt| update.txt]]''' and '''[[:image:V112_update.bin| update.bin]]''' from the DS-X server. The Indy Sockets api is probably the wrapper to call the windows sockets api, for platform independency. Delphi also has wrappers for the application windows. The applications resources can easily be pulled out with XN Resource editor. I've also noticed on some of the disassembly that the updater looks like it can take command line arguments? |
Line 131: | Line 131: | ||
main page redesigned for clarity. | main page redesigned for clarity. | ||
− | Firmware and other files moved to a | + | Firmware and other files moved to a separate wiki page, and descriptions added for the files. |
Link to the initial hardware explorations, files and api's added. | Link to the initial hardware explorations, files and api's added. | ||
− | Changed the Mozilla references to the Indy.Sockets | + | Changed the Mozilla references to the Indy.Sockets libraries. |
Some terminology corrected | Some terminology corrected | ||
Line 145: | Line 145: | ||
added a little tutorial on how to make the updater load locally | added a little tutorial on how to make the updater load locally | ||
− | Although it pains me so, I removed the | + | Although it pains me so, I removed the DS-X comment, by request of throwingwinks :( |
ToDo: | ToDo: | ||
I'm currently trying out a few disassemblers on the[[:image:V112_UpdaterTool.rar| PC updater application .exe]] to see which gives me the best results. | I'm currently trying out a few disassemblers on the[[:image:V112_UpdaterTool.rar| PC updater application .exe]] to see which gives me the best results. | ||
− | Get hold of the NDS launcher that was | + | Get hold of the NDS launcher that was acquired with NO$GB and the wifi homebrew. This could be useful to This log need moving to the discussion page. |
[[Category:NDS Slot-1 Carts]] | [[Category:NDS Slot-1 Carts]] |
Revision as of 02:55, 13 January 2008
| |||
|
How Shuny's Downgrader Works
At offset 0x000B79F4 in the DSX updater application file you will find the URL that points to the DS-X server. This is where update.txt can be loaded by the updater application.
In the file update.txt there is a URL which tells the DSX updater application file where it can load updater.bin from.
Shuny patched these URL's to point to another server where the older update.txt and update.bin could be found.
Hats of to Shuny for a very clever and inventive piece of work.
Modifying The PC Updater Application To Load Update.txt and Update.bin Off Your PC
Using a hex/binary editor ,alter the URL found in the PC updater at offset 0x000B79F4
0x0B79F0: 02 29 B9 59 68 74 74 70 3A 2F 2F 75 70 64 61 74 - .)¹Yhttp://updat
0x0B7A00: 65 2E 64 73 2D 78 74 72 65 6D 65 2E 63 6F 6D 2F - e.ds-xtreme.com/
0x0B7A10: 75 70 64 61 74 65 6A 2F 75 70 64 61 74 65 2E 74 - updatej/update.t
0x0B7A20: 78 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - xt..............
0x0B7A30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................
0x0B7A40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................
To the following format: file://My PC Name or My PC IP/My Path/update.txt (you must terminate the string with zero).
Try not to go to far past the original URL string length as it might cause trouble.
0x0B79F0: 02 29 B9 59 66 69 6C 65 3A 2F 2F 4D 79 50 43 6F - .)¹Yfile://MyPCo
0x0B7A00: 72 49 50 2F 4D 79 50 61 74 68 2F 75 70 64 61 74 - rIP/MyPath/updat
0x0B7A10: 65 2E 74 78 74 00 00 00 00 00 00 00 00 00 00 00 - e.txt...........
0x0B7A20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................
0x0B7A30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................
0x0B7A40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................
Next change the URL found in update.txt with file://My PC Name Or My PC IP/My Path/update.bin
My PC Name is what you see the PC called on the network (Host Name)
My PC IP is your local machines IP address I.E 192.168.0.100
My Path is whatever path or paths you choose to put the update files in.
Use START->RUN->CMD ipconfig /ALL to find your Host Name and IP Address, if you don't know it
Work In Progress Log
5th January 2008:
Initial viewing of the PC Updater tool yields the following information.
1) The updater was coded with Borland Delphi development environment in C/C++. 2) The updater contains ZLIB compression libraries (probably for the firmware). 3) The updater contains Altera Jam FPGA communication libraries (maybe for the JTAG connector on the circuit board). 4) The updater contains Indy Sockets library. 5) The Updater contains Cypress USB communication libraries.
On running the updater, it uses windows sockets api to download update.txt and update.bin from the DS-X server. The Indy Sockets api is probably the wrapper to call the windows sockets api, for platform independency. Delphi also has wrappers for the application windows. The applications resources can easily be pulled out with XN Resource editor. I've also noticed on some of the disassembly that the updater looks like it can take command line arguments?
7th January 2008:
main page redesigned for clarity.
Firmware and other files moved to a separate wiki page, and descriptions added for the files.
Link to the initial hardware explorations, files and api's added.
Changed the Mozilla references to the Indy.Sockets libraries.
Some terminology corrected
11th January
corrected the how did Shuny do it (missed the bit about altering update.txt)
added a little tutorial on how to make the updater load locally
Although it pains me so, I removed the DS-X comment, by request of throwingwinks :(
ToDo:
I'm currently trying out a few disassemblers on the PC updater application .exe to see which gives me the best results. Get hold of the NDS launcher that was acquired with NO$GB and the wifi homebrew. This could be useful to This log need moving to the discussion page.