Understanding UP! Rom file format ==> Need USB Capture

Post improvements made for UP, and share ideas.
mr_x
Posts: 62
Joined: Wed Dec 10, 2014 4:21 pm

Understanding UP! Rom file format ==> Need USB Capture

Post by mr_x » Fri Jan 02, 2015 7:21 pm

Hello UP! users,

I got a recent UP! mini which in fact is an "UP! mini(M)" according to the USB string.

After investigation the software/usb communication I was able to change some "ROM" settings and made the printer print with 0.1 layer height :-)

GOOD NEWS: everything is in the so called ROM file
EVEN BETTER NEWS: I managed to find out various settings and manipulated them...

... unfortunately I can not make the changes persistent.

Short note what I did:
- start UP! software
- connect printer USB
- close UP! software
- disconnect printer from USB
- now I used the registry editor to edit "set1" of the in registry cached ROM file
- started UP! software IN DEBUGGER (without USB printer attached)
- set breakpoint where it reads in data from USB and replaces the registry values
- connected printer
- reached breakpoint and jumped over the replacing code
- SUCCESS: print settings dialog allowed me to use my 0.1mm layer height settings and also the print went quite good (still needs some tweaking in flow rates, but that will come later)

Here are some notes I made:

Registry Key: [HKEY_CURRENT_USER\Software\UP 3D Printer Applications\UP!\3DRecordSystem] "SystemInfoV3" (binary)
*intersting is that there are also descriptions for the parameters in this registry key :-)*

UP! mini(M) has 4 sets (0.2,0.25,0.3,0.35mm layer height) stored in ROM (can be extended to some more sets)

The values are stored as 32 bit C float values little endian, after decoding you get for Set 1:

Set 1:
NOZZLE DIA 0.3
Layer Thick 0.2
Scan Width 0.5
Scan Times 1.0
Hatch Width 0.52
Hatch Space 4.0
Hatch Layer 3.0
Support Width 0.55
Support Space 6.0
Support Layer 3.0
Scan Speed 35.0
Hatch Speed 45.0
Support Speed 50.0
JumpSpeed 150.0
Scan Scale 1.0
Hatch Scale 1.05
Support Scale 0.9
Feed Scale 1.0
Other Param 20.0
Other Param 6.0
Other Param 1.0
Other Param 2000.0
Other Param 3000.0
Other Param 3000.0

The last "Other" parameters 2000.0/3000.0 seem to be related to acceleration and some we just need to find out later...


===== >>>>> To get things going I kindly ask for help from some other UP! users.

Since there is no ROM file for UP! mini(M) (it has ROM Version 6.1000), I have nothing to play with and need to create a ROM update myself.
I already recognized 95% of the ROM file is sent back via USB when UP! software connects to the printer.
There is no encryption in place and I also could not find any suspicious checksum bytes in the file :-).

I just need to create the correct header for my UP! mini(M) and can continue my research.

For that somebody with an (older) UP! printer needs to create an USB capture (just capture the program start, there is no need to load a model or to send it to the printer).
This will help me to understand the existing ROM file and what is sent back from printer at startup

THANKS :-)

bitflusher
Posts: 8
Joined: Mon Dec 22, 2014 6:46 am

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by bitflusher » Sun Jan 04, 2015 10:57 am

Great findings.
A quick analysis of my registry after connection with up! 2 plus with software/firmware 2.13 reveals 5 sets. I am unsure how to convert them to a nice list like yours(in the little time i have been at this).
I don't know how to capute usb transmission. This is not an older model is this still of any info you need please ask.

mr_x
Posts: 62
Joined: Wed Dec 10, 2014 4:21 pm

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by mr_x » Sun Jan 04, 2015 10:44 pm

Some progress in parsing the ROM files...

TEMP-MOD in software should be possible :mrgreen: :mrgreen: :mrgreen:
NEW Z-RESOLUTIONS will be possible :mrgreen:
NEW PRINT-SPEED-PROFILES will be possible :mrgreen:
DIFFERENT NOZZLE DIAMETER should be possible :mrgreen:

==> PLEASE HELP (see first posting) <===

Example of the UP! mini 6.06 ROM file (included in UP software):
...
DATASTART\r\n
0x0:

...
0x284: 275.000000 ABS TEMP
0x288: 185.000000 PLA TEMP
0x28c: 320.000000 ??? TEMP ? NOZZLE2?
0x290: 260.000000 ??? TEMP ? NOZZLE2?
0x294: 60.000000 BED TEMP
...

0x3ac: Up Model: UP Mini
0x3a0: ParamVer: 6.0600
...
0x420: Num Sets: 4

0x424:
Config: Set 1
Nozzle Diameter: 0.300000
Layer Thickness: 0.200000
Scan Width: 0.500000
Scan Times: 1.000000
Hatch Width: 0.520000
Hatch Space: 4.000000
Hatch Layer: 3.000000
Support Width: 0.550000
Support Space: 6.000000
Support Layer: 3.000000
Scan Speed: 35.000000
Hatch Speed: 45.000000
Support Speed: 50.000000
Jump Speed: 150.000000
Scan Scale: 1.000000
Hatch Scale: 1.050000
Support Scale: 0.900000
Feed Scale: 1.000000
Other Param 1: 20.000000
Other Param 2: 6.000000
Other Param 3: 1.000000
Other Param 4: 2000.000000
Other Param 5: 3000.000000
Other Param 6: 3000.000000
Unused 1: 0.000000
Unused 2: 0.000000
Unused 3: 0.000000
Unused 4: 0.000000
Unused 5: 0.000000
Unused 6: 0.000000

Config: Set 2
Nozzle Diameter: 0.300000
Layer Thickness: 0.250000
Scan Width: 0.530000
Scan Times: 1.000000
Hatch Width: 0.550000
Hatch Space: 6.000000
Hatch Layer: 3.000000
Support Width: 0.570000
Support Space: 8.000000
Support Layer: 3.000000
Scan Speed: 40.000000
Hatch Speed: 50.000000
Support Speed: 60.000000
Jump Speed: 150.000000
Scan Scale: 1.000000
Hatch Scale: 1.050000
Support Scale: 0.900000
Feed Scale: 1.330000
Other Param 1: 20.000000
Other Param 2: 6.000000
Other Param 3: 1.000000
Other Param 4: 2000.000000
Other Param 5: 3000.000000
Other Param 6: 3000.000000
Unused 1: 0.000000
Unused 2: 0.000000
Unused 3: 0.000000
Unused 4: 0.000000
Unused 5: 0.000000
Unused 6: 0.000000

Config: Set 3
Nozzle Diameter: 0.300000
Layer Thickness: 0.300000
Scan Width: 0.550000
Scan Times: 1.000000
Hatch Width: 0.570000
Hatch Space: 6.000000
Hatch Layer: 3.000000
Support Width: 0.600000
Support Space: 8.000000
Support Layer: 3.000000
Scan Speed: 40.000000
Hatch Speed: 50.000000
Support Speed: 60.000000
Jump Speed: 150.000000
Scan Scale: 1.000000
Hatch Scale: 1.050000
Support Scale: 0.900000
Feed Scale: 1.650000
Other Param 1: 20.000000
Other Param 2: 6.000000
Other Param 3: 1.000000
Other Param 4: 2000.000000
Other Param 5: 3000.000000
Other Param 6: 3000.000000
Unused 1: 0.000000
Unused 2: 0.000000
Unused 3: 0.000000
Unused 4: 0.000000
Unused 5: 0.000000
Unused 6: 0.000000

Config: Set 4
Nozzle Diameter: 0.300000
Layer Thickness: 0.350000
Scan Width: 0.600000
Scan Times: 1.000000
Hatch Width: 0.630000
Hatch Space: 6.000000
Hatch Layer: 3.000000
Support Width: 0.660000
Support Space: 8.000000
Support Layer: 3.000000
Scan Speed: 40.000000
Hatch Speed: 50.000000
Support Speed: 60.000000
Jump Speed: 150.000000
Scan Scale: 1.000000
Hatch Scale: 1.050000
Support Scale: 0.900000
Feed Scale: 2.100000
Other Param 1: 20.000000
Other Param 2: 6.000000
Other Param 3: 1.000000
Other Param 4: 2000.000000
Other Param 5: 3000.000000
Other Param 6: 3000.000000
Unused 1: 0.000000
Unused 2: 0.000000
Unused 3: 0.000000
Unused 4: 0.000000
Unused 5: 0.000000
Unused 6: 0.000000

caesar
Posts: 64
Joined: Sat Feb 22, 2014 1:32 am
Location: Romania

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by caesar » Mon Jan 05, 2015 10:00 am

Nice find!

What do you recommend to use to capture initial USB comm?

I have an old Up Mini here.

mr_x
Posts: 62
Joined: Wed Dec 10, 2014 4:21 pm

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by mr_x » Mon Jan 05, 2015 10:14 am

caesar wrote:Nice find!

What do you recommend to use to capture initial USB comm?

I have an old Up Mini here.

Turns out I might just need your registry export of that registry key.

Please do the following:

- Start->Run... type "regedit" (without the quotes) and press enter
- navigate to HKEY_CURRENT_USER->Software->UP 3D Printer Applications->UP!->3DRecordSystem
- right click on "3DRecordSystem" and choose "Export..."
- save the export in a file (e.g. "UpMini.REG")
- open explorer and go to the just saved file "UpMini.REG"
- right click on the file "UpMini.REG" and select "Open With"->"Notepad"
- copy the complete text and paste it here :-)

The text should look like this:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\UP 3D Printer Applications\UP!\3DRecordSystem]
"SystemInfoV3"=hex:c0,1b,50,00,00,00,00,00,00,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,\
ff,ff,ff,ff,00,00,00,00,00,00,f0,3f,77,27,00,00,55,50,20,4d,69,6e,69,28,4d,\
...

:mrgreen:

caesar
Posts: 64
Joined: Sat Feb 22, 2014 1:32 am
Location: Romania

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by caesar » Mon Jan 05, 2015 10:19 am

That's even easier, here you go!

Code: Select all

[HKEY_CURRENT_USER\Software\UP 3D Printer Applications\UP!\3DRecordSystem]
"SystemInfoV3"=hex:80,ab,4f,00,00,00,00,00,00,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,\
ff,ff,ff,ff,00,00,00,00,00,00,f0,3f,13,27,00,00,55,50,20,4d,69,6e,69,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,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,33,33,33,33,33,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,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,44,69,72,65,63,74,\
20,4e,6f,7a,7a,6c,65,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,00,00,00,\
00,00,00,00,00,00,00,00,01,00,00,00,85,eb,c1,40,0a,d7,43,40,66,00,00,00,00,\
00,00,00,00,00,00,00,00,00,5e,c0,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,5e,40,00,00,00,00,00,40,60,40,00,00,00,00,00,b0,8a,\
40,00,00,00,00,00,b0,8a,40,00,00,00,00,00,b0,8a,40,00,00,00,00,00,00,44,40,\
00,00,00,00,00,00,f0,3f,04,00,00,00,4e,4f,5a,5a,4c,45,20,44,49,41,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,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,4c,61,79,65,72,20,54,68,69,63,6b,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,00,00,00,00,00,00,00,00,00,00,00,00,00,53,63,61,6e,20,57,69,64,74,68,\
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,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,53,63,61,6e,20,54,69,6d,65,73,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,00,00,00,00,00,00,00,00,00,00,00,00,00,00,48,61,74,63,68,20,57,\
69,64,74,68,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,00,00,00,00,00,00,\
00,00,00,00,00,00,00,48,61,74,63,68,20,53,70,61,63,65,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,00,00,00,00,00,00,00,00,00,00,00,00,00,48,61,74,63,\
68,20,4c,61,79,65,72,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,00,00,00,\
00,00,00,00,00,00,00,00,00,00,53,75,70,70,6f,72,74,20,57,69,64,74,68,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,00,00,00,00,00,00,00,00,00,00,00,53,\
75,70,70,6f,72,74,20,53,70,61,63,65,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,00,00,00,00,00,00,00,00,00,00,00,53,75,70,70,6f,72,74,20,4c,61,79,65,\
72,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,00,00,00,00,00,00,00,00,00,\
00,00,53,63,61,6e,20,53,70,65,65,64,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,00,00,00,00,00,00,00,00,00,00,00,00,00,00,48,61,74,63,68,20,53,70,65,\
65,64,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,00,00,00,00,00,00,00,00,\
00,00,00,00,00,53,75,70,70,6f,72,74,20,53,70,65,65,64,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,00,00,00,00,00,00,00,00,00,00,00,4a,75,6d,70,53,70,\
65,65,64,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,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,53,63,61,6e,20,53,63,61,6c,65,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,00,00,00,00,00,00,00,00,00,00,00,00,00,00,48,61,74,\
63,68,20,53,63,61,6c,65,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,00,00,\
00,00,00,00,00,00,00,00,00,00,00,53,75,70,70,6f,72,74,20,53,63,61,6c,65,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,00,00,00,00,00,00,00,00,00,00,00,\
46,65,65,64,20,53,63,61,6c,65,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,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,4f,74,68,65,72,20,50,61,72,61,6d,\
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,00,00,00,00,00,00,00,00,00,00,\
00,00,00,4f,74,68,65,72,20,50,61,72,61,6d,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,00,00,00,00,00,00,00,00,00,00,00,00,00,4f,74,68,65,72,20,50,61,\
72,61,6d,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,00,00,00,00,00,00,00,\
00,00,00,00,00,00,4f,74,68,65,72,20,50,61,72,61,6d,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,00,00,00,00,00,00,00,00,00,00,00,00,00,4f,74,68,65,72,\
20,50,61,72,61,6d,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,00,00,00,00,\
00,00,00,00,00,00,00,00,00,4f,74,68,65,72,20,50,61,72,61,6d,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,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,\
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,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,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,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,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,\
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,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,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,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,00,53,65,74,20,31,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,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,40,33,33,d3,3f,00,00,00,a0,99,99,c9,3f,00,00,00,00,00,00,e0,3f,00,\
00,00,00,00,00,f0,3f,00,00,00,00,d7,a3,e0,3f,00,00,00,00,00,00,10,40,00,00,\
00,00,00,00,08,40,00,00,00,a0,00,99,e1,3f,00,00,00,00,00,00,18,40,00,00,00,\
00,00,00,08,40,00,00,00,00,00,80,41,40,00,00,00,00,00,80,46,40,00,00,00,00,\
00,00,49,40,00,00,00,00,00,c0,62,40,00,00,00,00,00,00,f0,3f,00,00,00,c0,00,\
cc,f0,3f,00,00,00,c0,cc,cc,ec,3f,00,00,00,00,00,00,f0,3f,00,00,00,00,00,00,\
34,40,00,00,00,00,00,00,18,40,00,00,00,00,00,00,f0,3f,00,00,00,00,00,40,9f,\
40,00,00,00,00,00,70,a7,40,00,00,00,00,00,70,a7,40,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,00,00,00,00,00,00,00,00,53,65,74,20,32,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,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,40,33,33,d3,3f,00,00,00,00,00,00,d0,3f,00,00,00,80,c2,\
f5,e0,3f,00,00,00,00,00,00,f0,3f,00,00,00,a0,99,99,e1,3f,00,00,00,00,00,00,\
18,40,00,00,00,00,00,00,08,40,00,00,00,a0,70,3d,e2,3f,00,00,00,00,00,00,20,\
40,00,00,00,00,00,00,08,40,00,00,00,00,00,00,44,40,00,00,00,00,00,00,49,40,\
00,00,00,00,00,00,4e,40,00,00,00,00,00,c0,62,40,00,00,00,00,00,00,f0,3f,00,\
00,00,c0,cc,cc,f0,3f,00,00,00,c0,cc,cc,ec,3f,00,00,00,20,00,47,f5,3f,00,00,\
00,00,00,00,34,40,00,00,00,00,00,00,18,40,00,00,00,00,00,00,f0,3f,00,00,00,\
00,00,40,9f,40,00,00,00,00,00,70,a7,40,00,00,00,00,00,70,a7,40,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,00,00,00,00,00,00,00,00,53,65,74,20,33,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,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,40,33,33,d3,3f,00,00,00,40,33,33,d3,3f,00,\
00,00,a0,99,99,e1,3f,00,00,00,00,00,00,f0,3f,00,00,00,a0,70,3d,e2,3f,00,00,\
00,00,00,00,18,40,00,00,00,00,00,00,08,40,00,00,00,40,33,33,e3,3f,00,00,00,\
00,00,00,20,40,00,00,00,00,00,00,08,40,00,00,00,00,00,00,44,40,00,00,00,00,\
00,00,49,40,00,00,00,00,00,00,4e,40,00,00,00,00,00,c0,62,40,00,00,00,00,00,\
00,f0,3f,00,00,00,c0,cc,cc,f0,3f,00,00,00,c0,cc,cc,ec,3f,00,00,00,60,66,66,\
fa,3f,00,00,00,00,00,00,34,40,00,00,00,00,00,00,18,40,00,00,00,00,00,00,f0,\
3f,00,00,00,00,00,40,9f,40,00,00,00,00,00,70,a7,40,00,00,00,00,00,70,a7,40,\
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,00,00,00,00,00,00,00,00,53,65,\
74,20,34,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,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,40,33,33,d3,3f,00,00,00,60,66,\
66,d6,3f,00,00,00,40,33,33,e3,3f,00,00,00,00,00,00,f0,3f,00,00,00,c0,f5,28,\
e4,3f,00,00,00,00,00,00,18,40,00,00,00,00,00,00,08,40,00,00,00,60,b8,1e,e5,\
3f,00,00,00,00,00,00,20,40,00,00,00,00,00,00,08,40,00,00,00,00,00,00,44,40,\
00,00,00,00,00,00,49,40,00,00,00,00,00,00,4e,40,00,00,00,00,00,c0,62,40,00,\
00,00,00,00,00,f0,3f,00,00,00,c0,cc,cc,f0,3f,00,00,00,c0,cc,cc,ec,3f,00,00,\
00,c0,cc,cc,00,40,00,00,00,00,00,00,34,40,00,00,00,00,00,00,18,40,00,00,00,\
00,00,00,f0,3f,00,00,00,00,00,40,9f,40,00,00,00,00,00,70,a7,40,00,00,00,00,\
00,70,a7,40,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,33,33,33,33,33,53,5e,40,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,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,cc,e4,7d,7d,65,3c,03,40,67,66,66,\
66,66,66,e6,3f,dd,f5,74,a0,d1,74,e3,3f,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,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,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,67,10,00,00,67,10,00,00,00,00,00,00,\
6c,32,32,c4,87,4c,f4,3f,67,10,00,00,00,00,00,00,6c,32,32,c4,87,4c,f4,3f,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,4e,62,10,58,39,b4,c8,3f,00,00,00,00,00,00,14,40,92,ed,7c,\
3f,35,5e,ba,3f,01,00,00,00,00,00,00,00,40,1f,00,00,64,00,00,00,05,00,00,00,\
00,00,00,00,00,00,00,00,00,60,63,40,00,00,00,00,00,60,63,40,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,69,c0,00,00,00,00,00,00,\
69,c0,00,00,00,00,00,00,69,40,00,00,00,00,00,00,69,40,00,00,00,00,00,00,14,\
c0,00,00,00,00,00,00,14,40,9a,99,99,99,99,99,b9,3f,9a,99,99,99,99,99,c9,3f,\
fa,00,00,00,36,01,00,00,32,00,00,00,64,00,00,00,96,00,00,00,40,1f,00,00,b8,\
0b,00,00,00,00,00,00,9a,99,99,99,99,99,b9,3f,9a,99,99,99,99,99,b9,3f,9a,99,\
99,99,99,99,b9,3f,9a,99,99,99,99,99,c9,3f,33,33,33,33,33,33,c3,3f,cd,cc,cc,\
cc,cc,cc,27,40,00,00,00,00,00,00,59,40,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,c0,72,40,00,00,00,00,00,00,54,40,0a,00,00,00,0a,\
00,00,00,00,00,00,00,00,00,08,40,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,33,33,33,33,33,33,d3,3f,00,00,00,00,00,00,14,40,00,00,00,00,00,40,8f,\
40,33,33,33,33,33,33,d3,3f,00,00,00,00,00,70,a7,40,00,00,00,00,00,00,34,40,\
00,00,00,00,00,00,34,40,00,00,00,00,00,00,44,40,00,00,00,00,00,00,f0,3f,00,\
00,00,00,00,40,9f,40,00,00,00,00,00,88,b3,40,ff,ff,ff,ff,00,00,00,00,9a,99,\
99,99,99,99,b9,3f,9a,99,99,99,99,99,b9,3f,00,00,00,00,00,80,56,40,9a,99,99,\
99,99,99,c9,3f,9a,99,99,99,99,99,b9,3f,9a,99,99,99,99,99,c9,3f,00,00,00,00,\
00,00,d0,3f
PS: yeah, I have a nice serial number ;)
Edit: edited the SN

mr_x
Posts: 62
Joined: Wed Dec 10, 2014 4:21 pm

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by mr_x » Mon Jan 05, 2015 11:06 am

@caesar: THANKS A LOT.

It confirmed several of my guesses.

Up Mini has printer ID 0x00002713
Up Mini(M) has printer ID 0x00002777

(Can be found at offset 0x394)

So changing the printer ID (0x394) and printer name string (0x3ac) should be enough to convert the existing 6.06 ROM file for old Up Mini into new one.

After checking a lot of the registry saved parameters it looks like ROM 6.1000 (inside of Up mini(M)) is identical to 6.06 ROM file (except the different ID values).

Will need to check this a bit more before i try to "UPGRADE" my printer :mrgreen:


:mrgreen:

User avatar
scubamatt41
Posts: 303
Joined: Thu Oct 11, 2012 7:47 am
Location: The Netherlands

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by scubamatt41 » Mon Jan 05, 2015 11:36 am

nice work!!! is it too soon to ask if there is a step to step for what we need to do to change the temp?

Just read your german post. I understand you are still testing?
Always breath out on the way UP

caesar
Posts: 64
Joined: Sat Feb 22, 2014 1:32 am
Location: Romania

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by caesar » Mon Jan 05, 2015 12:16 pm

scubamatt41, I think it is too soon at this moment.

mr_x, wouldn't it be easier to compile a "trainer" that will change program memory on the fly?
At least for those that don't want to mess with flashing their printer. This should allow the soft tempmod.

I will have a look tonight and try to make a small program.

mr_x
Posts: 62
Joined: Wed Dec 10, 2014 4:21 pm

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by mr_x » Mon Jan 05, 2015 5:41 pm

caesar wrote:scubamatt41, I think it is too soon at this moment.

mr_x, wouldn't it be easier to compile a "trainer" that will change program memory on the fly?
At least for those that don't want to mess with flashing their printer. This should allow the soft tempmod.

I will have a look tonight and try to make a small program.
A trainer is problematic since the UP software has a lot of anti debugger checks / anti patching checks inside.


My final goal is to have a small GUI to load an existing ROM file,tweak values easily and write a new ROM file.

The new ROM file then can be used with the normal UP software to be transmitted to the printer and shared here.

I did a lot of studying today and have some new findings:

ROM file consists of 5 parts (they begin directly after the "DATASTART\r\n"):
0x000: MotorParameterData (LEN: 0x1B0)
0x1B0: OutPortParameterData (LEN: 0x70)
0x220: InPortParameterData (LEN: 0x50)
0x270: HeaterParameterData (LEN: 0x120)
0x390: PrinterInfoData (LEN: 0x94)
0x424: PrintSetData (LEN: 0x550)
0x979: ROMProgram (LEN: 0xA000)

***
From observations and registry I was able to reconstruct PrinterInfoData and PrintSetData for my Up Mini(M).
MotorParameterData seem to be always same for all released UP printer so far.
ROMProgram seems to contain simple instructions (moves) for initialization / homing / ...

However OutPort and InPort ParameterData seem to differ slightly from printer to printer and also between firmware versions on same printer.
Also in HeaterParameterData are some unknown differences

==> Unfortunately this means I can not continue testing directly now since I need a ROM file for my printer as a base.
(since a single ERASE command always deletes all Data sections in one shot it's also not possible just to send the known new good values)

All users with printers which have a ROM file ( UP Plus, (old) Up Mini, UP Plus 2(H) ) can start to modify their ROM files.

***

@PP3DP: Please, please please provide the ROM file: "UP Mini(M) 6.1000.ROM". I really love the printer and want to even make it better :D

caesar
Posts: 64
Joined: Sat Feb 22, 2014 1:32 am
Location: Romania

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by caesar » Mon Jan 05, 2015 6:07 pm

mr_x, or maybe stop the software from reading from UP and writing to registry, using only the registry values?
It is safer to modify win registry than to write the ROM for each new temp change. This would pose no risk for the Mini(M)'s.


Also there is already a simple method to change just the temperature for a print job.

bitflusher
Posts: 8
Joined: Mon Dec 22, 2014 6:46 am

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by bitflusher » Mon Jan 05, 2015 10:18 pm

my up plus 2 reg export

Code: Select all

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\UP 3D Printer Applications\UP!\3DRecordSystem]
"SystemInfoV3"=hex:c0,1b,50,00,00,00,00,00,00,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,\
ff,ff,ff,ff,00,00,00,00,00,00,f0,3f,7b,27,00,00,55,50,20,50,6c,75,73,20,32,\
28,48,29,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,00,00,00,00,00,00,00,\
00,00,00,00,00,38,35,34,39,32,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,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,44,69,72,65,63,74,\
20,4e,6f,7a,7a,6c,65,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,00,00,00,\
00,00,00,00,00,00,00,00,01,00,00,00,48,e1,c2,40,e1,7a,44,40,66,00,00,00,00,\
00,00,00,00,00,00,00,00,80,61,c0,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,80,61,40,00,00,00,00,00,80,61,40,00,00,00,00,00,20,84,\
40,00,00,00,00,00,20,84,40,00,00,00,00,00,20,84,40,00,00,00,00,00,00,44,40,\
00,00,00,00,00,00,f0,3f,06,00,00,00,4e,4f,5a,5a,4c,45,20,44,49,41,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,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,4c,61,79,65,72,20,54,68,69,63,6b,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,00,00,00,00,00,00,00,00,00,00,00,00,00,53,63,61,6e,20,57,69,64,74,68,\
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,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,53,63,61,6e,20,54,69,6d,65,73,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,00,00,00,00,00,00,00,00,00,00,00,00,00,00,48,61,74,63,68,20,57,\
69,64,74,68,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,00,00,00,00,00,00,\
00,00,00,00,00,00,00,48,61,74,63,68,20,53,70,61,63,65,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,00,00,00,00,00,00,00,00,00,00,00,00,00,48,61,74,63,\
68,20,4c,61,79,65,72,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,00,00,00,\
00,00,00,00,00,00,00,00,00,00,53,75,70,70,6f,72,74,20,57,69,64,74,68,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,00,00,00,00,00,00,00,00,00,00,00,53,\
75,70,70,6f,72,74,20,53,70,61,63,65,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,00,00,00,00,00,00,00,00,00,00,00,53,75,70,70,6f,72,74,20,4c,61,79,65,\
72,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,00,00,00,00,00,00,00,00,00,\
00,00,53,63,61,6e,20,53,70,65,65,64,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,00,00,00,00,00,00,00,00,00,00,00,00,00,00,48,61,74,63,68,20,53,70,65,\
65,64,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,00,00,00,00,00,00,00,00,\
00,00,00,00,00,53,75,70,70,6f,72,74,20,53,70,65,65,64,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,00,00,00,00,00,00,00,00,00,00,00,4a,75,6d,70,53,70,\
65,65,64,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,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,53,63,61,6e,20,53,63,61,6c,65,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,00,00,00,00,00,00,00,00,00,00,00,00,00,00,48,61,74,\
63,68,20,53,63,61,6c,65,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,00,00,\
00,00,00,00,00,00,00,00,00,00,00,53,75,70,70,6f,72,74,20,53,63,61,6c,65,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,00,00,00,00,00,00,00,00,00,00,00,\
46,65,65,64,20,53,63,61,6c,65,00,00,04,00,00,00,05,d0,00,00,8c,00,6f,02,8c,\
00,6f,02,38,00,6f,02,38,00,6f,02,00,90,6f,02,00,60,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,4f,74,68,65,72,20,50,61,72,61,6d,\
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,00,00,00,00,00,00,00,00,00,00,\
00,00,00,4f,74,68,65,72,20,50,61,72,61,6d,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,00,00,00,00,00,00,00,00,00,00,00,00,00,4f,74,68,65,72,20,50,61,\
72,61,6d,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,00,00,00,00,00,00,00,\
00,00,00,00,00,00,4f,74,68,65,72,20,50,61,72,61,6d,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,00,00,00,00,00,00,00,00,00,00,00,00,00,4f,74,68,65,72,\
20,50,61,72,61,6d,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,00,00,00,00,\
00,00,00,00,00,00,00,00,00,4f,74,68,65,72,20,50,61,72,61,6d,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,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,\
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,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,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,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,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,\
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,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,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,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,00,53,65,74,20,30,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,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,40,33,33,d3,3f,00,00,00,40,33,33,c3,3f,00,00,00,e0,7a,14,de,3f,00,\
00,00,00,00,00,f0,3f,00,00,00,00,00,00,e0,3f,00,00,00,00,00,00,10,40,00,00,\
00,00,00,00,08,40,00,00,00,a0,99,99,e1,3f,00,00,00,00,00,00,18,40,00,00,00,\
00,00,00,08,40,00,00,00,00,00,00,3e,40,00,00,00,00,00,00,44,40,00,00,00,00,\
00,00,44,40,00,00,00,00,00,c0,62,40,00,00,00,00,00,00,f0,3f,00,00,00,c0,cc,\
cc,f0,3f,00,00,00,c0,cc,cc,ec,3f,00,00,00,00,00,00,e8,3f,00,00,00,00,00,00,\
34,40,00,00,00,00,00,00,18,40,00,00,00,00,00,00,f0,3f,00,00,00,00,00,70,a7,\
40,00,00,00,00,00,70,a7,40,00,00,00,00,00,70,a7,40,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,00,00,00,00,00,00,00,00,53,65,74,20,31,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,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,40,33,33,d3,3f,00,00,00,a0,99,99,c9,3f,00,00,00,00,00,\
00,e0,3f,00,00,00,00,00,00,f0,3f,00,00,00,00,d7,a3,e0,3f,00,00,00,00,00,00,\
10,40,00,00,00,00,00,00,08,40,00,00,00,a0,99,99,e1,3f,00,00,00,00,00,00,18,\
40,00,00,00,00,00,00,08,40,00,00,00,00,00,80,41,40,00,00,00,00,00,80,46,40,\
00,00,00,00,00,00,49,40,00,00,00,00,00,c0,62,40,00,00,00,00,00,00,f0,3f,00,\
00,00,c0,cc,cc,f0,3f,00,00,00,c0,cc,cc,ec,3f,00,00,00,00,00,00,f0,3f,00,00,\
00,00,00,00,34,40,00,00,00,00,00,00,18,40,00,00,00,00,00,00,f0,3f,00,00,00,\
00,00,70,a7,40,00,00,00,00,00,70,a7,40,00,00,00,00,00,70,a7,40,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,00,00,00,00,00,00,00,00,53,65,74,20,32,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,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,40,33,33,d3,3f,00,00,00,00,00,00,d0,3f,00,\
00,00,80,c2,f5,e0,3f,00,00,00,00,00,00,f0,3f,00,00,00,a0,99,99,e1,3f,00,00,\
00,00,00,00,18,40,00,00,00,00,00,00,08,40,00,00,00,a0,70,3d,e2,3f,00,00,00,\
00,00,00,20,40,00,00,00,00,00,00,08,40,00,00,00,00,00,00,49,40,00,00,00,00,\
00,00,4e,40,00,00,00,00,00,80,51,40,00,00,00,00,00,c0,62,40,00,00,00,00,00,\
00,f0,3f,00,00,00,c0,cc,cc,f0,3f,00,00,00,c0,cc,cc,ec,3f,00,00,00,20,ae,47,\
f5,3f,00,00,00,00,00,00,34,40,00,00,00,00,00,00,18,40,00,00,00,00,00,00,f0,\
3f,00,00,00,00,00,70,a7,40,00,00,00,00,00,70,b7,40,00,00,00,00,00,70,b7,40,\
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,00,00,00,00,00,00,00,00,53,65,\
74,20,33,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,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,40,33,33,d3,3f,00,00,00,40,33,\
33,d3,3f,00,00,00,a0,99,99,e1,3f,00,00,00,00,00,00,f0,3f,00,00,00,a0,70,3d,\
e2,3f,00,00,00,00,00,00,18,40,00,00,00,00,00,00,08,40,00,00,00,40,33,33,e3,\
3f,00,00,00,00,00,00,20,40,00,00,00,00,00,00,08,40,00,00,00,00,00,00,49,40,\
00,00,00,00,00,00,4e,40,00,00,00,00,00,80,51,40,00,00,00,00,00,c0,62,40,00,\
00,00,00,00,00,f0,3f,00,00,00,c0,cc,cc,f0,3f,00,00,00,c0,cc,cc,ec,3f,00,00,\
00,60,66,66,fa,3f,00,00,00,00,00,00,34,40,00,00,00,00,00,00,18,40,00,00,00,\
00,00,00,f0,3f,00,00,00,00,00,70,a7,40,00,00,00,00,00,70,b7,40,00,00,00,00,\
00,70,b7,40,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,00,00,00,00,00,00,\
00,00,53,65,74,20,34,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,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,40,33,33,d3,3f,00,\
00,00,60,66,66,d6,3f,00,00,00,40,33,33,e3,3f,00,00,00,00,00,00,f0,3f,00,00,\
00,c0,f5,28,e4,3f,00,00,00,00,00,00,18,40,00,00,00,00,00,00,08,40,00,00,00,\
60,b8,1e,e5,3f,00,00,00,00,00,00,20,40,00,00,00,00,00,00,08,40,00,00,00,00,\
00,00,49,40,00,00,00,00,00,00,4e,40,00,00,00,00,00,80,51,40,00,00,00,00,00,\
c0,62,40,00,00,00,00,00,00,f0,3f,00,00,00,c0,cc,cc,f0,3f,00,00,00,c0,cc,cc,\
ec,3f,00,00,00,c0,cc,cc,00,40,00,00,00,00,00,00,34,40,00,00,00,00,00,00,18,\
40,00,00,00,00,00,00,f0,3f,00,00,00,00,00,70,a7,40,00,00,00,00,00,70,b7,40,\
00,00,00,00,00,70,b7,40,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,00,00,\
00,00,00,00,00,00,53,65,74,20,35,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,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,40,33,\
33,d3,3f,00,00,00,a0,99,99,d9,3f,00,00,00,c0,cc,cc,e4,3f,00,00,00,00,00,00,\
f0,3f,00,00,00,60,8f,c2,e5,3f,00,00,00,00,00,00,18,40,00,00,00,00,00,00,08,\
40,00,00,00,80,3d,0a,e7,3f,00,00,00,00,00,00,20,40,00,00,00,00,00,00,08,40,\
00,00,00,00,00,00,49,40,00,00,00,00,00,00,4e,40,00,00,00,00,00,00,4e,40,00,\
00,00,00,00,c0,62,40,00,00,00,00,00,00,f0,3f,00,00,00,c0,cc,cc,f0,3f,00,00,\
00,c0,cc,cc,ec,3f,00,00,00,c0,cc,cc,04,40,00,00,00,00,00,00,34,40,00,00,00,\
00,00,00,18,40,00,00,00,00,00,00,f0,3f,00,00,00,00,00,70,a7,40,00,00,00,00,\
00,70,b7,40,00,00,00,00,00,70,b7,40,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,3d,0a,d7,a3,70,8d,60,40,00,00,00,00,00,00,00,00,\
00,00,00,60,8f,c2,e5,3f,00,00,00,e0,a3,70,f5,3f,00,00,00,e0,51,b8,be,3f,00,\
00,00,c0,f5,28,e4,3f,00,00,00,60,66,66,f2,3f,00,00,00,a0,99,99,a9,3f,00,00,\
00,a0,47,e1,e2,3f,00,00,00,60,8f,c2,f1,3f,75,a0,04,f8,28,35,00,40,67,66,66,\
66,66,66,e6,3f,f4,2d,ee,b5,6e,8d,a5,3f,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,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,00,00,00,00,00,00,00,\
00,01,00,00,00,00,00,00,00,00,00,00,00,dc,04,00,00,dc,04,00,00,00,00,00,00,\
ee,4f,dd,27,1a,33,f7,3f,dc,04,00,00,00,00,00,00,ee,4f,dd,27,1a,33,f7,3f,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,4e,62,10,58,39,b4,c8,3f,00,00,00,00,00,00,14,40,92,ed,7c,\
3f,35,5e,ba,3f,01,00,00,00,00,00,00,00,40,1f,00,00,64,00,00,00,05,00,00,00,\
00,00,00,00,00,00,00,00,00,60,63,40,00,00,00,00,00,60,63,40,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,69,c0,00,00,00,00,00,00,\
69,c0,00,00,00,00,00,00,69,40,00,00,00,00,00,00,69,40,00,00,00,00,00,00,14,\
c0,00,00,00,00,00,00,14,40,9a,99,99,99,99,99,b9,3f,9a,99,99,99,99,99,c9,3f,\
fa,00,00,00,36,01,00,00,32,00,00,00,64,00,00,00,96,00,00,00,40,1f,00,00,b8,\
0b,00,00,00,00,00,00,9a,99,99,99,99,99,b9,3f,9a,99,99,99,99,99,b9,3f,9a,99,\
99,99,99,99,b9,3f,9a,99,99,99,99,99,c9,3f,33,33,33,33,33,33,c3,3f,cd,cc,cc,\
cc,cc,cc,27,40,00,00,00,00,00,00,59,40,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,c0,72,40,00,00,00,00,00,00,54,40,0a,00,00,00,0a,\
00,00,00,00,00,00,00,00,00,08,40,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,33,33,33,33,33,33,d3,3f,00,00,00,00,00,00,14,40,00,00,00,00,00,40,8f,\
40,33,33,33,33,33,33,d3,3f,00,00,00,00,00,70,a7,40,00,00,00,00,00,00,34,40,\
00,00,00,00,00,00,34,40,00,00,00,00,00,00,44,40,00,00,00,00,00,00,f0,3f,00,\
00,00,00,00,40,9f,40,00,00,00,00,00,88,b3,40,ff,ff,ff,ff,00,00,00,00,9a,99,\
99,99,99,99,b9,3f,9a,99,99,99,99,99,b9,3f,00,00,00,00,00,80,56,40,9a,99,99,\
99,99,99,c9,3f,9a,99,99,99,99,99,b9,3f,9a,99,99,99,99,99,c9,3f,00,00,00,00,\
00,00,d0,3f


Forsaken
Posts: 8
Joined: Sun Jan 11, 2015 12:09 am
Location: Frankfurt a.M. / Germany
Contact:

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by Forsaken » Sun Jan 11, 2015 2:25 pm

Hi there!
At first thanks for the great work mr_x!

I've took some time yesterday to put together a really simple Java-Editor for ROM-Files. Its effectively not tested yet! I tried some changes and checked the file for it, but yet not tried to "flash" the new rom, especially because I don't have a copy of the current version of my Up Mini's ROM. Anyway you can take the source code attached to change/improve/bugfix it, or at your own risk you could already try to just use it.
I'll try to get a backup of my printer's current ROM today before experimenting with modified ROMs, if I have any further news I will tell them here.

Download Source-Code (java) v0.1: https://drive.google.com/file/d/0B_Rx7M ... sp=sharing
Download Binary (jar) v0.1: https://drive.google.com/file/d/0B_Rx7M ... sp=sharing

Forsaken
Posts: 8
Joined: Sun Jan 11, 2015 12:09 am
Location: Frankfurt a.M. / Germany
Contact:

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by Forsaken » Sun Jan 11, 2015 7:15 pm

Hi again :)

I have continued the java tool today. Did a lot of code cleanup, added the Device-Id as changable parameter and also started a simple import from registry (currently only imports Device-Id and -Name).

Binary (jar) v0.2: https://drive.google.com/file/d/0B_Rx7M ... sp=sharing
Source (java) v0.2: https://drive.google.com/file/d/0B_Rx7M ... sp=sharing

I tried maniulating the "UP Mini 6.06.ROM"-File by editing the ABS Temperature. Unfortunally when testing it by doing an "extrude" it still heated to ~270°C instead of the 240°C I have set up.
There were some unclear error/warning messages when updating the ROM, but those were the same for the original and the modified ROM-File. I also tried using the "new spool" button chosing ABS again in case the temperature is only updated when switiching materials. Any other ideas what could be wrong?

@mr_x: How did you interpret the printer info stored in the registry? For me it looks like that system info is a different structure than the ROM-File contents. I could only identify the device-id, device-name, count of print-sets and print-set-names so far. What else information is contained there? Do you have offsets/lists for those too? Also do you have any idea why the changed ROM-Values did not affect the target temperature?

mr_x
Posts: 62
Joined: Wed Dec 10, 2014 4:21 pm

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by mr_x » Mon Jan 12, 2015 9:32 am

@forsaken:

Great work. Right now I did not analyzed the registry data in detail.
But for sure a lot of essential stuff to create a complete ROM is missing in there (e.g. IO port mapping)

I only guessed the offsets for the heater values in the ROM file since they looked a lot like the temperatures.
From some earlier posts in this forum I learned that some older UP! software/ROM file update was increasing the temp to much and the next one was decreasing it again.

Anyway it also might be that the temperature settings are hard coded inside of the UP! software running on pc.
(If this is the case we just have to go with the "trainer/loader" for the UP! software like caesar suggested earlier)

@caesar:

Since I'm trapped with my newer UP mini(M) (without ROM file) I spent some time starting to look how to make a loader for the UP software.
Now I think it's possible to create one :mrgreen: Some basic experiments been promising.
Unfortunately I can move very slow on this since creating software is what I can do best... but not extending/patching existing one.

:mrgreen:

Forsaken
Posts: 8
Joined: Sun Jan 11, 2015 12:09 am
Location: Frankfurt a.M. / Germany
Contact:

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by Forsaken » Mon Jan 12, 2015 1:04 pm

mr_x wrote:Anyway it also might be that the temperature settings are hard coded inside of the UP! software running on pc.
(If this is the case we just have to go with the "trainer/loader" for the UP! software like caesar suggested earlier)
I also think thats the case, most likely the temperature values of the ROM were used in previous versions and later moved to the UP-Software due making it harder to use 3rd party filaments. I'll have a closer look at the USB-Communication this evening in order to implement features like temperature changes within my java tool.
Most importantly would be to figure out when the target temperature is transmitted to the printer. (Only when using "new spool" or maybe before every print job?) Since there is already a tool for that its propably the best to learn from that and optimize the process to make it more easily. I didnt read all the details of that (i think its a perl-script), but if I remember right its required to send the print job, close the up software, "push" the changed temperature and optionally start the up software again. Hopefully its possible to either prevent or at least automate those steps.
By that I guess only one piece of software can be connected to the printer at a time, so propably its possible to create some kind of emulated printer device in software and just forward all incoming data to the real hardware device. I gotta make some more research on the available USB-Libraries in order to check that possibility, but I think that would be the royal road, since this way we could manipulate all data before reaching the printer and still can have the up software running regularly.
mr_x wrote:Unfortunately I can move very slow on this since creating software is what I can do best... but not extending/patching existing one.
Welcome to the club :D I'm no total beginner regarding rev-engineering/patching/whatever, I simply lack regular practice on that topic. In theory I know what to search / do, but it takes me really a lot longer than "usual". (When having the experience)

PS: I think it would be great if we could communicate directly in order to share each others progress more efficently, since this forum is manually moderated it can take really some time until a post is visible. Not to mention private messages are not allowed at all. Beside that we're both german, so as long as nobody (non-german) else wants to participate, we could simply speak german to each other :D . If you have ICQ you can simply add me (I've put my ICQ# in my forum profile). I have Skype/MSN too if you dont have ICQ, but if required I'd prefer to share that account in some more private manner (using that account for my work). Alternativly we could also think about creating some IRC-Channel for development, which would propably the best solution since it easily allows others to join and help.
Just tell me what you think about it, I'm not going to force you into teamwork :D

mr_x
Posts: 62
Joined: Wed Dec 10, 2014 4:21 pm

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by mr_x » Tue Jan 13, 2015 6:57 am

Hi,
so propably its possible to create some kind of emulated printer device in software and just forward all incoming data to the real hardware device.
actually I really like this idea.
I saw that the UP software is using WINUSB in order to communicate with the printer. This enables us to do a nice windows trick :mrgreen: :
The UP software loads "winusb.dll" at startup. It just uses 9 functions from this DLL.
Windows is searching for DLLs to load inside of the same directory as the application is located FIRST.
Then it will search in various windows system directories (where the real winusb.dll is located).

==> We can create a PROXY winusb.dll and place it inside of the folder of the UP software and thats it.
With our own winusb.dll (which just gets the function calls and forwards them to the real winusb.dll) in place the following will happen:
- the UP software will loads our winusb.dll
- our winusb.dll will load the existing winusb.dll
- in case of writes/reads to/from the printer we can manipulate the data on the fly :D

e.g.
* UP software sends a request for print sets (layer heights and settings) to the printer ==> we can change the response to our sets
* UP software sends temperature to printer ==> we change the value and send ours to the real printer
...

Also this will not violate any copyright and also does not fall into reverse engineering of software category which might be problematic.
(It is perfectly allowed to capture transmissions to/from a device and to interact with it self, however decompiling and patching might be problematic in some countries)

@Forsaken: I'm currently abroad with limited internet connection. I will send you a PM later.

SCPMI
Posts: 6
Joined: Thu May 01, 2014 10:15 am

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by SCPMI » Wed Jan 14, 2015 5:15 pm

Given TierTimes obsessive desire to control how we use their hardware and software I wonder how long it will be before an update that a) removes the in-registry data and b) closes down this capability.

It's such a shame that they spend so much time "defending" their software and don't invest that time and effort in developing it's capabilities.

bitflusher
Posts: 8
Joined: Mon Dec 22, 2014 6:46 am

Re: Understanding UP! Rom file format ==> Need USB Capture

Post by bitflusher » Fri Jan 16, 2015 8:51 pm

SCPMI wrote:Given TierTimes obsessive desire to control how we use their hardware and software I wonder how long it will be before an update that a) removes the in-registry data and b) closes down this capability.

It's such a shame that they spend so much time "defending" their software and don't invest that time and effort in developing it's capabilities.
[offtopic]
Companies always need to choose between supporting users and defending IP. There will always be a group of unsatisfied users given any choice. Apple would delete and ban users talking like people in the "look my mod" section of this forum. PP3dP chooses to flat out ignore some problems but also ignores the hacky solutions. Their choice..

I have worked with printers from DIY reprap kits to €40.000 "professional" products. All have their pros and cons as a user you have to deal with it
[/offtopic]

I just bought 8 rolls of up! ABS this will last me a year. Still I am looking at this like a hawk. I am looking forward to push my plus 2 a little more, some flex filament, different nozzle sizes, higher or lower acceleration.

I hope this topic will be ignored to the fullest.

Post Reply