OutFile CreateBitmap.exe !include "StrFunc.nsh" ${StrTok} Section /* CreateBitmap function needs the function bin2dec attached to work with 1 and 4 BITS bitmaps, and Hex2Bin for 4 BITS bitmaps. For any other type, these functions aren't needed.*/ #----------------------------------------------------------------------- Push "CreateBitmapExample.bmp" #----------------------------------------------------------------------- /* Bitmap file to create. */ #----------------------------------------------------------------------- Push "1" ;(1|4|8|24) #----------------------------------------------------------------------- /* Bits per pixel (1, 4, 8 or 24). */ #----------------------------------------------------------------------- Push "default" #----------------------------------------------------------------------- /* Palette colors*/ /* 1, 4 and 8 BITS: Colors in the format RRGGBB separated by vertical bars "|", each one is identified by the colors order, from left to right. OR "Default" - uses default palette. */ /* 24 BITS: It's ignored. */ #----------------------------------------------------------------------- Push "6" #----------------------------------------------------------------------- /* The bitmap width. */ #----------------------------------------------------------------------- Push "3" #----------------------------------------------------------------------- /* The bitmap height. */ #----------------------------------------------------------------------- Push "1|0|1|0|1|0\ |0|1|0|1|0|1\ |1|0|1|0|1|0" ;1, 4 and 8 BITS Example ; Push "|330000|660000|990000|CC0000|FF0000\ ||003300|006600|009900|00CC00|00FF00\ ||000033|000066|000099|0000CC|0000FF" ;24 BITS Example #----------------------------------------------------------------------- /* 1, 4 and 8 BITS: Index numbers of colors indicated by the palette colors, starting at 0. 1 BIT bitmaps have 2 colors, 4 BITS bitmaps have 16, and 8 BITS bitmaps have 256 colors. 24 BITS: Colors in the format RRGGBB (in hexadecimal) separated by vertical bars "|". Any color that is lacking on the input will be converted to a black pixel. "||" is the same as "|000000|" or "|0|". It's possible to put the input on several lines as you see above, but a restriction is to have a vertical bar "|" before the first color on the second, third... lines. */ #----------------------------------------------------------------------- Call CreateBitmap #----------------------------------------------------------------------- /* Function call. */ ExecShell open "CreateBitmapExample.bmp" # Example to open the bitmap automatically. SectionEnd Function CreateBitmap # Prepare function Exch $R3 Exch Exch $R2 Exch Exch 2 Exch $R1 Exch 2 Exch 3 Exch $1 Exch 3 Exch 4 Exch $0 Exch 4 Exch 5 Exch $R0 Exch 5 Push $R4 Push $R5 Push $R6 Push $R7 Push $R8 Push $R9 # Create requested file (just to write) FileOpen $R0 '$R0' w # Write the default structure for 24bit bitmaps FileWriteByte $R0 "66" ;Required Startup (BM) FileWriteByte $R0 "77" FileWriteByte $R0 "0" ;File Size (Not important) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Reserved FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" StrCmp $0 1 0 Bit1Init FileWriteByte $R0 "62" ;Header Size (54 (header) + 8 (2 palette colors) = 62) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" Bit1Init: StrCmp $0 4 0 Bit4Init FileWriteByte $R0 "118" ;Header Size (54 (header) + 64 (16 palette colors) = 118) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" Bit4Init: StrCmp $0 8 0 Bit8Init FileWriteByte $R0 "54" ;Header Size (54 (header) + 1024 (256 palette colors) = 1078) FileWriteByte $R0 "4" FileWriteByte $R0 "0" FileWriteByte $R0 "0" Bit8Init: StrCmp $0 24 0 Bit24Init FileWriteByte $R0 "54" ;Header Size (54 (header)) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" Bit24Init: FileWriteByte $R0 "40" ;Length of the Bitmap Info Header (bitmap = 40) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" # Width (User Input) IntCmp $R1 0 0 0 +3 SetErrors Goto End # Distribute width Push $R1 StrCpy $R4 "" StrCpy $R5 "" StrCpy $R6 "" IntCmpU $R1 16777215 0 +3 # Size level 4 - Gigantic IntOp $R6 $R1 / 16777215 IntOp $R1 $R1 % 16777215 IntCmpU $R1 65535 0 +3 # Size level 3 - Big IntOp $R5 $R1 / 65535 IntOp $R1 $R1 % 65535 IntCmpU $R1 255 0 +3 # Size level 2 - Medium IntOp $R4 $R1 / 255 IntOp $R1 $R1 % 255 # R1 = Rest # Size level 1 - Small # Write width FileWriteByte $R0 "$R1" ;Width (User Input) FileWriteByte $R0 "$R4" FileWriteByte $R0 "$R5" FileWriteByte $R0 "$R6" Pop $R1 # Height (User Input) IntCmp $R2 0 0 0 +3 SetErrors Goto End Push $R2 # Distribute height StrCpy $R4 "" StrCpy $R5 "" StrCpy $R6 "" IntCmpU $R2 16777215 0 +3 # Size level 4 - Gigantic IntOp $R6 $R2 / 16777215 IntOp $R2 $R2 % 16777215 IntCmpU $R2 65535 0 +3 # Size level 3 - Big IntOp $R5 $R2 / 65535 IntOp $R2 $R2 % 65535 IntCmpU $R1 255 0 +3 # Size level 2 - Medium IntOp $R4 $R2 / 255 IntOp $R2 $R2 % 255 # R1 = Rest # Size level 1 - Small # Write height FileWriteByte $R0 "$R2" ;Height (User Input) FileWriteByte $R0 "$R4" FileWriteByte $R0 "$R5" FileWriteByte $R0 "$R6" Pop $R2 # Clear variables used by this operation # Continue to write FileWriteByte $R0 "1" ;Planes (Bitmap = 1) FileWriteByte $R0 "0" FileWriteByte $R0 "$0" ;Bits per Pixel FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Compression (No Compression -> Bitmap = 0) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Bitmap Data Size (Not Important) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Hresolution (Not Important) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Vresolution (Not Important) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Number of Colors (Not Important) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Number of Important Colors (Not Important) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" /* Just a note how to create bitmaps: Every bitmap except those with 24 bits pixels have a palette, including monochrome bitmaps.*/ # 1 bit pixels bitmap palette (Limit of 2 colors) StrCmp $0 1 0 Bit1Palette ${StrTok} $R4 $1 | 1 0 StrCmp $R4 "default" 0 Bit1DefaultEnd FileWriteByte $R0 "0" ;Black (0,0,0) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "255" ;White (255,255,255) FileWriteByte $R0 "255" FileWriteByte $R0 "255" FileWriteByte $R0 "0" Goto Bit1Palette Bit1DefaultEnd: StrCpy $R6 0 Bit1PaletteColors: IntOp $R6 $R6 + 1 ${StrTok} $R4 $1 | $R6 0 StrCmp $R4 "" 0 +2 StrCpy $R4 "000000" # Convert from hexadecimal to decimal and write from blue to red StrCpy $R5 $R4 "" 4 IntFmt $R5 "%d" 0x$R5 FileWriteByte $R0 $R5 ;Color Blue StrCpy $R5 $R4 "" 2 StrCpy $R5 $R5 2 IntFmt $R5 "%d" 0x$R5 FileWriteByte $R0 $R5 ;Color Green StrCpy $R5 $R4 2 IntFmt $R5 "%d" 0x$R5 FileWriteByte $R0 $R5 ;Color Red FileWriteByte $R0 "0" StrCmp $R6 2 0 Bit1PaletteColors Bit1Palette: # 4 bits pixels bitmap palette (Limit of 16 colors) StrCmp $0 4 0 Bit4Palette ${StrTok} $R4 $1 | 1 0 StrCmp $R4 "default" 0 Bit4DefaultEnd FileWriteByte $R0 "0" ;Black (0,0,0) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Maroon (128,0,0) FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Green (0,128,0) FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Olive (128,128,0) FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "128" ;Navy (0,0,128) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" ;Purple (128,0,128) FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "128" ;Teal (0,128,128) FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" ;Gray (128,128,128) FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "192" ;Silver (192,192,192) FileWriteByte $R0 "192" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Red (255,0,0) FileWriteByte $R0 "0" FileWriteByte $R0 "255" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Green (0,255,0) FileWriteByte $R0 "255" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Yellow (255,255,0) FileWriteByte $R0 "255" FileWriteByte $R0 "255" FileWriteByte $R0 "0" FileWriteByte $R0 "255" ;Blue (0,0,255) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "255" ;Fuchsia (255,0,255) FileWriteByte $R0 "0" FileWriteByte $R0 "255" FileWriteByte $R0 "0" FileWriteByte $R0 "255" ;Aqua (0,255,255) FileWriteByte $R0 "255" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "255" ;White (255,255,255) FileWriteByte $R0 "255" FileWriteByte $R0 "255" FileWriteByte $R0 "0" Goto Bit4Palette Bit4DefaultEnd: StrCpy $R6 0 Bit4PaletteColors: IntOp $R6 $R6 + 1 ${StrTok} $R4 $1 | $R6 0 StrCmp $R4 "" 0 +2 StrCpy $R4 "000000" # Convert from hexadecimal to decimal and write from blue to red StrCpy $R5 $R4 "" 4 IntFmt $R5 "%d" 0x$R5 FileWriteByte $R0 $R5 ;Color Blue StrCpy $R5 $R4 "" 2 StrCpy $R5 $R5 2 IntFmt $R5 "%d" 0x$R5 FileWriteByte $R0 $R5 ;Color Green StrCpy $R5 $R4 2 IntFmt $R5 "%d" 0x$R5 FileWriteByte $R0 $R5 ;Color Red FileWriteByte $R0 "0" StrCmp $R6 16 0 Bit4PaletteColors Bit4Palette: # 8 bits pixels bitmap palette (Limit of 256 colors) StrCmp $0 8 0 Bit8Palette ${StrTok} $R4 $1 | 1 0 StrCmp $R4 "default" 0 Bit8DefaultEnd FileWriteByte $R0 "0" ;Black (0,0,0) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Maroon (128,0,0) FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Green (0,128,0) FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Olive (128,128,0) FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "128" ;Navy (0,0,128) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" ;Purple (128,0,128) FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "128" ;Teal (0,128,128) FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" ;Silver (192,192,192) FileWriteByte $R0 "192" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "220" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "240" FileWriteByte $R0 "202" FileWriteByte $R0 "166" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "32" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "32" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "32" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "32" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "32" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "32" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "96" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "96" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "96" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "96" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "96" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "96" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "96" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "160" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "160" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "160" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "160" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "160" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "160" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "160" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "224" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "224" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "224" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "224" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "224" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "224" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "224" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "32" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "32" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "32" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "32" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "32" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "32" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "32" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "64" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "64" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "64" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "64" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "64" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "64" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "64" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "96" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "96" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "96" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "96" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "96" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "96" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "96" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "128" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "128" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "128" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "128" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "128" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "128" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "160" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "160" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "160" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "160" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "160" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "160" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "160" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "192" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "192" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "192" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "192" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "192" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "192" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "192" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "224" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "224" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "224" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "224" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "224" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "224" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "224" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "32" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "32" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "32" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "32" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "32" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "32" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "32" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "64" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "64" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "64" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "64" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "64" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "64" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "64" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "96" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "96" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "96" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "96" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "96" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "96" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "96" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "160" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "160" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "160" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "160" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "160" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "160" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "160" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "192" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "192" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "192" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "192" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "192" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "192" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "192" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "224" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "224" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "224" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "224" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "224" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "224" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "224" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "32" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "32" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "32" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "32" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "32" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "32" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "32" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "64" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "64" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "64" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "64" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "64" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "64" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "64" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "96" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "96" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "96" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "96" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "96" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "96" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "96" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "128" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "128" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "128" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "128" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "128" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "128" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "160" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "160" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "160" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "160" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "160" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "160" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "160" FileWriteByte $R0 "224" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "192" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "192" FileWriteByte $R0 "32" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "192" FileWriteByte $R0 "64" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "192" FileWriteByte $R0 "96" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "192" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "192" FileWriteByte $R0 "192" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "240" FileWriteByte $R0 "251" FileWriteByte $R0 "255" FileWriteByte $R0 "0" FileWriteByte $R0 "164" FileWriteByte $R0 "160" FileWriteByte $R0 "160" FileWriteByte $R0 "0" FileWriteByte $R0 "128" ;Gray (128,128,128) FileWriteByte $R0 "128" FileWriteByte $R0 "128" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Red (255,0,0) FileWriteByte $R0 "0" FileWriteByte $R0 "255" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Green (0,255,0) FileWriteByte $R0 "255" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" ;Yellow (255,255,0) FileWriteByte $R0 "255" FileWriteByte $R0 "255" FileWriteByte $R0 "0" FileWriteByte $R0 "255" ;Blue (0,0,255) FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "255" ;Fuchsia (255,0,255) FileWriteByte $R0 "0" FileWriteByte $R0 "255" FileWriteByte $R0 "0" FileWriteByte $R0 "255" ;Aqua (0,255,255) FileWriteByte $R0 "255" FileWriteByte $R0 "0" FileWriteByte $R0 "0" FileWriteByte $R0 "255" ;White (255,255,255) FileWriteByte $R0 "255" FileWriteByte $R0 "255" FileWriteByte $R0 "0" Goto Bit8Palette Bit8DefaultEnd: StrCpy $R6 0 Bit8PaletteColors: IntOp $R6 $R6 + 1 ${StrTok} $R4 $1 | $R6 0 StrCmp $R4 "" 0 +2 StrCpy $R4 "000000" # Convert from hexadecimal to decimal and write from blue to red StrCpy $R5 $R4 "" 4 IntFmt $R5 "%d" 0x$R5 FileWriteByte $R0 $R5 ;Color Blue StrCpy $R5 $R4 "" 2 StrCpy $R5 $R5 2 IntFmt $R5 "%d" 0x$R5 FileWriteByte $R0 $R5 ;Color Green StrCpy $R5 $R4 2 IntFmt $R5 "%d" 0x$R5 FileWriteByte $R0 $R5 ;Color Red FileWriteByte $R0 "0" StrCmp $R6 256 0 Bit8PaletteColors Bit8Palette: /* End of palette code */ # Initialize variables StrCpy $R6 0 StrCpy $R7 0 IntOp $R8 $R8 + 1 StrCpy $R9 0 # Next Line NextLine: IntOp $R7 $R7 + 1 #Line Number StrCpy $R6 0 StrCpy $R5 "" # Next Color of the Line NextColor: IntOp $R6 $R6 + 1 #Color Number of the Line /* Just a note how to create bitmaps: The bitmap is read from the end to the start, this code adapts to write inversely.*/ IntOp $R8 $R2 - $R7 IntOp $R8 $R8 * $R1 IntOp $R8 $R8 + $R6 #Total Number of Colors /* End of inverse code */ # 1 bit bitmap StrCmp $0 1 0 Bit1 ${StrTok} $R4 $R3 | $R8 0 Bit1Start: IntOp $R9 $R9 + 1 StrCpy $R5 '$R5$R4' StrCmp $R6 $R1 0 +9 StrCmp $R9 8 Bit1Dec Push $R8 StrLen $R8 $R5 StrCmp $R8 8 +3 StrCpy $R5 $R50 Goto -3 Pop $R8 Goto Bit1Dec StrCmp $R9 8 Bit1Dec NextColor Bit1Dec: Push $R5 Call bin2dec Pop $R5 FileWriteByte $R0 "$R5" StrCpy $R5 "" StrCmp $R9 8 Bit1Start /* Just a note how to create bitmaps: Each line has to be divisible by 4, so add null characters.*/ IntOp $R9 $R9 / 8 IntOp $R9 $R9 % 4 IntOp $R9 4 - $R9 IntOp $R9 $R9 - 1 IntCmp $R9 0 +4 +4 FileWriteByte $R0 "0" IntOp $R9 $R9 - 1 Goto -3 /* End of extra null characters code */ StrCmp $R7 $R2 End NextLine Bit1: # 4 bits bitmap StrCmp $0 4 0 Bit4 Bit4Start: IntOp $R9 $R9 + 1 ${StrTok} $R4 $R3 | $R8 0 IntFmt $R4 "%01X" $R4 Push $R4 Call Hex2Bin Pop $R4 StrCpy $R5 '$R5$R4' IntCmp $R6 $R1 0 +9 StrCmp $R9 2 Bit4Dec Push $R8 StrLen $R8 $R5 IntCmp $R8 8 +3 0 +3 StrCpy $R5 $R50 Goto -3 Pop $R8 Goto Bit4Dec StrCmp $R9 2 Bit4Dec NextColor Bit4Dec: Push $R5 Call bin2dec Pop $R5 FileWriteByte $R0 "$R5" StrCpy $R5 "" StrCmp $R9 2 0 +4 StrCpy $R9 0 IntCmp $R6 $R1 +2 0 +2 Goto NextColor /* Just a note how to create bitmaps: Each line has to be divisible by 4, so add null characters.*/ IntOp $R9 $R6 / 2 IntOp $R9 $R9 % 4 StrCmp $R9 0 +2 IntOp $R9 4 - $R9 IntCmp $R9 0 +4 +4 FileWriteByte $R0 "0" IntOp $R9 $R9 - 1 Goto -3 /* End of extra null characters code */ StrCmp $R7 $R2 End NextLine Bit4: # 8 bits bitmap StrCmp $0 8 0 Bit8 ${StrTok} $R4 $R3 | $R8 0 FileWriteByte $R0 "$R4" StrCmp $R6 $R1 0 NextColor /* Just a note how to create bitmaps: Each line has to be divisible by 4, so add null characters.*/ IntOp $R9 $R1 % 4 StrCmp $R9 0 +2 IntOp $R9 4 - $R9 IntCmp $R9 0 +4 +4 FileWriteByte $R0 "0" IntOp $R9 $R9 - 1 Goto -3 /* End of extra null characters code */ StrCmp $R7 $R2 End NextLine Bit8: # 24 bits bitmap StrCmp $0 24 0 Bit24 ${StrTok} $R4 $R3 | $R8 0 # Empty strings are converted to black. StrCmp $R4 "" 0 +2 StrCpy $R4 "000000" # Convert from hexadecimal to decimal and write from blue to red StrCpy $R5 $R4 "" 4 IntFmt $R5 "%d" 0x$R5 FileWriteByte $R0 $R5 ;Color Blue StrCpy $R5 $R4 "" 2 StrCpy $R5 $R5 2 IntFmt $R5 "%d" 0x$R5 FileWriteByte $R0 $R5 ;Color Green StrCpy $R5 $R4 2 IntFmt $R5 "%d" 0x$R5 FileWriteByte $R0 $R5 ;Color Red StrCmp $R6 $R1 EndingLine NextColor EndingLine: /* Just a note how to create bitmaps: Each line has to be divisible by 4, so add null characters.*/ IntOp $R9 $R1 * 3 IntOp $R9 $R9 % 4 IntOp $R9 4 - $R9 IntCmp $R9 0 +4 +4 FileWriteByte $R0 "0" IntOp $R9 $R9 - 1 Goto -3 /* End of extra null characters code */ StrCmp $R7 $R2 End NextLine Bit24: # End of bitmap creation End: FileClose $R0 # Return variables to user Pop $R9 Pop $R8 Pop $R7 Pop $R6 Pop $R5 Pop $R4 Pop $R3 Pop $R2 Pop $R1 Pop $1 Pop $0 Pop $R0 FunctionEnd Function bin2dec Exch $R9 ; binary input string (max 16 bits) Push $R8 Push $R7 ; 4 character hex output string (empty if error detected) Exch 2 StrLen $R8 $R9 IntCmp $R8 16 start start too_long start: StrCpy $R7 0 loop: StrCpy $R8 $R9 1 StrCmp $R8 "" done StrCpy $R9 $R9 "" 1 StrCmp $R8 "0" good_digit StrCmp $R8 "1" good_digit bad_digit good_digit: IntOp $R7 $R7 * 2 IntOp $R7 $R7 + $R8 Goto loop too_long: StrCpy $R7 "" Goto exit bad_digit: StrCpy $R7 "" Goto exit done: exit: Pop $R9 Pop $R8 Exch $R7 FunctionEnd Function Hex2Bin Push $0 Exch Exch $1 Exch Push $2 Push $3 Push $4 Push $5 Push $6 Push $7 ; Set/Get Source Hex Number StrLen $0 $1 StrCpy $3 $0 ; loop - Get 1 Letter per loop from right for process NextLetter: StrCpy $4 '$5 $4' StrCpy $5 '' StrCmp $3 '0' End IntOP $3 $3 - 1 StrCpy $2 $1 1 $3 StrCpy $6 '256' IntOP $6 $6 / 2 IntOP $7 0x$2 & $6 IntCmp $7 '0' +2 StrCpy $7 '1' StrCpy $5 '$5$7' StrCmp $6 '1' NextLetter -5 End: StrCpy $1 $4 "" 4 StrCpy $1 $1 4 Pop $7 Pop $6 Pop $5 Pop $4 Pop $3 Pop $2 Pop $0 Exch $1 FunctionEnd