Here is an example of loading an embedded cursor file in two ways. (Windows only)
By the way, it would be easier to include the cursor file in the resource section and use it.
The method 2 doesn't work properly. Sorry.
Fixed the method 2.
Code: Select all
Structure ICONDIRENTRY
bWidth.a
bHeight.a
bColorCount.a
bReserved.a
StructureUnion
wPlanes.w
XHotspot.w
EndStructureUnion
StructureUnion
wBitCount.w
YHotspot.w
EndStructureUnion
dwBytesInRes.l
dwImageOffset.l
EndStructure
Structure ICONDIR
idReserved.w
idType.w
idCount.w
idEntries.ICONDIRENTRY[0]
EndStructure
;Method 1
Global hCur1
Define *m.ICONDIR = ?cross_cur
Define *m.ICONDIR = ?label_wait_r_cur
File$ = OpenFileRequester("Select a file", "C:\Windows\Cursors\", "Cursor (*.cur)|*.cur|All files (*.*)|*.*", 0)
If File$ And FileSize(File$) > 0
If ReadFile(0, File$)
*m = AllocateMemory(Lof(0))
If *m
ReadData(0, *m, Lof(0))
EndIf
CloseFile(0)
EndIf
Else
End
EndIf
Debug "The number of images = " + *m\idCount
If *m\idCount <= 0
End
EndIf
Index = 0
Define *bm.ICONIMAGE = *m + *m\idEntries[Index]\dwImageOffset
If *bm\icHeader\biSize = SizeOf(BITMAPINFOHEADER) And *bm\icHeader\biCompression = #BI_RGB ; it's an uncompressed bmp image.
If *bm\icHeader\biHeight < 0 ; top-down image is not supported.
End
EndIf
tmp.a = 256 - *m\idEntries[Index]\bHeight ; if *m\idEntries[Index]\bHeight = 0, set EntryHeight = 256. the others are the same values.(EntryHeight = *m\idEntries[Index]\bHeight)
EntryHeight = 256 - tmp
tmp.a = 256 - *m\idEntries[Index]\bWidth
EntryWidth = 256 - tmp
If *bm\icHeader\biSizeImage
ColorBitmapSize = *bm\icHeader\biSizeImage
Else
ColorBitmapSize = ((((EntryWidth * *bm\icHeader\biBitCount) + 31) & ~31) >> 3) * EntryHeight
EndIf
If *bm\icHeader\biClrUsed > 0
PaletteSize = 4 * *bm\icHeader\biClrUsed ;SizeOf(RGBQUAD) = 4
Else
If *bm\icHeader\biBitCount < 16
PaletteSize = 4 * Pow(2, *bm\icHeader\biBitCount)
EndIf
EndIf
If *m\idEntries[Index]\dwBytesInRes - *bm\icHeader\biSize - PaletteSize > ColorBitmapSize
ExistMaskData = 1
EndIf
*BitmapData = *bm + 40 + PaletteSize ;SizeOf(BITMAPINFOHEADER) = 40
MaskBitsSize = (((EntryWidth + 31) & ~31) >> 3) * EntryHeight
If EntryHeight = Abs(*bm\icHeader\biHeight) / 2
*bm\icHeader\biHeight / 2
EndIf
Define *bmiMask.BITMAPINFO
Define CursorInfo.ICONINFO
CursorInfo\fIcon = 0 ;create cursor
CursorInfo\xHotspot = *m\idEntries[Index]\XHotspot
CursorInfo\yHotspot = *m\idEntries[Index]\YHotspot
hbmColor = CreateDIBSection_(0, *bm, #DIB_RGB_COLORS, @*Bits, 0, 0)
If hbmColor
SetDIBits_(0, hbmColor, 0, EntryHeight, *BitmapData, *bm, #DIB_RGB_COLORS)
If ExistMaskData ; *bm\icHeader\biBitCount < 16
;create mask image.
*bmiMask = AllocateMemory(SizeOf(BITMAPINFOHEADER) + 8)
If *bmiMask
With *bmiMask
\bmiHeader\biSize = 40
\bmiHeader\biWidth = EntryWidth
\bmiHeader\biHeight = EntryHeight
\bmiHeader\biPlanes = 1
\bmiHeader\biBitCount = 1
\bmiHeader\biCompression = #BI_RGB
\bmiHeader\biSizeImage = MaskBitsSize ;or 0 ??
;\bmiHeader\biXPelsPerMeter = 0
;\bmiHeader\biYPelsPerMeter = 0
\bmiHeader\biClrUsed = 0 ;or 2
\bmiHeader\biClrImportant = 0
\bmiColors[0]\rgbBlue = 0
\bmiColors[0]\rgbGreen= 0
\bmiColors[0]\rgbRed = 0
\bmiColors[0]\rgbReserved = 0
\bmiColors[1]\rgbBlue = 255
\bmiColors[1]\rgbGreen= 255
\bmiColors[1]\rgbRed = 255
\bmiColors[1]\rgbReserved = 0
EndWith
hbmMask = CreateDIBSection_(0, *bmiMask, #DIB_RGB_COLORS, @*Bits, 0, 0)
If hbmMask
SetDIBits_(0, hbmMask, 0, EntryHeight, *BitmapData + ColorBitmapSize, *bmiMask, #DIB_RGB_COLORS)
CursorInfo\hbmMask = hbmMask
EndIf
FreeMemory(*bmiMask)
EndIf
Else
CursorInfo\hbmMask = hbmColor
EndIf
;If *bm\icHeader\biBitCount < 16 ;PaletteSize > 0
If *bm\icHeader\biBitCount < 24 ;PaletteSize > 0
ImgColor = CreateImage(#PB_Any, EntryWidth, EntryHeight)
If ImgColor
hdcDst = StartDrawing(ImageOutput(ImgColor))
If hdcDst
StretchDIBits_(hdcDst, 0, 0, EntryWidth, EntryHeight, 0, 0, EntryWidth, EntryHeight, *BitmapData, *bm, #DIB_RGB_COLORS, #SRCCOPY)
; hdc = CreateCompatibleDC_(hdcDst)
; If hdc
; old = SelectObject_(hdc, hbmColor)
; BitBlt_(hdcDst, 0, 0, EntryWidth, EntryHeight, hdc, 0, 0, #SRCCOPY)
; SelectObject_(hdc, old)
; DeleteDC_(hdc)
; EndIf
StopDrawing()
CursorInfo\hbmColor = ImageID(ImgColor)
EndIf
EndIf
Else
CursorInfo\hbmColor = hbmColor
EndIf
If CursorInfo\hbmMask ;And CursorInfo\hbmColor
hCur1 = CreateIconIndirect_(CursorInfo)
Debug "Cursor handle: " + hCur1
EndIf
If ImgColor And IsImage(ImgColor)
FreeImage(ImgColor)
EndIf
DeleteObject_(hbmMask)
DeleteObject_(hbmColor)
EndIf
EndIf
;Method 2
; https://www.purebasic.fr/english/viewtopic.php?p=582896#p582896
If CreateImage(0, *bm\icHeader\biWidth, *bm\icHeader\biWidth, 24, #Gray)
hdc = StartDrawing(ImageOutput(0))
If hdc
If hCur1
DrawIconEx_(hdc, 0, 0, hCur1, 0, 0, 0, 0, #DI_IMAGE | #DI_MASK)
EndIf
StopDrawing()
EndIf
EndIf
Procedure OpenWindow_0()
Window_0 = OpenWindow(#PB_Any, 300, 300, 650, 400, "", #PB_Window_SystemMenu)
Image_0 = ImageGadget(#PB_Any, 10, 50, 0, 0, 0)
If IsImage(0)
SetGadgetState(Image_0, ImageID(0))
EndIf
CanvasGadget(1, 200, 50, 400, 200)
If StartDrawing(CanvasOutput(1))
DrawingMode(#PB_2DDrawing_Default)
Box(200, 0, 200, 200, #Black)
StopDrawing()
EndIf
SetGadgetAttribute(1, #PB_Canvas_CustomCursor, hCur1)
EndProcedure
OpenWindow_0()
Repeat
e = WaitWindowEvent()
If e = #PB_Event_Gadget And GadgetType(EventGadget()) = #PB_GadgetType_Canvas
If EventType() = #PB_EventType_LeftButtonDown Or (EventType() = #PB_EventType_MouseMove And GetGadgetAttribute(EventGadget(), #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
x = GetGadgetAttribute(EventGadget(), #PB_Canvas_MouseX)
y = GetGadgetAttribute(EventGadget(), #PB_Canvas_MouseY)
If StartDrawing(CanvasOutput(EventGadget()))
Circle(x, y, 1, RGB(Random(255), Random(255), Random(255)))
StopDrawing()
EndIf
EndIf
EndIf
Until e = #PB_Event_CloseWindow
DestroyIcon_(hCur1)
DataSection
label_wait_r_cur:
;- "Z:\wait_r.cur" Size: 8774 bytes
;{
Data.q $8080000500020000, $1030000200000002, $6060000000560000, $0930000200000002, $4040000010860000, $0430000100000002, $3030000019B60000, $0330000100000002
Data.q $202000001DE60000, $0130000000000002, $0028000021160000, $0100000000800000, $0000000100010000, $0000000008000000, $0000000000000000, $0000000000000000
Data.q $000000FFFFFF0000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000800100, $0000000000000000, $0000000000C00100, $0000000000000000, $0000000000F00300, $0000000000000000, $00000000003C0300
Data.q $0000000000000000, $00000000800F0700, $0000000000000000, $0000000080030600, $0000000000000000, $0000000080030E00, $0000000000000000, $0000000000030C00
Data.q $0000000000000000, $0000000000071C00, $0000000000000000, $0000000000061800, $0000000000000000, $00000000000E3800, $0000000000000000, $00000000000C3000
Data.q $0000000000000000, $FFFFFF7F001C7000, $0000000000000080, $FFFFFF7F00186000, $0000000000000080, $070000780038E000, $0080000000000080, $070000780030C000
Data.q $00C0000000000080, $070000780070C001, $00E0000000000080, $FFFFFF7F00608001, $00F0000000000080, $FFFFFF7F00E08003, $00F8000000000080, $C6CCCC1800C00003
Data.q $00DC000000000000, $C6CCCC1800C00107, $00CE000000000000, $0633331800800106, $00C7000000000000, $063333180080030E, $80C3000000000000, $06CC0C180000030C
Data.q $C0C1000000000000, $06CC0C180000071C, $E0C0000000000000, $0630031800000618, $70C0000000000000, $0630031800000E38, $38C0000000000000, $06C0001800000C30
Data.q $1CC0000000000000, $06C0001800001C70, $0EC0000000000000, $0E00001C00001860, $07C0000000000000, $1C00000E000038E0, $03C0000000000000, $38000007000030C0
Data.q $01C0000000000000, $70008003000070C0, $00C0000000000000, $E0C0C00100006000, $00C0000000000000, $C0C1E000FFFFFF00, $00C0000000000000, $80037000FFFFFF00
Data.q $00C0000000000000, $000738000E000000, $00C0000000000000, $000618001C000000, $00C0000000000000, $0006180038000000, $00C0000000000000, $0006180070000000
Data.q $00C0000000000000, $00061800E0000000, $00C0000000000000, $00061800C0010000, $00C0000000000000, $0006180080030000, $00C0000000000000, $0006180000070000
Data.q $00C0000000000000, $00C61800000E0000, $00C0000000000000, $00C73800001C0000, $00C0000000000000, $8003700000380000, $00C0000000000000, $C001E00000700000
Data.q $00C0000000000000, $E000C00100E00000, $00C0000000000000, $70C0800300C00100, $00C0000000000000, $38C0000700800300, $00C0000000000000, $1C00030E00000700
Data.q $00C0000000000000, $0E00031C00000E00, $00C0000000000000, $06C00C1800001C00, $00C0000000000000, $06C00C1800003800, $00C0000000000000, $0633331800007000
Data.q $00C0000000000000, $063333180000E000, $00C0000000000000, $060000180000C001, $00C0000000000000, $0600001800008003, $00C0000000000000, $0600001800000007
Data.q $00C0000000000000, $060000180000000E, $00C0000000000000, $060000180000001C, $00C0000000000000, $0600001800000038, $00C0000000000000, $FFFFFF7F00000070
Data.q $00C0000000000080, $FFFFFF7F000000E0, $01C0000000000080, $07000078000000C0, $03C0000000000080, $0700007800000080, $07C0000000000080, $0700007800000000
Data.q $0EC0000000000080, $FFFFFF7F00000000, $1CC0000000000080, $FFFFFF7F00000000, $38C0000000000080, $0000000000000000, $70C0000000000000, $0000000000000000
Data.q $E0C0000000000000, $0000000000000000, $C0C1000000000000, $0000000000000000, $80C3000000000000, $0000000000000000, $00C7000000000000, $0000000000000000
Data.q $00CE000000000000, $0000000000000000, $00DC000000000000, $0000000000000000, $00F8000000000000, $0000000000000000, $00F0000000000000, $0000000000000000
Data.q $00E0000000000000, $0000000000000000, $00C0000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $FFFF000000000000, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFF7FFEFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFF3FFEFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFF0FFCFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFF03FCFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFF7F00F8FF, $FFFFFFFFFFFFFFFF, $FFFFFFFF7F00F8FF, $FFFFFFFFFFFFFFFF, $FFFFFFFF7F00F0FF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFF00F0FF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFF00E0FF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFF01E0FF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFF01C0FF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFF03C0FF
Data.q $FFFFFFFFFFFFFFFF, $00000080FF0380FF, $FFFFFFFFFFFFFF7F, $00000080FF0780FF, $FFFFFFFFFFFFFF7F, $00000080FF0700FF, $FF7FFFFFFFFFFF7F, $00000080FF0F00FF
Data.q $FF3FFFFFFFFFFF7F, $00000080FF0F00FE, $FF1FFFFFFFFFFF7F, $00000080FF1F00FE, $FF0FFFFFFFFFFF7F, $00000080FF1F00FC, $FF07FFFFFFFFFF7F, $010000E0FF3F00FC
Data.q $FF03FFFFFFFFFFFF, $010000E0FF3F00F8, $FF01FFFFFFFFFFFF, $010000E0FF7F00F8, $FF00FFFFFFFFFFFF, $010000E0FF7F00F0, $7F00FFFFFFFFFFFF, $010000E0FFFF00F0
Data.q $3F00FFFFFFFFFFFF, $010000E0FFFF00E0, $1F00FFFFFFFFFFFF, $010000E0FFFF01E0, $0F00FFFFFFFFFFFF, $010000E0FFFF01C0, $0700FFFFFFFFFFFF, $010000E0FFFF03C0
Data.q $0300FFFFFFFFFFFF, $010000E0FFFF0380, $0100FFFFFFFFFFFF, $010000E0FFFF0780, $0000FFFFFFFFFFFF, $030000F0FFFF0700, $0000FFFFFFFFFFFF, $070000F8FFFF0F00
Data.q $0000FFFFFFFFFFFF, $0F0000FCFFFF0F00, $0000FFFFFFFFFFFF, $1F0000FEFFFF1F00, $0000FFFFFFFFFFFF, $3F0000FF00000000, $0000FFFFFFFFFFFF, $7F0080FF00000000
Data.q $0000FFFFFFFFFFFF, $FF00C0FF01000000, $0000FFFFFFFFFFFF, $FF01E0FF03000000, $0000FFFFFFFFFFFF, $FF01E0FF07000000, $0000FFFFFFFFFFFF, $FF01E0FF0F000000
Data.q $0000FFFFFFFFFFFF, $FF01E0FF1F000000, $0000FFFFFFFFFFFF, $FF01E0FF3F000000, $0000FFFFFFFFFFFF, $FF01E0FF7F000000, $0000FFFFFFFFFFFF, $FF01E0FFFF000000
Data.q $0000FFFFFFFFFFFF, $FF01E0FFFF010000, $0000FFFFFFFFFFFF, $FF00C0FFFF030000, $0000FFFFFFFFFFFF, $7F0080FFFF070000, $0000FFFFFFFFFFFF, $3F0000FFFF0F0000
Data.q $0000FFFFFFFFFFFF, $1F0000FEFF1F0000, $0000FFFFFFFFFFFF, $0F0000FCFF3F0000, $0000FFFFFFFFFFFF, $070000F8FF7F0000, $0000FFFFFFFFFFFF, $030000F0FFFF0000
Data.q $0000FFFFFFFFFFFF, $010000E0FFFF0100, $0000FFFFFFFFFFFF, $010000E0FFFF0300, $0000FFFFFFFFFFFF, $010000E0FFFF0700, $0000FFFFFFFFFFFF, $010000E0FFFF0F00
Data.q $0000FFFFFFFFFFFF, $010000E0FFFF1F00, $0000FFFFFFFFFFFF, $010000E0FFFF3F00, $0000FFFFFFFFFFFF, $010000E0FFFF7F00, $0000FFFFFFFFFFFF, $010000E0FFFFFF00
Data.q $0000FFFFFFFFFFFF, $010000E0FFFFFF01, $0000FFFFFFFFFFFF, $010000E0FFFFFF03, $0000FFFFFFFFFFFF, $010000E0FFFFFF07, $0000FFFFFFFFFFFF, $00000080FFFFFF0F
Data.q $0000FFFFFFFFFF7F, $00000080FFFFFF1F, $0000FFFFFFFFFF7F, $00000080FFFFFF3F, $0000FFFFFFFFFF7F, $00000080FFFFFF7F, $0000FFFFFFFFFF7F, $00000080FFFFFFFF
Data.q $0100FFFFFFFFFF7F, $00000080FFFFFFFF, $0300FFFFFFFFFF7F, $00000080FFFFFFFF, $0700FFFFFFFFFF7F, $FFFFFFFFFFFFFFFF, $0F00FFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $1F00FFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $3F00FFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $7F00FFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FF00FFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FF01FFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FF03FFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FF07FFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FF0FFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FF1FFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FF3FFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $0028FFFFFFFFFFFF, $00C0000000600000, $0000000100010000, $0000000004800000, $0000000000000000, $0000000000000000, $000000FFFFFF0000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000008003, $0000E00700000000, $0000000000000000, $000000000000FC06, $00003C0E00000000, $0000000000000000
Data.q $0000000000000C0C, $00001C1C00000000, $0000000000000000, $0000000000001818, $0000383800000000, $0000000000000000, $0000FCFFFF0F3030, $FF0F707000000000
Data.q $000000000000FCFF, $00003C00000F6060, $000FE0E000C00000, $00E0000000003C00, $0000FCFFFF0FC0C0, $FF0FC0C101F00000, $01F800000000FCFF, $0000303333038081
Data.q $3303808303DC0000, $03CE000000003033, $000030CC0C030003, $0C03000707C70000, $86C30000000030CC, $0000303003030006, $0303000ECEC10000, $ECC0000000003030
Data.q $000030C00003000C, $8003001C7CC00000, $38C00000000070C0, $0000E000C0010018, $E000003818C00000, $00C000000000C001, $000080C370F0FF3F, $38F0FF3F00C00000
Data.q $00C00000000000C7, $0000000E1CE00000, $0CC0010000C00000, $00C000000000000C, $0000000C0C800300, $0C00070000C00000, $00C000000000000C, $0000000C0C000E00
Data.q $0C001C0000C00000, $00C000000000000C, $000000CC0C003800, $1C00700000C00000, $00C00000000000CE, $000000073800E000, $7000C00100C00000, $00C0000000008003
Data.q $0000C0C1E0008003, $C001000700C00000, $00C000000000E0C0, $000070008303000E, $0303001C00C00000, $00C0000000003000, $000030CC0C030038, $0C03007000C00000
Data.q $00C00000000030CC, $00003000000300E0, $000300C001C00000, $03C0000000003000, $0000300000030080, $0003000007C00000, $0EC0000000003000, $0000FCFFFF0F0000
Data.q $FF0F00001CC00000, $38C000000000FCFF, $00003C00000F0000, $000F000070C00000, $E0C0000000003C00, $0000FCFFFF0F0000, $FF0F0000C0C10000, $80C300000000FCFF
Data.q $0000000000000000, $0000000000C70000, $00CE000000000000, $0000000000000000, $0000000000DC0000, $00F8000000000000, $0000000000000000, $0000000000F00000
Data.q $00E0000000000000, $0000000000000000, $0000000000C00000, $0000000000000000, $0000000000000000, $0000000000000000, $FFFF000000000000, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFF7FFC, $FFFF1FF8FFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFF03F8, $FFFF03F0FFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFF03F0, $FFFF03E0FFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFF07E0, $FFFF07C0FFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFF030000F00FC0, $00F00F80FFFFFFFF
Data.q $FFFFFFFFFFFF0300, $FFFF030000F01F80, $00F01F00FF3FFFFF, $FF1FFFFFFFFF0300, $FFFF030000F03F00, $00F03F00FE0FFFFF, $FE07FFFFFFFF0300, $FFFF0F0000FC7F00
Data.q $00FC7F00FC03FFFF, $FC01FFFFFFFF0F00, $FFFF0F0000FCFF00, $00FCFF00F800FFFF, $7800FFFFFFFF0F00, $FFFF0F0000FCFF01, $00FCFF013000FFFF, $1000FFFFFFFF0F00
Data.q $FFFF0F0000FCFF03, $00FCFF030000FFFF, $0000FFFFFFFF0F00, $FFFF1F0000FEFF07, $00FFFF070000FFFF, $0000FFFFFFFF3F00, $FFFF7F00800F0000, $C00F00000000FFFF
Data.q $0000FFFFFFFFFF00, $FFFFFF01E01F0000, $F03F00000000FFFF, $0000FFFFFFFFFF03, $FFFFFF03F07F0000, $F0FF00000000FFFF, $0000FFFFFFFFFF03, $FFFFFF03F0FF0100
Data.q $F0FF03000000FFFF, $0000FFFFFFFFFF03, $FFFFFF03F0FF0700, $E0FF0F000000FFFF, $0000FFFFFFFFFF01, $FFFFFF00C0FF1F00, $80FF3F000000FFFF, $0000FFFFFFFF7F00
Data.q $FFFF3F0000FF7F00, $00FEFF000000FFFF, $0000FFFFFFFF1F00, $FFFF0F0000FCFF01, $00FCFF030000FFFF, $0000FFFFFFFF0F00, $FFFF0F0000FCFF07, $00FCFF0F0000FFFF
Data.q $0000FFFFFFFF0F00, $FFFF0F0000FCFF1F, $00FCFF3F0000FFFF, $0000FFFFFFFF0F00, $FFFF0F0000FCFF7F, $00FCFFFF0000FFFF, $0100FFFFFFFF0F00, $FFFF030000F0FFFF
Data.q $00F0FFFF0300FFFF, $0700FFFFFFFF0300, $FFFF030000F0FFFF, $00F0FFFF0F00FFFF, $1F00FFFFFFFF0300, $FFFF030000F0FFFF, $00F0FFFF3F00FFFF, $7F00FFFFFFFF0300
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFF00FFFF, $FF01FFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFF03FFFF, $FF07FFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFF0FFFFF
Data.q $FF1FFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFF3FFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $0028FFFFFFFFFFFF, $0080000000400000
Data.q $0000000100010000, $0000000002000000, $0000000000000000, $0000000000000000, $000000FFFFFF0000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $01000000000000E0, $0200000000000010, $0200000000000010, $0400000000000010
Data.q $0400000000000020, $0800000000000020, $0880000080FFFF40, $10C000008001C040, $10A0000080FFFF80, $2190000000555580, $2188000000A94A00, $4284000000514500
Data.q $4282000000A14200, $8481000000414100, $0480000000836000, $0F80000000063000, $00800000000C18FF, $0080000000980C02, $0080000000100404, $0080000000100408
Data.q $0080000000100410, $0080000000900420, $0080000000180C40, $01800000000C1880, $0280000000863000, $0480000000036100, $0880000000814200, $1080000000514500
Data.q $2080000000014000, $4080000000014000, $8080000000014000, $0081000080FFFF00, $008200008001C000, $0084000080FFFF00, $0088000000000000, $0090000000000000
Data.q $00A0000000000000, $00C0000000000000, $0080000000000000, $0000000000000000, $FFFF000000000000, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FEFFFFFFFFFFFF1F, $FCFFFFFFFFFFFF0F, $FCFFFFFFFFFFFF0F, $F8FFFFFFFFFFFF0F
Data.q $F8FFFFFFFFFFFF1F, $F0FFFFFFFFFFFF1F, $F07FFFFF7F00003F, $E03FFFFF7F00003F, $E01FFFFF7F00007F, $C00FFFFFFF00807F, $C007FFFFFF0080FF, $8103FFFFFF0080FF
Data.q $8101FFFFFF0080FF, $0300FFFFFF0080FF, $0300FFFFFF0080FF, $0000FFFFFF01C0FF, $0000FFFFFF03E000, $0000FFFFFF07F001, $0000FFFFFF0FF803, $0000FFFFFF0FF807
Data.q $0000FFFFFF0FF80F, $0000FFFFFF0FF81F, $0000FFFFFF07F03F, $0000FFFFFF03E07F, $0100FFFFFF01C0FF, $0300FFFFFF0080FF, $0700FFFFFF0080FF, $0F00FFFFFF0080FF
Data.q $1F00FFFFFF0080FF, $3F00FFFFFF0080FF, $7F00FFFFFF0080FF, $FF00FFFF7F0000FF, $FF01FFFF7F0000FF, $FF03FFFF7F0000FF, $FF07FFFFFFFFFFFF, $FF0FFFFFFFFFFFFF
Data.q $FF1FFFFFFFFFFFFF, $FF3FFFFFFFFFFFFF, $FF7FFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $0028FFFFFFFFFFFF, $0060000000300000, $0000000100010000, $0000000001800000
Data.q $0000000000000000, $0000000000000000, $000000FFFFFF0000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000
Data.q $0000000000000000, $0000000000000000, $0000000000000000, $1C00000000000000, $2200000000000000, $2200000000000000, $4400000000000000, $4400000000000000
Data.q $880000000000FE3F, $8880000000000630, $10C100000000FE3F, $10A1000000005415, $209200000000A412, $208A000000004411, $4084000000008410, $7F80000000000C18
Data.q $00800000000098CC, $0180000000003086, $0280000000002002, $0480000000002002, $088000000000B006, $108000000000180C, $2080000000008C18, $4080000000000411
Data.q $808000000000A412, $0081000000000410, $0082000000000410, $008400000000FE3F, $0088000000000630, $009000000000FE3F, $00A0000000000000, $00C0000000000000
Data.q $0080000000000000, $0000000000000000, $FFFF000000000000, $FFFF0000FFFFFFFF, $FFFF0000FFFFFFFF, $FFFF0000FFFFFFFF, $FFFF0000FFFFFFFF, $FFFF0000FFFFFFFF
Data.q $FFFF0000FFFFFFFF, $FFFF0000FFFFFFFF, $FFFF0000FFFFFFFF, $FFFF0000FFFFFFFF, $FFFF0000FFFFFFFF, $FFFF0000FFFFFFFF, $FFFF0000FFFFFFFF, $FFFF0000FFFFFFFF
Data.q $FFFF0000FFFFFFFF, $FFFF0000FFFFFFFF, $FFFF0000FFFFFFFF, $E3FF0000FFFFFFFF, $C1FF0000FFFFFFFF, $C1FF0000FFFFFFFF, $83FF0000FFFFFFFF, $83FF0000FFFFFFFF
Data.q $07FF0000FFFF01C0, $077F0000FFFF01C0, $0F3E0000FFFF01C0, $0F1E0000FFFF03E0, $1F0C0000FFFF03E0, $1F040000FFFF03E0, $3F000000FFFF03E0, $00000000FFFF03E0
Data.q $00000000FFFF0730, $00000000FFFF0F78, $01000000FFFF1FFC, $03000000FFFF1FFC, $07000000FFFF0FF8, $0F000000FFFF07F0, $1F000000FFFF03E0, $3F000000FFFF03E0
Data.q $7F000000FFFF03E0, $FF000000FFFF03E0, $FF010000FFFF03E0, $FF030000FFFF01C0, $FF070000FFFF01C0, $FF0F0000FFFF01C0, $FF1F0000FFFFFFFF, $FF3F0000FFFFFFFF
Data.q $FF7F0000FFFFFFFF, $FFFF0000FFFFFFFF, $00280000FFFFFFFF, $0040000000200000, $0000000100010000, $0000000000800000, $0000000000000000, $0000000000000000
Data.q $000000FFFFFF0000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $0000000000000000, $4F02000080010000
Data.q $8F04000C4C0200FC, $05C900A8868400FC, $0692008804A90048, $41800030E3830018, $06810030838000A0, $0484004804820098, $0F90000804880008, $0FC0000C0CA000FC
Data.q $FFFF0000008000FC, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $FFFFFFFFFFFFFFFF, $30FCFFFF7FFEFFFF
Data.q $70F8FF0330FCFF03, $F830FF077878FF03, $F801FF07F810FF07, $3E00FF0F1C00FF07, $F800FF0F7C00FF1F, $F803FF07F801FF07, $F00FFF07F807FF07, $F03FFF03F01FFF03
Data.a $03, $FF, $7F, $FF, $FF, $FF
label_wait_r_cur_End:
;}
cross_cur:
; size : 4286 bytes
Data.q $2020000100020000,$10A8000F00100000,$0028000000160000,$0040000000200000,$0000002000010000,$0000000010800000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000190000000000,$0000220000002200,$0000000000001900
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000420000001900,$0000570000005700,$0000190000004200,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$FFFF000000000000,$FFFFFFFFFFFFFFFF
Data.q $0000FFFFFFFFFFFF,$0000220000005800,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$FFFF000000000000,$0000FF000000FFFF,$0000FFFFFFFFFF00,$0000230000005B00
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $FFFF000000000000,$0000FF000000FFFF,$0000FFFFFFFFFF00,$0000230000005B00,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$FFFF000000000000,$0000FF000000FFFF
Data.q $0000FFFFFFFFFF00,$0000270000005D00,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000190000000000,$0000230000002200,$FFFF270000002300,$0000FF000000FFFF,$0000FFFFFFFFFF00,$00003D0000006500
Data.q $0000230000002700,$0000220000002300,$0000000000001900,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000420000001900,$00005B0000005700
Data.q $FFFF5C0000005B00,$0000FF000000FFFF,$0000FFFFFFFFFF00,$0000650000007500,$00005B0000005C00,$0000570000005B00
Data.q $0000190000004200,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$FFFF000000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$0000FF000000FFFF
Data.q $FFFFFFFFFFFFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$0000FFFFFFFFFFFF,$0000220000005800,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$FFFF000000000000
Data.q $0000FF000000FFFF,$0000FF000000FF00,$0000FF000000FF00,$0000FF000000FF00,$0000FF000000FF00,$0000FF000000FF00
Data.q $0000FF000000FF00,$0000FFFFFFFFFF00,$0000220000005800,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$FFFF000000000000,$0000FF000000FFFF,$0000FF000000FF00
Data.q $0000FF000000FF00,$0000FF000000FF00,$0000FF000000FF00,$0000FF000000FF00,$0000FF000000FF00,$0000FFFFFFFFFF00
Data.q $0000190000004200,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$FFFF000000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$0000FF000000FFFF
Data.q $FFFFFFFFFFFFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$0000FFFFFFFFFFFF,$0000000000001900,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$FFFF000000000000,$0000FF000000FFFF,$0000FFFFFFFFFF00,$0000270000005D00
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $FFFF000000000000,$0000FF000000FFFF,$0000FFFFFFFFFF00,$0000230000005B00,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$FFFF000000000000,$0000FF000000FFFF
Data.q $0000FFFFFFFFFF00,$0000230000005B00,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$FFFF000000000000,$0000FF000000FFFF,$0000FFFFFFFFFF00,$0000220000005800
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $FFFF000000000000,$0000FF000000FFFF,$0000FFFFFFFFFF00,$0000190000004200,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$FFFF000000000000,$FFFFFFFFFFFFFFFF
Data.q $0000FFFFFFFFFFFF,$0000000000001900,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$FFFF000000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FEFFFFFFFFFFFFFF,$FCFFFF0FFCFFFF1F,$FCFFFF0FFCFFFF0F,$80FFFF0FFCFFFF0F,$00FF3F0000FF7F00,$00FF3F0000FF3F00
Data.q $FCFF7F0000FF3F00,$FCFFFF0FFCFFFF0F,$FCFFFF0FFCFFFF0F,$FFFFFF1FFCFFFF0F,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF
Data.b $FF,$FF,$FF,$FF,$FF,$FF
cross_cur_end:
EndDataSection
Old version.
Code: Select all
; https://docs.microsoft.com/en-us/previous-versions/ms997538(v=msdn.10)
; https://docs.fileformat.com/image/ico/
; https://en.wikipedia.org/wiki/ICO_(file_format)
; https://www.daubnet.com/en/file-format-cur
Structure ICONDIRENTRY
bWidth.a
bHeight.a
bColorCount.a
bReserved.a
StructureUnion
wPlanes.w
XHotspot.w
EndStructureUnion
StructureUnion
wBitCount.w
YHotspot.w
EndStructureUnion
dwBytesInRes.l
dwImageOffset.l
EndStructure
Structure ICONDIR
idReserved.w
idType.w
idCount.w
idEntries.ICONDIRENTRY[1]
EndStructure
*m.ICONDIR = ?cross_cur
*bm.ICONIMAGE = *m + SizeOf(ICONDIR)
Global hCur1, hCur2
;Method 1
; https://stackoverflow.com/questions/41533158/create-32-bit-color-icon-programmatically
; https://stackoverflow.com/questions/16472538/changing-taskbar-icon-programmatically-win32-c/16473172#16473172
If *bm\icHeader\biBitCount = 32
ColorBitmapSize = *m\idEntries[0]\bWidth * *m\idEntries[0]\bHeight * 4
MaskBitmapHeight = *bm\icHeader\biHeight / 2
MaskBitmapSize = *bm\icHeader\biSizeImage - ColorBitmapSize
bpp = (MaskBitmapSize * 8) / (*m\idEntries[0]\bWidth * MaskBitmapHeight)
CursorInfo.ICONINFO\fIcon = 0 ;create cursor
CursorInfo\xHotspot = *m\idEntries[0]\XHotspot
CursorInfo\yHotspot = *m\idEntries[0]\YHotspot
*BitmapData = *bm + *bm\icHeader\biSize ;= SizeOf(BITMAPINFOHEADER) = 40
CursorInfo\hbmColor = CreateBitmap_(*m\idEntries[0]\bWidth, *m\idEntries[0]\bHeight, 1, *bm\icHeader\biBitCount, *BitmapData)
If CursorInfo\hbmColor
CursorInfo\hbmMask = CreateBitmap_(*m\idEntries[0]\bWidth, MaskBitmapHeight, 1, bpp, *BitmapData + ColorBitmapSize)
If CursorInfo\hbmMask
hCur1 = CreateIconIndirect_(CursorInfo)
DeleteObject_(CursorInfo\hbmMask)
EndIf
DeleteObject_(CursorInfo\hbmColor)
EndIf
EndIf
;Method 2
hCur2 = CreateIconFromResource_(*m + *m\idEntries[0]\dwImageOffset, *m\idEntries[0]\dwBytesInRes, 1, $30000)
Debug hCur1
Debug hCur2
If CreateImage(0, *m\idEntries[0]\bWidth, *m\idEntries[0]\bHeight, 32)
hdc = StartDrawing(ImageOutput(0))
If hdc
DrawIconEx_(hdc, 0, 0, hCur1, 0, 0, 0, 0, #DI_IMAGE)
StopDrawing()
EndIf
EndIf
If CreateImage(1, *m\idEntries[0]\bWidth, *m\idEntries[0]\bHeight, 32)
hdc = StartDrawing(ImageOutput(1))
If hdc
DrawIconEx_(hdc, 0, 0, hCur2, 0, 0, 0, 0, #DI_IMAGE)
StopDrawing()
EndIf
EndIf
Procedure OpenWindow_0()
Window_0 = OpenWindow(#PB_Any, 300, 300, 400, 400, "", #PB_Window_SystemMenu)
Image_0 = ImageGadget(#PB_Any, 50, 50, 32, 32, ImageID(0))
Image_1 = ImageGadget(#PB_Any, 50, 200, 32, 32, ImageID(1))
CanvasGadget(1, 100, 50, 100, 100)
CanvasGadget(2, 100, 200, 100, 100)
SetGadgetAttribute(1, #PB_Canvas_CustomCursor, hCur1)
SetGadgetAttribute(2, #PB_Canvas_CustomCursor, hCur2)
EndProcedure
Procedure Window_0_Events(event)
Select event
Case #PB_Event_CloseWindow
ProcedureReturn #False
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
EndSelect
ProcedureReturn #True
EndProcedure
OpenWindow_0()
Repeat
e = WaitWindowEvent()
If e = #PB_Event_Gadget And GadgetType(EventGadget()) = #PB_GadgetType_Canvas
If EventType() = #PB_EventType_LeftButtonDown Or (EventType() = #PB_EventType_MouseMove And GetGadgetAttribute(EventGadget(), #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
x = GetGadgetAttribute(EventGadget(), #PB_Canvas_MouseX)
y = GetGadgetAttribute(EventGadget(), #PB_Canvas_MouseY)
If StartDrawing(CanvasOutput(EventGadget()))
Circle(x, y, 1, RGB(Random(255), Random(255), Random(255)))
StopDrawing()
EndIf
EndIf
EndIf
Until e = #PB_Event_CloseWindow
DestroyCursor_(hCur1)
DestroyCursor_(hCur2)
DataSection
cross_cur:
; size : 4286 bytes
Data.q $2020000100020000,$10A8000F00100000,$0028000000160000,$0040000000200000,$0000002000010000,$0000000010800000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000190000000000,$0000220000002200,$0000000000001900
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000420000001900,$0000570000005700,$0000190000004200,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$FFFF000000000000,$FFFFFFFFFFFFFFFF
Data.q $0000FFFFFFFFFFFF,$0000220000005800,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$FFFF000000000000,$0000FF000000FFFF,$0000FFFFFFFFFF00,$0000230000005B00
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $FFFF000000000000,$0000FF000000FFFF,$0000FFFFFFFFFF00,$0000230000005B00,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$FFFF000000000000,$0000FF000000FFFF
Data.q $0000FFFFFFFFFF00,$0000270000005D00,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000190000000000,$0000230000002200,$FFFF270000002300,$0000FF000000FFFF,$0000FFFFFFFFFF00,$00003D0000006500
Data.q $0000230000002700,$0000220000002300,$0000000000001900,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000420000001900,$00005B0000005700
Data.q $FFFF5C0000005B00,$0000FF000000FFFF,$0000FFFFFFFFFF00,$0000650000007500,$00005B0000005C00,$0000570000005B00
Data.q $0000190000004200,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$FFFF000000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$0000FF000000FFFF
Data.q $FFFFFFFFFFFFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$0000FFFFFFFFFFFF,$0000220000005800,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$FFFF000000000000
Data.q $0000FF000000FFFF,$0000FF000000FF00,$0000FF000000FF00,$0000FF000000FF00,$0000FF000000FF00,$0000FF000000FF00
Data.q $0000FF000000FF00,$0000FFFFFFFFFF00,$0000220000005800,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$FFFF000000000000,$0000FF000000FFFF,$0000FF000000FF00
Data.q $0000FF000000FF00,$0000FF000000FF00,$0000FF000000FF00,$0000FF000000FF00,$0000FF000000FF00,$0000FFFFFFFFFF00
Data.q $0000190000004200,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$FFFF000000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$0000FF000000FFFF
Data.q $FFFFFFFFFFFFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$0000FFFFFFFFFFFF,$0000000000001900,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$FFFF000000000000,$0000FF000000FFFF,$0000FFFFFFFFFF00,$0000270000005D00
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $FFFF000000000000,$0000FF000000FFFF,$0000FFFFFFFFFF00,$0000230000005B00,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$FFFF000000000000,$0000FF000000FFFF
Data.q $0000FFFFFFFFFF00,$0000230000005B00,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$FFFF000000000000,$0000FF000000FFFF,$0000FFFFFFFFFF00,$0000220000005800
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $FFFF000000000000,$0000FF000000FFFF,$0000FFFFFFFFFF00,$0000190000004200,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$FFFF000000000000,$FFFFFFFFFFFFFFFF
Data.q $0000FFFFFFFFFFFF,$0000000000001900,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$FFFF000000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FEFFFFFFFFFFFFFF,$FCFFFF0FFCFFFF1F,$FCFFFF0FFCFFFF0F,$80FFFF0FFCFFFF0F,$00FF3F0000FF7F00,$00FF3F0000FF3F00
Data.q $FCFF7F0000FF3F00,$FCFFFF0FFCFFFF0F,$FCFFFF0FFCFFFF0F,$FFFFFF1FFCFFFF0F,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF
Data.b $FF,$FF,$FF,$FF,$FF,$FF
cross_cur_end:
EndDataSection
To read from a file, simply do the following.