From 87ded17e20b55b78a5967e653b96fcbc2f5343c9 Mon Sep 17 00:00:00 2001 From: Lucas Scharenbroich Date: Wed, 6 Oct 2021 07:10:09 -0500 Subject: [PATCH] Initial Tiled tile animation export support * Tiled tile animations read from TSX files * Hooks for initialization generated by the tiled export tool * Animated tiles implements with dynamic tiles backed by 2KB of direct page space in Bank 00 * Animation resolution limited to 1/60th incremenents TODO * Fix crasher in the _DoScriptSequ timer callback * Fix single-line of garbage on the top line of the dynamic tiles --- demos/shell/Actions.s | 225 +- demos/shell/App.Main.s | 253 +- demos/shell/assets/tiled/Overworld.tsx | 32 + demos/shell/assets/tiled/world_1-1.json | 4 +- demos/shell/assets/tiled/world_1-1.tmx | 8 +- demos/shell/assets/tilesets/smb-16.png | Bin 2379 -> 2627 bytes demos/shell/gen/App.TileMapBG0.s | 4 +- demos/shell/gen/App.TileSet.s | 6710 +++++++++++++++++++++-- demos/shell/gen/App.TileSetAnim.s | 52 + demos/shell/package.json | 2 +- macros/CORE.MACS.S | 20 + src/Anim.s | 24 +- src/Defs.s | 10 + src/GTE.s | 9 + src/Graphics.s | 224 +- src/Render.s | 5 +- src/Script.s | 121 +- src/TileMap.s | 3 +- src/Timer.s | 31 +- src/blitter/Template.s | 66 +- src/blitter/Tiles.s | 44 +- tools/png2iigs.js | 7 +- tools/tiled2iigs.js | 54 +- 23 files changed, 7023 insertions(+), 885 deletions(-) create mode 100644 demos/shell/gen/App.TileSetAnim.s diff --git a/demos/shell/Actions.s b/demos/shell/Actions.s index fa913ad..bb48cf5 100644 --- a/demos/shell/Actions.s +++ b/demos/shell/Actions.s @@ -1,229 +1,220 @@ MoveLeft clc - adc StartX ; Increment the virtual X-position - jsl SetBG0XPos + adc StartX ; Increment the virtual X-position + jsl SetBG0XPos - lda StartX + lda StartX lsr - jsl SetBG1XPos + jsl SetBG1XPos - jsl Render + jsl Render rts MoveRight pha - lda StartX + lda StartX sec - sbc 1,s - bpl *+5 - lda #0 - jsl SetBG0XPos + sbc 1,s + bpl *+5 + lda #0 + jsl SetBG0XPos - lda StartX + lda StartX lsr - jsl SetBG1XPos + jsl SetBG1XPos - jsl Render + jsl Render pla rts MoveUp clc - adc StartY ; Increment the virtual Y-position + adc StartY ; Increment the virtual Y-position pha - lda #240 ; virtual play field height + lda #240 ; virtual play field height sec - sbc ScreenHeight + sbc ScreenHeight tax - cmp 1,s - bcc *+4 - lda 1,s - jsl SetBG0YPos + cmp 1,s + bcc *+4 + lda 1,s + jsl SetBG0YPos pla ; lda StartY ; lsr ; jsl SetBG1YPos - jsl Render + jsl Render rts MoveDown pha - lda StartY + lda StartY sec - sbc 1,s - bpl *+5 - lda #0 - jsl SetBG0YPos + sbc 1,s + bpl *+5 + lda #0 + jsl SetBG0YPos ; lda StartY ; lsr ; jsl SetBG1YPos - jsl Render + jsl Render pla rts ; Very simple, scroll as fast as possible -oldOneSecondCounter ds 2 -frameCount ds 2 -lastTick ds 2 +oldOneSecondCounter ds 2 +frameCount ds 2 + Demo - ldal OneSecondCounter - sta oldOneSecondCounter - stz frameCount + ldal OneSecondCounter + sta oldOneSecondCounter + stz frameCount ; Every 3 ticks (20 fps) cycle some colors - lda #DoColorCycle - ldx #^DoColorCycle - ldy #3 - jsl AddTimer +; lda #DoColorCycle +; ldx #^DoColorCycle +; ldy #3 +; jsl AddTimer :loop - PushLong #0 - _GetTick - pla - plx - - cmp lastTick ; Throttle to 60 fps - beq :loop - tax ; Calculate the increment - sec - sbc lastTick - stx lastTick -; jsr _DoTimers + jsl DoTimers ; lda #1 ; jsr MoveLeft - jsr UpdateBG1Rotation + jsr UpdateBG1Rotation ; jsr DoColorCycle - jsl Render + jsl Render - inc frameCount + inc frameCount - ldal KBD_STROBE_REG - bit #$0080 - beq :nokey - and #$007F - cmp #'s' - bne :nokey + ldal KBD_STROBE_REG + bit #$0080 + beq :nokey + and #$007F + cmp #'s' + bne :nokey rts :nokey - ldal OneSecondCounter - cmp oldOneSecondCounter - beq :loop + ldal OneSecondCounter + cmp oldOneSecondCounter + beq :loop - sta oldOneSecondCounter - lda ScreenWidth - cmp #150 - bcs :loop + sta oldOneSecondCounter + lda ScreenWidth + cmp #150 + bcs :loop - lda #FPSStr - ldx #0 ; top-left corner - ldy #$7777 - jsr DrawString + lda #FPSStr + ldx #0 ; top-left corner + ldy #$7777 + jsr DrawString - lda frameCount - ldx #4*4 - jsr DrawWord + lda frameCount + ldx #4*4 + jsr DrawWord - stz frameCount - bra :loop + stz frameCount + bra :loop -FPSStr str 'FPS' +FPSStr str 'FPS' ; Move some colors around color (6 - 11) address 12 - 22 DoColorCycle - ldal $E19E0C + ldal $E19E0C pha - ldal $E19E0E + ldal $E19E0E pha - ldal $E19E10 + ldal $E19E10 pha - ldal $E19E12 + ldal $E19E12 pha - ldal $E19E14 + ldal $E19E14 pha - ldal $E19E16 - stal $E19E0C + ldal $E19E16 + stal $E19E0C pla - stal $E19E16 + stal $E19E16 pla - stal $E19E14 + stal $E19E14 pla - stal $E19E12 + stal $E19E12 pla - stal $E19E10 + stal $E19E10 pla - stal $E19E0E + stal $E19E0E rts ; Triggered timer to sway the background UpdateBG1Offset - lda BG1OffsetIndex + lda BG1OffsetIndex inc inc - cmp #32 ; 16 entries x 2 for indexing - bcc *+5 - sbc #32 - sta BG1OffsetIndex + cmp #32 ; 16 entries x 2 for indexing + bcc *+5 + sbc #32 + sta BG1OffsetIndex rts AngleUp - lda angle + lda angle inc - cmp #64 - bcc *+5 - sbc #64 - sta angle - jsr _ApplyAngle - jsl Render + cmp #64 + bcc *+5 + sbc #64 + sta angle + jsr _ApplyAngle + jsl Render rts AngleDown - lda angle + lda angle dec - bpl *+6 + bpl *+6 clc - adc #64 - sta angle - jsr _ApplyAngle - jsl Render + adc #64 + sta angle + jsr _ApplyAngle + jsl Render rts -angle dw 0 +angle dw 0 UpdateBG1Rotation - jsr _ApplyAngle + jsr _ApplyAngle ; Increment the angle - lda angle + lda angle inc - cmp #64 - bcc *+5 - lda #0 - sta angle + cmp #64 + bcc *+5 + lda #0 + sta angle rts x_angles EXT y_angles EXT _ApplyAngle - lda angle ; debug with angle = 0 + lda angle ; debug with angle = 0 asl tax - ldal x_angles,x ; load the address of addressed for this angle + ldal x_angles,x ; load the address of addressed for this angle tay phx - jsl ApplyBG1XPosAngle + jsl ApplyBG1XPosAngle plx - ldal y_angles,x ; load the address of addresses for this angle + ldal y_angles,x ; load the address of addresses for this angle tay - jsl ApplyBG1YPosAngle + jsl ApplyBG1YPosAngle rts + + diff --git a/demos/shell/App.Main.s b/demos/shell/App.Main.s index 745b698..1a6ff53 100644 --- a/demos/shell/App.Main.s +++ b/demos/shell/App.Main.s @@ -8,17 +8,15 @@ use EDS.GSOS.MACS.s use Tool222.Macs.s use Util.Macs.s + use CORE.MACS.s use ../../src/GTE.s use ../../src/Defs.s mx %00 -; External references -tiledata ext - ; Feature flags -NO_INTERRUPTS equ 1 ; turn off for crossrunner debugging -NO_MUSIC equ 1 ; turn music + tool loading off +NO_INTERRUPTS equ 0 ; turn off for crossrunner debugging +NO_MUSIC equ 1 ; turn music + tool loading off ; Typical init phk @@ -26,60 +24,119 @@ NO_MUSIC equ 1 ; turn music + tool loading of jsl EngineStartUp + lda #^MyPalette + ldx #MyPalette + ldy #0 + jsl SetPalette + ldx #0 jsl SetScreenMode ; Set up our level data -; jsr BG0SetUp + jsr BG0SetUp ; jsr BG1SetUp + jsr TileAnimInit ; Allocate room to load data - jsl AllocBank ; Alloc 64KB for Load/Unpack - sta BankLoad ; Store "Bank Pointer" + jsl AllocBank ; Alloc 64KB for Load/Unpack + sta BankLoad ; Store "Bank Pointer" -; jsr MovePlayerToOrigin ; Put the player at the beginning of the map + jsr MovePlayerToOrigin ; Put the player at the beginning of the map -; lda #DIRTY_BIT_BG0_REFRESH ; Redraw all of the tiles on the next Render -; ora #DIRTY_BIT_BG1_REFRESH -; tsb DirtyBits + lda #DIRTY_BIT_BG0_REFRESH ; Redraw all of the tiles on the next Render + ora #DIRTY_BIT_BG1_REFRESH + tsb DirtyBits -; lda #$FFFF + lda #$FFFF jsl Render EvtLoop jsl ReadControl - and #$007F ; Ignore the buttons for now + and #$007F ; Ignore the buttons for now cmp #'q' bne :1 brl Exit -:1 cmp #'l' +tcounter dw 0 +tileIDs dw 168,170,172,174,168,170,172,174 + dw 169,171,173,175,169,171,173,175 + dw 208,210,212,214,208,210,212,214 + dw 209,211,213,215,209,211,213,215 + +;tileIDs dw 1,1,1,1,1,1,1,5 +; dw 2,2,2,2,2,2,2,6 +; dw 3,3,3,3,3,3,3,7 +; dw 4,4,4,4,4,4,4,8 + + +:1 + cmp #'r' + bne EvtLoop + + jsl DoTimers + + inc tcounter + + lda tcounter + and #$0007 + asl + tay + lda tileIDs,y + pha + lda tileIDs+16,y + pha + lda tileIDs+32,y + pha + ldx tileIDs+48,y + inx + ldy #3 + jsl CopyTileToDyn + + plx + inx + ldy #2 + jsl CopyTileToDyn + + plx + inx + ldy #1 + jsl CopyTileToDyn + + plx + inx + ldy #0 + jsl CopyTileToDyn + + jsl Render + brl EvtLoop + + cmp #'l' bne :1_1 jsr DoLoadFG - bra EvtLoop + brl EvtLoop :1_1 cmp #'b' bne :2 jsr DoLoadBG1 - bra EvtLoop + brl EvtLoop :2 cmp #'m' bne :3 jsr DumpBanks - bra EvtLoop + brl EvtLoop -:3 cmp #'f' ; render a 'f'rame +:3 cmp #'f' ; render a 'f'rame bne :4 jsl Render - bra EvtLoop + brl EvtLoop -:4 cmp #'h' ; Show the 'h'eads up display +:4 cmp #'h' ; Show the 'h'eads up display bne :5 jsr DoHUP - bra EvtLoop + brl EvtLoop -:5 cmp #'1' ; User selects a new screen size +:5 cmp #'1' ; User selects a new screen size bcc :6 cmp #'9'+1 bcs :6 @@ -95,7 +152,7 @@ EvtLoop jsr DoTiles brl EvtLoop -:7 cmp #$15 ; left = $08, right = $15, up = $0B, down = $0A +:7 cmp #$15 ; left = $08, right = $15, up = $0B, down = $0A bne :8 lda #1 jsr MoveRight @@ -146,18 +203,20 @@ Exit bcs Fatal Fatal brk $00 +MyPalette dw $0E51,$0EDA,$0000,$068F,$0BF1,$00A0,$0EEE,$0777,$0FA4,$0F59,$0F31,$02E3,$09B9,$01CE,$0EE6 + StartMusic pea #^MusicFile pea #MusicFile _NTPLoadOneMusic - pea $0001 ; loop + pea $0001 ; loop _NTPPlayMusic rts ; Position the screen with the botom-left corner of the tilemap visible MovePlayerToOrigin - lda #0 ; Set the player's position + lda #0 ; Set the player's position jsl SetBG0XPos lda #0 jsl SetBG1XPos @@ -199,8 +258,8 @@ DoHUP ldx #{160-12*4} ldy #$7777 jsr DrawString - lda OneSecondCounter ; Number of elapsed seconds - ldx #{160-4*4} ; Render the word 4 charaters from right edge + lda OneSecondCounter ; Number of elapsed seconds + ldx #{160-4*4} ; Render the word 4 charaters from right edge jsr DrawWord lda #TicksStr @@ -221,7 +280,7 @@ DoTiles :column equ 3 :tile equ 5 - pea $0000 ; Allocate local variable space + pea $0000 ; Allocate local variable space pea $0000 pea $0000 @@ -251,7 +310,7 @@ DoTiles cmp #26 bcc :rowloop - pla ; restore the stack + pla ; restore the stack pla pla rts @@ -284,7 +343,7 @@ DoLoadFG ldx #FGName jsr LoadFile - ldx BankLoad ; Copy it into the code field + ldx BankLoad ; Copy it into the code field lda #0 jsl CopyBinToField rts @@ -292,10 +351,10 @@ DoLoadFG ; Load a simple picture format onto the SHR screen DoLoadPic lda BankLoad - ldx #ImageName ; Load+Unpack Boot Picture - jsr LoadPicture ; X=Name, A=Bank to use for loading + ldx #ImageName ; Load+Unpack Boot Picture + jsr LoadPicture ; X=Name, A=Bank to use for loading - ldx BankLoad ; Copy it into the code field + ldx BankLoad ; Copy it into the code field lda #0 jsl CopyPicToField rts @@ -336,43 +395,43 @@ DefaultPalette dw $0E51,$0EDB,$0000,$068F,$0BF1,$00A0,$0EEE,$0777,$ ; Graphics helpers LoadPicture - jsr LoadFile ; X=Nom Image, A=Banc de chargement XX/00 + jsr LoadFile ; X=Nom Image, A=Banc de chargement XX/00 bcc :loadOK rts :loadOK - jsr UnpackPicture ; A=Packed Size + jsr UnpackPicture ; A=Packed Size rts -UnpackPicture sta UP_PackedSize ; Size of Packed Data - lda #$8000 ; Size of output Data Buffer +UnpackPicture sta UP_PackedSize ; Size of Packed Data + lda #$8000 ; Size of output Data Buffer sta UP_UnPackedSize - lda BankLoad ; Banc de chargement / Decompression - sta UP_Packed+1 ; Packed Data + lda BankLoad ; Banc de chargement / Decompression + sta UP_Packed+1 ; Packed Data clc adc #$0080 - stz UP_UnPacked ; On remet a zero car modifie par l'appel + stz UP_UnPacked ; On remet a zero car modifie par l'appel stz UP_UnPacked+2 - sta UP_UnPacked+1 ; Unpacked Data buffer + sta UP_UnPacked+1 ; Unpacked Data buffer - PushWord #0 ; Space for Result : Number of bytes unpacked - PushLong UP_Packed ; Pointer to buffer containing the packed data - PushWord UP_PackedSize ; Size of the Packed Data - PushLong #UP_UnPacked ; Pointer to Pointer to unpacked buffer - PushLong #UP_UnPackedSize ; Pointer to a Word containing size of unpacked data + PushWord #0 ; Space for Result : Number of bytes unpacked + PushLong UP_Packed ; Pointer to buffer containing the packed data + PushWord UP_PackedSize ; Size of the Packed Data + PushLong #UP_UnPacked ; Pointer to Pointer to unpacked buffer + PushLong #UP_UnPackedSize ; Pointer to a Word containing size of unpacked data _UnPackBytes - pla ; Number of byte unpacked + pla ; Number of byte unpacked rts -UP_Packed hex 00000000 ; Address of Packed Data -UP_PackedSize hex 0000 ; Size of Packed Data -UP_UnPacked hex 00000000 ; Address of Unpacked Data Buffer (modified) -UP_UnPackedSize hex 0000 ; Size of Unpacked Data Buffer (modified) +UP_Packed hex 00000000 ; Address of Packed Data +UP_PackedSize hex 0000 ; Size of Packed Data +UP_UnPacked hex 00000000 ; Address of Unpacked Data Buffer (modified) +UP_UnPackedSize hex 0000 ; Size of Unpacked Data Buffer (modified) ; Basic I/O function to load files LoadFile - stx openRec+4 ; X=File, A=Bank (high word) assumed zero for low + stx openRec+4 ; X=File, A=Bank (high word) assumed zero for low stz readRec+4 sta readRec+6 jsr ClearBankLoad @@ -394,7 +453,7 @@ LoadFile :closeFile _CloseGS closeRec clc - lda eofRec+4 ; File Size + lda eofRec+4 ; File Size rts :openReadErr jsr :closeFile @@ -427,22 +486,22 @@ BG1AltDataFile strl '1/bg1b.bin' ImageName strl '1/test.pic' FGName strl '1/fg1.bin' -openRec dw 2 ; pCount - ds 2 ; refNum - adrl FGName ; pathname +openRec dw 2 ; pCount + ds 2 ; refNum + adrl FGName ; pathname -eofRec dw 2 ; pCount - ds 2 ; refNum - ds 4 ; eof +eofRec dw 2 ; pCount + ds 2 ; refNum + ds 4 ; eof -readRec dw 4 ; pCount - ds 2 ; refNum - ds 4 ; dataBuffer - ds 4 ; requestCount - ds 4 ; transferCount +readRec dw 4 ; pCount + ds 2 ; refNum + ds 4 ; dataBuffer + ds 4 ; requestCount + ds 4 ; transferCount -closeRec dw 1 ; pCount - ds 2 ; refNum +closeRec dw 1 ; pCount + ds 2 ; refNum qtRec adrl $0000 da $00 @@ -454,6 +513,66 @@ qtRec adrl $0000 PUT gen/App.TileMapBG0.s PUT gen/App.TileMapBG1.s + PUT gen/App.TileSetAnim.s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demos/shell/assets/tiled/Overworld.tsx b/demos/shell/assets/tiled/Overworld.tsx index 1a404eb..002d459 100644 --- a/demos/shell/assets/tiled/Overworld.tsx +++ b/demos/shell/assets/tiled/Overworld.tsx @@ -2,4 +2,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demos/shell/assets/tiled/world_1-1.json b/demos/shell/assets/tiled/world_1-1.json index b5c6fd4..76a6a72 100644 --- a/demos/shell/assets/tiled/world_1-1.json +++ b/demos/shell/assets/tiled/world_1-1.json @@ -17,13 +17,13 @@ "y":0 }, { - "data":[41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 11, 12, 13, 14, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 15, 16, 17, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 11, 12, 13, 14, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 57, 58, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 15, 16, 17, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 56, 21, 62, 59, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 11, 12, 13, 14, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 56, 21, 21, 21, 21, 59, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 57, 2147483705, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 15, 16, 17, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 56, 21, 62, 21, 21, 62, 21, 59, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 43, 42, 43, 42, 43, 41, 41, 41, 56, 21, 62, 2147483704, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 43, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 42, 43, 42, 43, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 56, 21, 21, 21, 21, 21, 21, 21, 21, 59, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 44, 45, 45, 45, 45, 45, 45, 46, 41, 56, 21, 21, 21, 21, 2147483704, 41, 41, 41, 41, 41, 41, 41, 41, 41, 44, 45, 45, 46, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 44, 45, 45, 45, 45, 46, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4], + "data":[41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 11, 12, 13, 14, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 15, 16, 17, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 11, 12, 13, 14, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 57, 58, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 15, 16, 17, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 56, 21, 62, 59, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 11, 12, 13, 14, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 56, 21, 21, 21, 21, 59, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 57, 2147483705, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 15, 16, 17, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 56, 21, 62, 21, 21, 62, 21, 59, 41, 41, 41, 169, 170, 169, 170, 169, 170, 169, 170, 169, 170, 41, 41, 42, 43, 42, 43, 42, 43, 41, 41, 41, 56, 21, 62, 2147483704, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 43, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 42, 43, 42, 43, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 56, 21, 21, 21, 21, 21, 21, 21, 21, 59, 41, 41, 209, 210, 209, 210, 209, 210, 209, 210, 209, 210, 41, 44, 45, 45, 45, 45, 45, 45, 46, 41, 56, 21, 21, 21, 21, 2147483704, 41, 41, 41, 41, 41, 41, 41, 41, 41, 44, 45, 45, 46, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 44, 45, 45, 45, 45, 46, 41, 41, 41, 19, 20, 21, 22, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4], "height":30, "id":1, "name":"App.TileMapBG0", "opacity":1, "type":"tilelayer", - "visible":false, + "visible":true, "width":256, "x":0, "y":0 diff --git a/demos/shell/assets/tiled/world_1-1.tmx b/demos/shell/assets/tiled/world_1-1.tmx index a8fffbd..931ec32 100644 --- a/demos/shell/assets/tiled/world_1-1.tmx +++ b/demos/shell/assets/tiled/world_1-1.tmx @@ -4,7 +4,7 @@ - + 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, @@ -38,7 +38,7 @@ 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41 - + 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, @@ -64,8 +64,8 @@ 41,41,41,41,57,58,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,15,16,17,18,41,41,41,41,41,41,41,41,41,41,41,41,19,20,21,22,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, 41,41,41,56,21,62,59,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,11,12,13,14,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,19,20,21,22,41,41,41,41,41,41,41,41,41,41,41,41,19,20,21,22,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, 41,41,56,21,21,21,21,59,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,57,2147483705,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,15,16,17,18,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,19,20,21,22,41,41,41,41,41,41,41,41,41,41,41,41,19,20,21,22,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, -41,56,21,62,21,21,62,21,59,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,42,43,42,43,42,43,41,41,41,56,21,62,2147483704,41,41,41,41,41,41,41,41,41,41,41,42,43,41,41,41,41,41,41,19,20,21,22,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,19,20,21,22,41,41,41,41,42,43,42,43,41,41,41,41,19,20,21,22,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, -56,21,21,21,21,21,21,21,21,59,41,41,41,41,41,41,41,41,41,41,41,41,41,44,45,45,45,45,45,45,46,41,56,21,21,21,21,2147483704,41,41,41,41,41,41,41,41,41,44,45,45,46,41,41,41,41,41,19,20,21,22,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,19,20,21,22,41,41,41,44,45,45,45,45,46,41,41,41,19,20,21,22,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, +41,56,21,62,21,21,62,21,59,41,41,41,169,170,169,170,169,170,169,170,169,170,41,41,42,43,42,43,42,43,41,41,41,56,21,62,2147483704,41,41,41,41,41,41,41,41,41,41,41,42,43,41,41,41,41,41,41,19,20,21,22,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,19,20,21,22,41,41,41,41,42,43,42,43,41,41,41,41,19,20,21,22,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, +56,21,21,21,21,21,21,21,21,59,41,41,209,210,209,210,209,210,209,210,209,210,41,44,45,45,45,45,45,45,46,41,56,21,21,21,21,2147483704,41,41,41,41,41,41,41,41,41,44,45,45,46,41,41,41,41,41,19,20,21,22,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,19,20,21,22,41,41,41,44,45,45,45,45,46,41,41,41,19,20,21,22,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, 3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, diff --git a/demos/shell/assets/tilesets/smb-16.png b/demos/shell/assets/tilesets/smb-16.png index 16171f2a22187d3c27224881e1357f39ae4b92a8..c891464308f6cad5456f0a7154c3e5986bcd7b46 100644 GIT binary patch literal 2627 zcmeHJ`#;l*8=uc+HXAl`TW-_bud`GXc8QuoJGESj)8uwKE=Qb|TlA5la#>RtlhxtO zIh_=`(4oyGRKlcOk9Hz-LI}A#JAcLZm+ueH<^6u1=kPJKO-zrTC5A&rv>+Qx*?DGCr2EPZR z>uGT}7H4L-o|b><&+t6TD@ypa%)NyYd&iP$$qG46~`DUAH^eo>yX=z(`5I&A^Qbm5J!CoFXh(TkeOHRGRx#3a-INyh!S=LpFhV}I5k#DKYV*>6f zk~&kg@U>P5?1#Hygj}^#GL@YiTjh?1J(0_QP|xN_%PM^SRL?h1w5l$B1%%4X<@k)flkZRa90|1^iqtm>jwfwwnL9elZ}4+fZ4yhz#XLaz%Y zw@uUTt22&Wto4gh{KqkS>D?+7{=G~f>0evL7iLUXxWj8Iz{npa8qUMRa;Fu3nJ68k zv240Ep{W9}|AW4dOP2oFh?7RnrG2=npLo+R&K{487Q30*dj`w9<&eLaV?L_xiSu!B zcJ@{)X-l|xzWRw$;G*8@2SnY>!>h-{XMBVBN;6~QsoCY!>_k`5oN>%_Z>%GgU_IMB zZ-`8G>;&d8%#y;Hn(h~S!+i;r6E2l(!Y}U+vGb(fF$t=ft~MmIEnTpiSKi4F@3JPT z&qR?NxwPgavtVFLHZFmx)Wsa`#{ z@cEPo2hgUh!Lc>O*ahNB%QzZf-RDB~yvW=ZUwQA@dog5w)ke@$R8V%{Gpbg-KXz8P z{!*xy=mtaLA4}xDB+4vz4+M$k;*)!FwqG3pG@_+l+XQ-0@BJ%5EBsRJ{G6`pLH0etkmZzOwjH$rd%$ z)?)&A31u1(!^vQESFtk`(ZVw8QQJ7<9{5R>UA8<6a3gfw;FX$l4@$fWixnMoHhu=@ zX^9ma?TXAxHzk)Scs*53WL-S`8P$Md!Tjr)&;ik#nUVYkiUp*Kq17TQM2r3((4F!z z=@*jX53sGvEq!YwnSNp`%q#1x&7#IYkkOE$)J#x(+<5&F)kIj04Ggq^a)hnrCmeU9 z9^(=Cs1oz~BI;&JodzRnPC3YCqQHyL_WP3<5o+uv`|vYb7+aNGYfM5ZkTK2l-G005 zkE_9no*?$Zl9npCfnCOfM;Kr-U(ax`0R_HEe?sz|8<_#5N?*UkXo5rGY^^lZ-&b(Q z1lC#_w4&QNP3J*JSCz;SBSWltltx99y)9KanfoAs+UJW1SXnEiPW>TLhsS+Sh!9q2 zLTg9IR&*@NPRoRt#^Z#pI%J5e3gDFI0d{F15>8`2G0rXQKXY<>3`Z%IMIgtRkc>m? zYKSEHp{H+-F%^Br>>+f0W5w!ve(S84CwK-rx^f`ZOSteF$g_J%RS{Mp<7z_8pv2L4 z568PRmYh>U2*?C#gwI0ooc$}U$%5@7F)yA?X*}K=U(Z1=QiE_SY4vmCjV9QKv>=)!dJ*JIUOFAIEu;VQYS@ z!N!;Bujmf?Y)U+(A&hb;KB}hn<6o`C!Di4JOo00GwG!rwNmy6WdvV59_q~R0!K2x6 z*=WJYi1(qOjJ`gj%hi1&o$SbZP9+z7Gh}ru=TOj_&%IU^xK48G(RI!$4SxT>K>DW+ zZW`&ahIuIEm~bUYW@jq%Asn?eOumf+f-hEn&8YV{o1)f1k1=v?I14V^ygI1{jD|`T z&z27KZ(VEi3f|i8(r`L$`9y??zi&E)72>!IyEnJ=9sJg1@ijnOcl0DKo@!7D`-j%Q z&n6sfK02Q-wd=X4p3pr-x;$;$kG;zA-$%u2iq`dLboo@@|!Y0|O)~1Ut zukjZ6nxIW-l;6inQpa<&o^W{IuR??o>mj!NIe~=UgnWJ_lTgZB0t zU%A7r$-RS@e5sp+h+Qkbj7QiIS<-=Y;`)1ke}Spz!YRwVZl>1rr!J#=H~ z!H82VaeM0Y*5{3yev0|#=Nr^K^&gG^UI&F9NCykh)TFx%R`h@Jf3lDd@#|`j5>?{H ThBJ}!{|(~d?(J4dXQ%xOncRR@ literal 2379 zcmeHJ`#;l*8=sGvv5_2OW7u-}ek<1~mnp-L%UH{0SWI+Q#ttcRgcc%~tjlpv_GN=l#QTkrd>srD>=M z0)e#r4id;9kP2Q|3!$n?Y<(-NQYMvDvactobp$O{5-{C^=m7$?m%-$*YD#WS3Jmd{ zkJ`TR>YkD@N)$Z`BwQN;#{4Re}XsY zt|kBmU+i?&+nPoMbG?TiTV99&o_E(93VkN_T}mmEQfal{u>xQ_)+c8Zh+>o&-4u*@ z(FlGCm2VzW{@}Ol$^y?FuX0Yrb#NRKh%_@^Da8_-Xjd4_XkZzDSMp*d6UT#Ewfd5sqY3E=~e6N=BYHKj6mx!)kwTs>oamYxF_jm zwsoR$T*S|`>;5wrwK5DE`A2ec`#or<5cU?KKQ7^0VPhfg3OXeFkc4!#KV9S2?;ccU zClFWblgY@!ss=mjR{FXhP-RR6-OuaaHAL8Ve|_?RYO~<4a~J1h?&r2d>V(7Pry)nn zf+-tzX(ZqA5NCrRYhhe*f^BErUS9zsMR$-cYU01uUuUT_xMD_XL)+TAq#da>=@Z;v zGfSJJ566^{-UT&NHfqululFW%(-d?owV{^zRKs9k+$QpR9acxbn-M|et zmC?UHYr@gPF|G5kR+_F)PC4K5CP%V{*7;z~JFw*h+-UUY#W z&O3LKFKDGhMVkgKYA^f|xUUbF+WC%!v&D+;<-Yh}%oVM99v7lie0Dz&4tV+hhQn&U zE5!?Uvtrp&fqA^#_Kl|KoA`3287t{qZ_-BU)@t=i)lsu;Son z0&DEsO=j$fbFayOczw*MnsH>3@!a*Dit?+P_4t1m}ob|b3$)?QohveyR57Q8vhwllDT4(G-l zU^E$bnS5QvspE+@uC(Gw6dD=d9*NJ3njSTjJ458ixq&rY#kO*r<=75~9!cSG=$-}B zXM^jD%-CgM@BWt;DTw%g8HH~c%?j^ggqVl{;lmVPAxXUPL4f9N9VJ3rpQ}- z*=dz(K3iY`?#;>T6NX-K-~WA7Fkp$8ZfZ?A*PNR8G$s}(?&?X?BWVYYt z_lpzR+$sxsUVe`ra#y#3z7Up!)!7~5txGmd*I;OYbNdRA@sLSdHcHk7G+V~$e4M;~ zQZ*L`q}~q^nsyQ~PmV}7+2<%ksjcG+tQz^u%oMNzkFTb-J{2o{%WW}sHkc3;1%Rvh z=juR|`Z7P+)~Yr}r_Qx1d!fwe)2?)o!=nKh-XvBB)gAUQ7FWYd3pj4KDFp`ArLl<* z_=OaT22}>j9VAt;i|GVnpF-gip>>Nh|(VbYE^P8+bP>jHH><;?4f}l>`~Wm)?u&P7CNnK~YIj z1eqO6zBxz6bjjD02zdSR$kiX=>(;W6YGgq)HNPl+` z<|*l416eF&9c14!yA29Y(nID4M4!`@84e_<9T8)b=av~jO0wH;c2#k#7FI)8pyZP2 zXhq-+862&*g94j%abk(M9+_Ga5y3ePP^l=zSNI`k_AtQ3$7M1p0-3`3x1U zdSPz#B_q|s#*m;`I2nkTJUg^P3}j`f&V2XHA<`CV)bz#ISoW+T%a#vC9Jr_?>Sgs| z)3*${2!CY_pBV96FdbKJ{Y)@LDWTgKJRTg8X%lokV+{(Au+KdJGIq+uxqIv&pKFiN zmcl+Cli2tI6{v}e0(8)RK?&56Wi<+{Vt?9+w4E+nGw4aF0kB%I0DhLm6w%a%l?o4ZO)uJ5qXF-2K5DX0C9E)yG5M%-mJ& zHBPV>BMkVmHNQQo5pPp@|%4Wj-%4cEJ@Froa@-!h@(&zk?~s>)#*US^F? ziJSP3Mn?Fu;;;32eS0q)k4x;h=b-eeV|Uoss%Xfo(Ka(pH0-{Y~Zmctg;phqZ zM!n{+KSsMXJKI`>KaSdo8@5DGDLA3Z0hO#3^7frB>SICXau-zwt{Jet*t)8^=e**xC2A==` diff --git a/demos/shell/gen/App.TileMapBG0.s b/demos/shell/gen/App.TileMapBG0.s index 16dbddd..7c99614 100644 --- a/demos/shell/gen/App.TileMapBG0.s +++ b/demos/shell/gen/App.TileMapBG0.s @@ -112,11 +112,11 @@ App_TileMapBG0 dw $1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1013,$0014,$0015,$1016,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1013,$0014,$0015,$1016,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029 dw $1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029 dw $1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029 - dw $1029,$1038,$0015,$003e,$0015,$0015,$003e,$0015,$103b,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$102a,$102b,$102a,$102b,$102a,$102b,$1029,$1029,$1029,$1038,$0015,$003e,$1238,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$102a,$102b,$1029,$1029,$1029,$1029,$1029,$1029,$1013,$0014,$0015,$1016,$1029,$1029,$1029,$1029 + dw $1029,$1038,$0015,$003e,$0015,$0015,$003e,$0015,$103b,$1029,$1029,$1029,$0800,$0801,$0800,$0801,$0800,$0801,$0800,$0801,$0800,$0801,$1029,$1029,$102a,$102b,$102a,$102b,$102a,$102b,$1029,$1029,$1029,$1038,$0015,$003e,$1238,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$102a,$102b,$1029,$1029,$1029,$1029,$1029,$1029,$1013,$0014,$0015,$1016,$1029,$1029,$1029,$1029 dw $1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1013,$0014,$0015,$1016,$1029,$1029,$1029,$1029,$102a,$102b,$102a,$102b,$1029,$1029,$1029,$1029,$1013,$0014,$0015,$1016,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029 dw $1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029 dw $1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029 - dw $1038,$0015,$0015,$0015,$0015,$0015,$0015,$0015,$0015,$103b,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$102c,$002d,$002d,$002d,$002d,$002d,$002d,$102e,$1029,$1038,$0015,$0015,$0015,$0015,$1238,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$102c,$002d,$002d,$102e,$1029,$1029,$1029,$1029,$1029,$1013,$0014,$0015,$1016,$1029,$1029,$1029,$1029 + dw $1038,$0015,$0015,$0015,$0015,$0015,$0015,$0015,$0015,$103b,$1029,$1029,$0802,$0803,$0802,$0803,$0802,$0803,$0802,$0803,$0802,$0803,$1029,$102c,$002d,$002d,$002d,$002d,$002d,$002d,$102e,$1029,$1038,$0015,$0015,$0015,$0015,$1238,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$102c,$002d,$002d,$102e,$1029,$1029,$1029,$1029,$1029,$1013,$0014,$0015,$1016,$1029,$1029,$1029,$1029 dw $1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1013,$0014,$0015,$1016,$1029,$1029,$1029,$102c,$002d,$002d,$002d,$002d,$102e,$1029,$1029,$1029,$1013,$0014,$0015,$1016,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029 dw $1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029 dw $1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029,$1029 diff --git a/demos/shell/gen/App.TileSet.s b/demos/shell/gen/App.TileSet.s index 51e68eb..040d8d7 100644 --- a/demos/shell/gen/App.TileSet.s +++ b/demos/shell/gen/App.TileSet.s @@ -1,13 +1,9 @@ -; startIndex = 0 -; Palette: -; $0E51,$0EDB,$0000,$068F,$0BF1,$00A0,$0EEE,$0777,$0FA4,$0F59,$0E05,$0F30 -; Converting to BG0 format... + tiledata ENT -; Reserved space (tile 0 is special... +; Reserved space (tile 0 is special...) ds 128 -; Tile ID 1 -; From image coordinates 0, 0 +; Tile ID 1, isSolid: true hex 01111111 hex 10000000 hex 10000000 @@ -16,7 +12,6 @@ tiledata ENT hex 10000000 hex 10000000 hex 10000000 - hex 00000000 hex 00000000 hex 00000000 @@ -25,7 +20,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 11111110 hex 00000001 hex 00000001 @@ -34,7 +28,6 @@ tiledata ENT hex 00000001 hex 00000001 hex 00000001 - hex 00000000 hex 00000000 hex 00000000 @@ -44,8 +37,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 2 -; From image coordinates 8, 0 +; Tile ID 2, isSolid: true hex 12011110 hex 02100002 hex 02100002 @@ -54,7 +46,6 @@ tiledata ENT hex 02022220 hex 02111112 hex 02100002 - hex 00000000 hex 00000000 hex 00000000 @@ -63,7 +54,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 01111021 hex 20000120 hex 20000120 @@ -72,7 +62,6 @@ tiledata ENT hex 02222020 hex 21111120 hex 20000120 - hex 00000000 hex 00000000 hex 00000000 @@ -82,8 +71,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 3 -; From image coordinates 16, 0 +; Tile ID 3, isSolid: true hex 10000000 hex 10000000 hex 22000000 @@ -92,7 +80,6 @@ tiledata ENT hex 10001112 hex 10000002 hex 02222220 - hex 00000000 hex 00000000 hex 00000000 @@ -101,7 +88,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 00000001 hex 00000001 hex 00000022 @@ -110,7 +96,6 @@ tiledata ENT hex 21110001 hex 20000001 hex 02222220 - hex 00000000 hex 00000000 hex 00000000 @@ -120,8 +105,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 4 -; From image coordinates 24, 0 +; Tile ID 4, isSolid: true hex 02100002 hex 02100002 hex 21000002 @@ -130,7 +114,6 @@ tiledata ENT hex 10000002 hex 10000022 hex 12222220 - hex 00000000 hex 00000000 hex 00000000 @@ -139,7 +122,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 20000120 hex 20000120 hex 20000012 @@ -148,7 +130,6 @@ tiledata ENT hex 20000001 hex 22000001 hex 02222221 - hex 00000000 hex 00000000 hex 00000000 @@ -158,8 +139,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 5 -; From image coordinates 32, 0 +; Tile ID 5, isSolid: true hex 01111111 hex 10111111 hex 11011111 @@ -168,7 +148,6 @@ tiledata ENT hex 11110000 hex 11110000 hex 11110000 - hex 00000000 hex 00000000 hex 00000000 @@ -177,7 +156,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 11111110 hex 11111101 hex 11111011 @@ -186,7 +164,6 @@ tiledata ENT hex 00001111 hex 00001111 hex 00001111 - hex 00000000 hex 00000000 hex 00000000 @@ -196,8 +173,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 6 -; From image coordinates 40, 0 +; Tile ID 6, isSolid: true hex 11111112 hex 11111122 hex 11111222 @@ -206,7 +182,6 @@ tiledata ENT hex 00002222 hex 00002222 hex 00002222 - hex 00000000 hex 00000000 hex 00000000 @@ -215,7 +190,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 21111111 hex 22111111 hex 22211111 @@ -224,7 +198,6 @@ tiledata ENT hex 22220000 hex 22220000 hex 22220000 - hex 00000000 hex 00000000 hex 00000000 @@ -234,8 +207,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 7 -; From image coordinates 48, 0 +; Tile ID 7, isSolid: true hex 11110000 hex 11110000 hex 11110000 @@ -244,7 +216,6 @@ tiledata ENT hex 11222222 hex 12222222 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -253,7 +224,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 00001111 hex 00001111 hex 00001111 @@ -262,7 +232,6 @@ tiledata ENT hex 22222211 hex 22222221 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -272,8 +241,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 8 -; From image coordinates 56, 0 +; Tile ID 8, isSolid: true hex 00002222 hex 00002222 hex 00002222 @@ -282,7 +250,6 @@ tiledata ENT hex 22222022 hex 22222202 hex 22222220 - hex 00000000 hex 00000000 hex 00000000 @@ -291,7 +258,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 22220000 hex 22220000 hex 22220000 @@ -300,7 +266,6 @@ tiledata ENT hex 22022222 hex 20222222 hex 02222222 - hex 00000000 hex 00000000 hex 00000000 @@ -310,8 +275,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 9 -; From image coordinates 64, 0 +; Tile ID 9, isSolid: false hex 00000004 hex 00000004 hex 00000004 @@ -320,7 +284,6 @@ tiledata ENT hex 00000004 hex 00000004 hex 00000004 - hex fffffff0 hex fffffff0 hex fffffff0 @@ -329,7 +292,6 @@ tiledata ENT hex fffffff0 hex fffffff0 hex fffffff0 - hex 40000000 hex 40000000 hex 40000000 @@ -338,7 +300,6 @@ tiledata ENT hex 40000000 hex 40000000 hex 40000000 - hex 0fffffff hex 0fffffff hex 0fffffff @@ -348,8 +309,7 @@ tiledata ENT hex 0fffffff hex 0fffffff -; Tile ID 10 -; From image coordinates 72, 0 +; Tile ID 10, isSolid: false hex 40000000 hex 40000000 hex 40000000 @@ -358,7 +318,6 @@ tiledata ENT hex 40000000 hex 40000000 hex 40000000 - hex 0fffffff hex 0fffffff hex 0fffffff @@ -367,7 +326,6 @@ tiledata ENT hex 0fffffff hex 0fffffff hex 0fffffff - hex 00000004 hex 00000004 hex 00000004 @@ -376,7 +334,6 @@ tiledata ENT hex 00000004 hex 00000004 hex 00000004 - hex fffffff0 hex fffffff0 hex fffffff0 @@ -386,8 +343,7 @@ tiledata ENT hex fffffff0 hex fffffff0 -; Tile ID 11 -; From image coordinates 80, 0 +; Tile ID 11, isSolid: true hex 22222222 hex 24444444 hex 25555544 @@ -396,7 +352,6 @@ tiledata ENT hex 24445544 hex 24445544 hex 24445544 - hex 00000000 hex 00000000 hex 00000000 @@ -405,7 +360,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 22222222 hex 44444442 hex 44555552 @@ -414,7 +368,6 @@ tiledata ENT hex 44554442 hex 44554442 hex 44554442 - hex 00000000 hex 00000000 hex 00000000 @@ -424,8 +377,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 12 -; From image coordinates 88, 0 +; Tile ID 12, isSolid: true hex 22222222 hex 44444444 hex 44445555 @@ -434,7 +386,6 @@ tiledata ENT hex 44445445 hex 44445445 hex 44445445 - hex 00000000 hex 00000000 hex 00000000 @@ -443,7 +394,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 22222222 hex 44444444 hex 55554444 @@ -452,7 +402,6 @@ tiledata ENT hex 54454444 hex 54454444 hex 54454444 - hex 00000000 hex 00000000 hex 00000000 @@ -462,8 +411,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 13 -; From image coordinates 96, 0 +; Tile ID 13, isSolid: true hex 22222222 hex 44444444 hex 55555555 @@ -472,7 +420,6 @@ tiledata ENT hex 55555555 hex 55555555 hex 55555555 - hex 00000000 hex 00000000 hex 00000000 @@ -481,7 +428,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 22222222 hex 44444444 hex 55555555 @@ -490,7 +436,6 @@ tiledata ENT hex 55555555 hex 55555555 hex 55555555 - hex 00000000 hex 00000000 hex 00000000 @@ -500,8 +445,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 14 -; From image coordinates 104, 0 +; Tile ID 14, isSolid: true hex 22222222 hex 44444442 hex 55555552 @@ -510,7 +454,6 @@ tiledata ENT hex 54545442 hex 55454442 hex 54545442 - hex 00000000 hex 00000000 hex 00000000 @@ -519,7 +462,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 22222222 hex 24444444 hex 25555555 @@ -528,7 +470,6 @@ tiledata ENT hex 24454545 hex 24445455 hex 24454545 - hex 00000000 hex 00000000 hex 00000000 @@ -538,8 +479,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 15 -; From image coordinates 112, 0 +; Tile ID 15, isSolid: false hex 24445544 hex 24445544 hex 24445544 @@ -548,7 +488,6 @@ tiledata ENT hex 24445544 hex 22222222 hex 00222222 - hex 00000000 hex 00000000 hex 00000000 @@ -557,7 +496,6 @@ tiledata ENT hex 00000000 hex 00000000 hex ff000000 - hex 44554442 hex 44554442 hex 44554442 @@ -566,7 +504,6 @@ tiledata ENT hex 44554442 hex 22222222 hex 22222200 - hex 00000000 hex 00000000 hex 00000000 @@ -576,8 +513,7 @@ tiledata ENT hex 00000000 hex 000000ff -; Tile ID 16 -; From image coordinates 120, 0 +; Tile ID 16, isSolid: true hex 44445445 hex 44445445 hex 44445445 @@ -586,7 +522,6 @@ tiledata ENT hex 44445445 hex 22222222 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -595,7 +530,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 54454444 hex 54454444 hex 54454444 @@ -604,7 +538,6 @@ tiledata ENT hex 54454444 hex 22222222 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -614,8 +547,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 17 -; From image coordinates 128, 0 +; Tile ID 17, isSolid: true hex 55555555 hex 55555555 hex 55555555 @@ -624,7 +556,6 @@ tiledata ENT hex 55555555 hex 22222222 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -633,7 +564,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 55555555 hex 55555555 hex 55555555 @@ -642,7 +572,6 @@ tiledata ENT hex 55555555 hex 22222222 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -652,8 +581,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 18 -; From image coordinates 136, 0 +; Tile ID 18, isSolid: false hex 55454442 hex 54545442 hex 55454442 @@ -662,7 +590,6 @@ tiledata ENT hex 54545442 hex 22222222 hex 22222200 - hex 00000000 hex 00000000 hex 00000000 @@ -671,7 +598,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 000000ff - hex 24445455 hex 24454545 hex 24445455 @@ -680,7 +606,6 @@ tiledata ENT hex 24454545 hex 22222222 hex 00222222 - hex 00000000 hex 00000000 hex 00000000 @@ -690,8 +615,7 @@ tiledata ENT hex 00000000 hex ff000000 -; Tile ID 19 -; From image coordinates 144, 0 +; Tile ID 19, isSolid: false hex 00244455 hex 00244455 hex 00244455 @@ -700,7 +624,6 @@ tiledata ENT hex 00244455 hex 00244455 hex 00244455 - hex ff000000 hex ff000000 hex ff000000 @@ -709,7 +632,6 @@ tiledata ENT hex ff000000 hex ff000000 hex ff000000 - hex 55444200 hex 55444200 hex 55444200 @@ -718,7 +640,6 @@ tiledata ENT hex 55444200 hex 55444200 hex 55444200 - hex 000000ff hex 000000ff hex 000000ff @@ -728,8 +649,7 @@ tiledata ENT hex 000000ff hex 000000ff -; Tile ID 20 -; From image coordinates 152, 0 +; Tile ID 20, isSolid: true hex 44444544 hex 44444544 hex 44444544 @@ -738,7 +658,22 @@ tiledata ENT hex 44444544 hex 44444544 hex 44444544 - + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 44544444 + hex 44544444 + hex 44544444 + hex 44544444 + hex 44544444 + hex 44544444 + hex 44544444 + hex 44544444 hex 00000000 hex 00000000 hex 00000000 @@ -748,15 +683,31 @@ tiledata ENT hex 00000000 hex 00000000 - hex 44544444 - hex 44544444 - hex 44544444 - hex 44544444 - hex 44544444 - hex 44544444 - hex 44544444 - hex 44544444 - +; Tile ID 21, isSolid: true + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 hex 00000000 hex 00000000 hex 00000000 @@ -766,46 +717,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 21 -; From image coordinates 160, 0 - hex 55555555 - hex 55555555 - hex 55555555 - hex 55555555 - hex 55555555 - hex 55555555 - hex 55555555 - hex 55555555 - - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - - hex 55555555 - hex 55555555 - hex 55555555 - hex 55555555 - hex 55555555 - hex 55555555 - hex 55555555 - hex 55555555 - - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - -; Tile ID 22 -; From image coordinates 168, 0 +; Tile ID 22, isSolid: false hex 45444200 hex 54544200 hex 45444200 @@ -814,7 +726,6 @@ tiledata ENT hex 54544200 hex 45444200 hex 54544200 - hex 000000ff hex 000000ff hex 000000ff @@ -823,7 +734,6 @@ tiledata ENT hex 000000ff hex 000000ff hex 000000ff - hex 00244454 hex 00244545 hex 00244454 @@ -832,7 +742,6 @@ tiledata ENT hex 00244545 hex 00244454 hex 00244545 - hex ff000000 hex ff000000 hex ff000000 @@ -842,8 +751,7 @@ tiledata ENT hex ff000000 hex ff000000 -; Tile ID 23 -; From image coordinates 176, 0 +; Tile ID 23, isSolid: true hex 00000000 hex 00002000 hex 00002000 @@ -852,7 +760,22 @@ tiledata ENT hex 00020000 hex 00020000 hex 00000000 - + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00020000 + hex 00020000 + hex 00020000 + hex 00002000 + hex 00002000 + hex 00002000 + hex 00000000 hex 00000000 hex 00000000 hex 00000000 @@ -862,26 +785,7 @@ tiledata ENT hex 00000000 hex 00000000 - hex 00000000 - hex 00020000 - hex 00020000 - hex 00020000 - hex 00002000 - hex 00002000 - hex 00002000 - hex 00000000 - - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - -; Tile ID 24 -; From image coordinates 184, 0 +; Tile ID 24, isSolid: true hex 11110002 hex 00010002 hex 00010002 @@ -890,7 +794,6 @@ tiledata ENT hex 00010000 hex 00010000 hex 22211111 - hex 00000000 hex 00000000 hex 00000000 @@ -899,7 +802,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 20001111 hex 20001000 hex 20001000 @@ -908,7 +810,6 @@ tiledata ENT hex 00001000 hex 00001000 hex 11111222 - hex 00000000 hex 00000000 hex 00000000 @@ -918,8 +819,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 25 -; From image coordinates 192, 0 +; Tile ID 25, isSolid: true hex 00011111 hex 00010000 hex 00010000 @@ -928,7 +828,6 @@ tiledata ENT hex 00010000 hex 00010000 hex 11112222 - hex 00000000 hex 00000000 hex 00000000 @@ -937,7 +836,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 11111000 hex 00001000 hex 00001000 @@ -946,7 +844,6 @@ tiledata ENT hex 00001000 hex 00001000 hex 22221111 - hex 00000000 hex 00000000 hex 00000000 @@ -956,8 +853,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 26 -; From image coordinates 200, 0 +; Tile ID 26, isSolid: true hex 00000002 hex 00000002 hex 00000002 @@ -966,7 +862,6 @@ tiledata ENT hex 00020000 hex 00020000 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -975,7 +870,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 20000000 hex 20000000 hex 20000000 @@ -984,7 +878,6 @@ tiledata ENT hex 00002000 hex 00002000 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -994,8 +887,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 27 -; From image coordinates 208, 0 +; Tile ID 27, isSolid: false hex 02222222 hex 20000000 hex 20200000 @@ -1004,7 +896,6 @@ tiledata ENT hex 20000000 hex 20000000 hex 20000000 - hex f0000000 hex 00000000 hex 00000000 @@ -1013,7 +904,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 22222220 hex 00000002 hex 00000202 @@ -1022,7 +912,6 @@ tiledata ENT hex 00000002 hex 00000002 hex 00000002 - hex 0000000f hex 00000000 hex 00000000 @@ -1032,8 +921,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 28 -; From image coordinates 216, 0 +; Tile ID 28, isSolid: false hex 22222220 hex 00000002 hex 00000202 @@ -1042,7 +930,6 @@ tiledata ENT hex 00000002 hex 00000002 hex 00000002 - hex 0000000f hex 00000000 hex 00000000 @@ -1051,7 +938,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 02222222 hex 20000000 hex 20200000 @@ -1060,7 +946,6 @@ tiledata ENT hex 20000000 hex 20000000 hex 20000000 - hex f0000000 hex 00000000 hex 00000000 @@ -1070,8 +955,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 29 -; From image coordinates 224, 0 +; Tile ID 29, isSolid: false hex 20000000 hex 20000000 hex 20000000 @@ -1080,7 +964,6 @@ tiledata ENT hex 20200000 hex 20000000 hex 02222222 - hex 00000000 hex 00000000 hex 00000000 @@ -1089,7 +972,6 @@ tiledata ENT hex 00000000 hex 00000000 hex f0000000 - hex 00000002 hex 00000002 hex 00000002 @@ -1098,7 +980,6 @@ tiledata ENT hex 00000202 hex 00000002 hex 22222220 - hex 00000000 hex 00000000 hex 00000000 @@ -1108,8 +989,7 @@ tiledata ENT hex 00000000 hex 0000000f -; Tile ID 30 -; From image coordinates 232, 0 +; Tile ID 30, isSolid: false hex 00000002 hex 00000002 hex 00000002 @@ -1118,7 +998,6 @@ tiledata ENT hex 00000202 hex 00000002 hex 22222220 - hex 00000000 hex 00000000 hex 00000000 @@ -1127,7 +1006,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 0000000f - hex 20000000 hex 20000000 hex 20000000 @@ -1136,7 +1014,6 @@ tiledata ENT hex 20200000 hex 20000000 hex 02222222 - hex 00000000 hex 00000000 hex 00000000 @@ -1146,8 +1023,7 @@ tiledata ENT hex 00000000 hex f0000000 -; Tile ID 31 -; From image coordinates 240, 0 +; Tile ID 31, isSolid: false hex 11110000 hex 00010000 hex 00010000 @@ -1156,7 +1032,6 @@ tiledata ENT hex 00010000 hex 00010000 hex 22211111 - hex 0000ffff hex 0000ffff hex 0000ffff @@ -1165,7 +1040,6 @@ tiledata ENT hex 0000ffff hex 0000ffff hex 00000000 - hex 00001111 hex 00001000 hex 00001000 @@ -1174,7 +1048,6 @@ tiledata ENT hex 00001000 hex 00001000 hex 11111222 - hex ffff0000 hex ffff0000 hex ffff0000 @@ -1184,8 +1057,7 @@ tiledata ENT hex ffff0000 hex 00000000 -; Tile ID 32 -; From image coordinates 248, 0 +; Tile ID 32, isSolid: false hex 00011111 hex 00010000 hex 00010000 @@ -1194,7 +1066,6 @@ tiledata ENT hex 00010000 hex 00010000 hex 11112222 - hex fff00000 hex fff00000 hex fff00000 @@ -1203,7 +1074,6 @@ tiledata ENT hex fff00000 hex fff00000 hex 00000000 - hex 11111000 hex 00001000 hex 00001000 @@ -1212,7 +1082,6 @@ tiledata ENT hex 00001000 hex 00001000 hex 22221111 - hex 00000fff hex 00000fff hex 00000fff @@ -1222,8 +1091,7 @@ tiledata ENT hex 00000fff hex 00000000 -; Tile ID 33 -; From image coordinates 256, 0 +; Tile ID 33, isSolid: true hex 00000222 hex 00022222 hex 00222222 @@ -1232,7 +1100,6 @@ tiledata ENT hex 02222222 hex 22222222 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -1241,7 +1108,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 22200000 hex 22222000 hex 22222200 @@ -1250,7 +1116,6 @@ tiledata ENT hex 22222220 hex 22222222 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -1260,8 +1125,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 34 -; From image coordinates 264, 0 +; Tile ID 34, isSolid: true hex 22200002 hex 22222002 hex 22222202 @@ -1270,7 +1134,6 @@ tiledata ENT hex 22222220 hex 22222222 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -1279,7 +1142,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 20000222 hex 20022222 hex 20222222 @@ -1288,7 +1150,6 @@ tiledata ENT hex 02222222 hex 22222222 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -1298,8 +1159,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 35 -; From image coordinates 272, 0 +; Tile ID 35, isSolid: false hex 00000022 hex 00000245 hex 00002455 @@ -1308,7 +1168,6 @@ tiledata ENT hex 00002555 hex 00000255 hex 00000022 - hex ffffff00 hex fffff000 hex ffff0000 @@ -1317,7 +1176,6 @@ tiledata ENT hex ffff0000 hex fffff000 hex ffffff00 - hex 22000000 hex 54200000 hex 55420000 @@ -1326,7 +1184,6 @@ tiledata ENT hex 55520000 hex 55200000 hex 22000000 - hex 00ffffff hex 000fffff hex 0000ffff @@ -1336,8 +1193,7 @@ tiledata ENT hex 000fffff hex 00ffffff -; Tile ID 36 -; From image coordinates 280, 0 +; Tile ID 36, isSolid: false hex 22000000 hex 55200000 hex 55520000 @@ -1346,7 +1202,6 @@ tiledata ENT hex 55520000 hex 55200000 hex 22000000 - hex 00ffffff hex 000fffff hex 0000ffff @@ -1355,7 +1210,6 @@ tiledata ENT hex 0000ffff hex 000fffff hex 00ffffff - hex 00000022 hex 00000255 hex 00002555 @@ -1364,7 +1218,6 @@ tiledata ENT hex 00002555 hex 00000255 hex 00000022 - hex ffffff00 hex fffff000 hex ffff0000 @@ -1374,8 +1227,7 @@ tiledata ENT hex fffff000 hex ffffff00 -; Tile ID 37 -; From image coordinates 288, 0 +; Tile ID 37, isSolid: false hex 00022222 hex 00244444 hex 02444444 @@ -1384,7 +1236,6 @@ tiledata ENT hex 24444444 hex 24444444 hex 24444444 - hex fff00000 hex ff000000 hex f0000000 @@ -1393,7 +1244,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 22222000 hex 44444200 hex 44444420 @@ -1402,7 +1252,6 @@ tiledata ENT hex 44444442 hex 44444442 hex 44444442 - hex 00000fff hex 000000ff hex 0000000f @@ -1412,8 +1261,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 38 -; From image coordinates 296, 0 +; Tile ID 38, isSolid: true hex 22222222 hex 44444444 hex 44444444 @@ -1422,7 +1270,6 @@ tiledata ENT hex 44444444 hex 44444444 hex 44444444 - hex 00000000 hex 00000000 hex 00000000 @@ -1431,7 +1278,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 22222222 hex 44444444 hex 44444444 @@ -1440,7 +1286,6 @@ tiledata ENT hex 44444444 hex 44444444 hex 44444444 - hex 00000000 hex 00000000 hex 00000000 @@ -1450,8 +1295,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 39 -; From image coordinates 304, 0 +; Tile ID 39, isSolid: false hex 22222000 hex 44444200 hex 44444420 @@ -1460,7 +1304,6 @@ tiledata ENT hex 44444442 hex 44444442 hex 44444442 - hex 00000fff hex 000000ff hex 0000000f @@ -1469,7 +1312,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 00022222 hex 00244444 hex 02444444 @@ -1478,7 +1320,6 @@ tiledata ENT hex 24444444 hex 24444444 hex 24444444 - hex fff00000 hex ff000000 hex f0000000 @@ -1488,8 +1329,23 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 40 -; From image coordinates 312, 0 +; Tile ID 40, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff hex 00000000 hex 00000000 hex 00000000 @@ -1498,7 +1354,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex ffffffff hex ffffffff hex ffffffff @@ -1508,6 +1363,23 @@ tiledata ENT hex ffffffff hex ffffffff +; Tile ID 41, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff hex 00000000 hex 00000000 hex 00000000 @@ -1516,7 +1388,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex ffffffff hex ffffffff hex ffffffff @@ -1526,46 +1397,7 @@ tiledata ENT hex ffffffff hex ffffffff -; Tile ID 41 -; From image coordinates 0, 8 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - - hex ffffffff - hex ffffffff - hex ffffffff - hex ffffffff - hex ffffffff - hex ffffffff - hex ffffffff - hex ffffffff - - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - - hex ffffffff - hex ffffffff - hex ffffffff - hex ffffffff - hex ffffffff - hex ffffffff - hex ffffffff - hex ffffffff - -; Tile ID 42 -; From image coordinates 8, 8 +; Tile ID 42, isSolid: false hex 00000022 hex 00000244 hex 00022444 @@ -1574,7 +1406,6 @@ tiledata ENT hex 00244444 hex 02444554 hex 24445444 - hex ffffff00 hex fffff000 hex fff00000 @@ -1583,7 +1414,6 @@ tiledata ENT hex ff000000 hex f0000000 hex 00000000 - hex 22000000 hex 44200000 hex 44422000 @@ -1592,7 +1422,6 @@ tiledata ENT hex 44444200 hex 45544420 hex 44454442 - hex 00ffffff hex 000fffff hex 00000fff @@ -1602,8 +1431,7 @@ tiledata ENT hex 0000000f hex 00000000 -; Tile ID 43 -; From image coordinates 16, 8 +; Tile ID 43, isSolid: false hex 22000000 hex 44200000 hex 44420000 @@ -1612,7 +1440,6 @@ tiledata ENT hex 45444442 hex 44544442 hex 44444442 - hex 00ffffff hex 000fffff hex 0000ffff @@ -1621,7 +1448,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 00000022 hex 00000244 hex 00002444 @@ -1630,7 +1456,6 @@ tiledata ENT hex 24444454 hex 24444544 hex 24444444 - hex ffffff00 hex fffff000 hex ffff0000 @@ -1640,8 +1465,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 44 -; From image coordinates 24, 8 +; Tile ID 44, isSolid: false hex 00000222 hex 00002444 hex 00024444 @@ -1650,7 +1474,6 @@ tiledata ENT hex 24444444 hex 24444444 hex 02444444 - hex fffff000 hex ffff0000 hex fff00000 @@ -1659,7 +1482,6 @@ tiledata ENT hex 00000000 hex 00000000 hex f0000000 - hex 22200000 hex 44420000 hex 44442000 @@ -1668,7 +1490,6 @@ tiledata ENT hex 44444442 hex 44444442 hex 44444420 - hex 000fffff hex 0000ffff hex 00000fff @@ -1678,8 +1499,23 @@ tiledata ENT hex 00000000 hex 0000000f -; Tile ID 45 -; From image coordinates 32, 8 +; Tile ID 45, isSolid: true + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 hex 44444444 hex 44444444 hex 44444444 @@ -1688,7 +1524,6 @@ tiledata ENT hex 44444444 hex 44444444 hex 44444444 - hex 00000000 hex 00000000 hex 00000000 @@ -1698,26 +1533,7 @@ tiledata ENT hex 00000000 hex 00000000 - hex 44444444 - hex 44444444 - hex 44444444 - hex 44444444 - hex 44444444 - hex 44444444 - hex 44444444 - hex 44444444 - - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - -; Tile ID 46 -; From image coordinates 40, 8 +; Tile ID 46, isSolid: false hex 20020000 hex 20242000 hex 42442000 @@ -1726,7 +1542,6 @@ tiledata ENT hex 44444442 hex 44444442 hex 44444420 - hex 0ff0ffff hex 0f000fff hex 00000fff @@ -1735,7 +1550,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 0000000f - hex 00002002 hex 00024202 hex 00024424 @@ -1744,7 +1558,6 @@ tiledata ENT hex 24444444 hex 24444444 hex 02444444 - hex ffff0ff0 hex fff000f0 hex fff00000 @@ -1754,8 +1567,7 @@ tiledata ENT hex 00000000 hex f0000000 -; Tile ID 47 -; From image coordinates 48, 8 +; Tile ID 47, isSolid: true hex 66726666 hex 11726111 hex 11726111 @@ -1764,7 +1576,6 @@ tiledata ENT hex 11726111 hex 77727777 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -1773,7 +1584,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 66662766 hex 11162711 hex 11162711 @@ -1782,7 +1592,6 @@ tiledata ENT hex 11162711 hex 77772777 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -1792,8 +1601,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 48 -; From image coordinates 56, 8 +; Tile ID 48, isSolid: true hex 66666672 hex 61111172 hex 61111172 @@ -1802,7 +1610,6 @@ tiledata ENT hex 61111172 hex 77777772 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -1811,7 +1618,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 27666666 hex 27111116 hex 27111116 @@ -1820,7 +1626,6 @@ tiledata ENT hex 27111116 hex 27777777 hex 22222222 - hex 00000000 hex 00000000 hex 00000000 @@ -1830,8 +1635,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 49 -; From image coordinates 64, 8 +; Tile ID 49, isSolid: false hex 24444444 hex 24444444 hex 24444444 @@ -1840,7 +1644,22 @@ tiledata ENT hex 24444442 hex 02444420 hex 00222200 - + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex ff0000ff + hex 44444442 + hex 44444442 + hex 44444442 + hex 44444442 + hex 44444442 + hex 24444442 + hex 02444420 + hex 00222200 hex 00000000 hex 00000000 hex 00000000 @@ -1850,26 +1669,7 @@ tiledata ENT hex f000000f hex ff0000ff - hex 44444442 - hex 44444442 - hex 44444442 - hex 44444442 - hex 44444442 - hex 24444442 - hex 02444420 - hex 00222200 - - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex f000000f - hex ff0000ff - -; Tile ID 50 -; From image coordinates 72, 8 +; Tile ID 50, isSolid: false hex 44444444 hex 44444444 hex 44444444 @@ -1878,7 +1678,6 @@ tiledata ENT hex 44444442 hex 24444420 hex 02222200 - hex 00000000 hex 00000000 hex 00000000 @@ -1887,7 +1686,6 @@ tiledata ENT hex 00000000 hex 0000000f hex f00000ff - hex 44444444 hex 44444444 hex 44444444 @@ -1896,7 +1694,6 @@ tiledata ENT hex 24444444 hex 02444442 hex 00222220 - hex 00000000 hex 00000000 hex 00000000 @@ -1906,8 +1703,7 @@ tiledata ENT hex f0000000 hex ff00000f -; Tile ID 51 -; From image coordinates 80, 8 +; Tile ID 51, isSolid: true hex 44444444 hex 44444444 hex 44444444 @@ -1916,7 +1712,6 @@ tiledata ENT hex 44444442 hex 24444425 hex 52222255 - hex 00000000 hex 00000000 hex 00000000 @@ -1925,7 +1720,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 44444444 hex 44444444 hex 44444444 @@ -1934,7 +1728,6 @@ tiledata ENT hex 24444444 hex 52444442 hex 55222225 - hex 00000000 hex 00000000 hex 00000000 @@ -1944,8 +1737,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 52 -; From image coordinates 88, 8 +; Tile ID 52, isSolid: false hex 44444442 hex 44444442 hex 44444442 @@ -1954,7 +1746,22 @@ tiledata ENT hex 24444442 hex 02444420 hex 00222200 - + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex ff0000ff + hex 24444444 + hex 24444444 + hex 24444444 + hex 24444444 + hex 24444444 + hex 24444442 + hex 02444420 + hex 00222200 hex 00000000 hex 00000000 hex 00000000 @@ -1964,26 +1771,7 @@ tiledata ENT hex f000000f hex ff0000ff - hex 24444444 - hex 24444444 - hex 24444444 - hex 24444444 - hex 24444444 - hex 24444442 - hex 02444420 - hex 00222200 - - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex f000000f - hex ff0000ff - -; Tile ID 53 -; From image coordinates 96, 8 +; Tile ID 53, isSolid: false hex 00000061 hex 00000601 hex 00000110 @@ -1992,7 +1780,6 @@ tiledata ENT hex 06100000 hex 60100000 hex 11000000 - hex ffffff00 hex fffff0f0 hex fffff00f @@ -2001,7 +1788,6 @@ tiledata ENT hex f00fffff hex 0f0fffff hex 00ffffff - hex 16000000 hex 10600000 hex 01100000 @@ -2010,7 +1796,6 @@ tiledata ENT hex 00000160 hex 00000106 hex 00000011 - hex 00ffffff hex 0f0fffff hex f00fffff @@ -2020,8 +1805,7 @@ tiledata ENT hex fffff0f0 hex ffffff00 -; Tile ID 54 -; From image coordinates 104, 8 +; Tile ID 54, isSolid: false hex 00002111 hex 00002111 hex 00002111 @@ -2030,7 +1814,6 @@ tiledata ENT hex 00002211 hex 00000212 hex 00002121 - hex ffff0000 hex ffff0000 hex ffff0000 @@ -2039,7 +1822,6 @@ tiledata ENT hex ffff0000 hex fffff000 hex ffff0000 - hex 11120000 hex 11120000 hex 11120000 @@ -2048,7 +1830,6 @@ tiledata ENT hex 11220000 hex 21200000 hex 12120000 - hex 0000ffff hex 0000ffff hex 0000ffff @@ -2058,8 +1839,7 @@ tiledata ENT hex 000fffff hex 0000ffff -; Tile ID 55 -; From image coordinates 112, 8 +; Tile ID 55, isSolid: false hex 11120000 hex 12120000 hex 12120000 @@ -2068,7 +1848,6 @@ tiledata ENT hex 11220000 hex 21200000 hex 12120000 - hex 0000ffff hex 0000ffff hex 0000ffff @@ -2077,7 +1856,6 @@ tiledata ENT hex 0000ffff hex 000fffff hex 0000ffff - hex 00002111 hex 00002121 hex 00002121 @@ -2086,7 +1864,6 @@ tiledata ENT hex 00002211 hex 00000212 hex 00002121 - hex ffff0000 hex ffff0000 hex ffff0000 @@ -2096,8 +1873,7 @@ tiledata ENT hex fffff000 hex ffff0000 -; Tile ID 56 -; From image coordinates 120, 8 +; Tile ID 56, isSolid: false hex 00000002 hex 00000025 hex 00000255 @@ -2106,7 +1882,6 @@ tiledata ENT hex 00255555 hex 02555555 hex 25555555 - hex fffffff0 hex ffffff00 hex fffff000 @@ -2115,7 +1890,6 @@ tiledata ENT hex ff000000 hex f0000000 hex 00000000 - hex 20000000 hex 52000000 hex 55200000 @@ -2124,7 +1898,6 @@ tiledata ENT hex 55555200 hex 55555520 hex 55555552 - hex 0fffffff hex 00ffffff hex 000fffff @@ -2134,8 +1907,7 @@ tiledata ENT hex 0000000f hex 00000000 -; Tile ID 57 -; From image coordinates 128, 8 +; Tile ID 57, isSolid: false hex 00000000 hex 00000000 hex 00000000 @@ -2144,7 +1916,6 @@ tiledata ENT hex 00000222 hex 00222555 hex 22555555 - hex ffffffff hex ffffffff hex ffffffff @@ -2153,7 +1924,6 @@ tiledata ENT hex fffff000 hex ff000000 hex 00000000 - hex 00000000 hex 00000000 hex 00000000 @@ -2162,7 +1932,6 @@ tiledata ENT hex 22200000 hex 55522200 hex 55555522 - hex ffffffff hex ffffffff hex ffffffff @@ -2172,8 +1941,7 @@ tiledata ENT hex 000000ff hex 00000000 -; Tile ID 58 -; From image coordinates 136, 8 +; Tile ID 58, isSolid: false hex 00000000 hex 00000000 hex 00000000 @@ -2182,7 +1950,6 @@ tiledata ENT hex 22200000 hex 55522200 hex 55555522 - hex ffffffff hex ffffffff hex ffffffff @@ -2191,7 +1958,6 @@ tiledata ENT hex 000fffff hex 000000ff hex 00000000 - hex 00000000 hex 00000000 hex 00000000 @@ -2200,7 +1966,6 @@ tiledata ENT hex 00000222 hex 00222555 hex 22555555 - hex ffffffff hex ffffffff hex ffffffff @@ -2210,8 +1975,7 @@ tiledata ENT hex ff000000 hex 00000000 -; Tile ID 59 -; From image coordinates 144, 8 +; Tile ID 59, isSolid: false hex 20000000 hex 52000000 hex 55200000 @@ -2220,7 +1984,6 @@ tiledata ENT hex 55555200 hex 55555520 hex 55555552 - hex 0fffffff hex 00ffffff hex 000fffff @@ -2229,7 +1992,6 @@ tiledata ENT hex 000000ff hex 0000000f hex 00000000 - hex 00000002 hex 00000025 hex 00000255 @@ -2238,7 +2000,6 @@ tiledata ENT hex 00255555 hex 02555555 hex 25555555 - hex fffffff0 hex ffffff00 hex fffff000 @@ -2248,8 +2009,7 @@ tiledata ENT hex f0000000 hex 00000000 -; Tile ID 60 -; From image coordinates 152, 8 +; Tile ID 60, isSolid: true hex 24444444 hex 24444444 hex 24444444 @@ -2258,7 +2018,22 @@ tiledata ENT hex 24444444 hex 24444444 hex 24444444 - + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 44444442 + hex 44444442 + hex 44444442 + hex 44444442 + hex 44444442 + hex 44444442 + hex 44444442 + hex 44444442 hex 00000000 hex 00000000 hex 00000000 @@ -2268,6 +2043,7 @@ tiledata ENT hex 00000000 hex 00000000 +; Tile ID 61, isSolid: true hex 44444442 hex 44444442 hex 44444442 @@ -2276,7 +2052,22 @@ tiledata ENT hex 44444442 hex 44444442 hex 44444442 - + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 24444444 + hex 24444444 + hex 24444444 + hex 24444444 + hex 24444444 + hex 24444444 + hex 24444444 + hex 24444444 hex 00000000 hex 00000000 hex 00000000 @@ -2286,46 +2077,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 61 -; From image coordinates 160, 8 - hex 44444442 - hex 44444442 - hex 44444442 - hex 44444442 - hex 44444442 - hex 44444442 - hex 44444442 - hex 44444442 - - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - - hex 24444444 - hex 24444444 - hex 24444444 - hex 24444444 - hex 24444444 - hex 24444444 - hex 24444444 - hex 24444444 - - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - hex 00000000 - -; Tile ID 62 -; From image coordinates 168, 8 +; Tile ID 62, isSolid: true hex 55555255 hex 55552225 hex 55552225 @@ -2334,7 +2086,6 @@ tiledata ENT hex 52255255 hex 52255555 hex 52255555 - hex 00000000 hex 00000000 hex 00000000 @@ -2343,7 +2094,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 55255555 hex 52225555 hex 52225555 @@ -2352,7 +2102,6 @@ tiledata ENT hex 55255225 hex 55555225 hex 55555225 - hex 00000000 hex 00000000 hex 00000000 @@ -2362,8 +2111,7 @@ tiledata ENT hex 00000000 hex 00000000 -; Tile ID 63 -; From image coordinates 176, 8 +; Tile ID 63, isSolid: false hex 66666666 hex 06666666 hex 00666666 @@ -2372,7 +2120,6 @@ tiledata ENT hex 00000666 hex 00000066 hex 00000006 - hex 00000000 hex f0000000 hex ff000000 @@ -2381,7 +2128,6 @@ tiledata ENT hex fffff000 hex ffffff00 hex fffffff0 - hex 66666666 hex 66666660 hex 66666600 @@ -2390,7 +2136,6 @@ tiledata ENT hex 66600000 hex 66000000 hex 60000000 - hex 00000000 hex 0000000f hex 000000ff @@ -2400,8 +2145,7 @@ tiledata ENT hex 00ffffff hex 0fffffff -; Tile ID 64 -; From image coordinates 184, 8 +; Tile ID 64, isSolid: true hex 66666666 hex 65555566 hex 55656556 @@ -2410,7 +2154,6 @@ tiledata ENT hex 55565556 hex 55555556 hex 66555666 - hex 00000000 hex 00000000 hex 00000000 @@ -2419,7 +2162,6 @@ tiledata ENT hex 00000000 hex 00000000 hex 00000000 - hex 66666666 hex 66555556 hex 65565655 @@ -2428,7 +2170,6 @@ tiledata ENT hex 65556555 hex 65555555 hex 66655566 - hex 00000000 hex 00000000 hex 00000000 @@ -2438,3 +2179,5986 @@ tiledata ENT hex 00000000 hex 00000000 +; Tile ID 65, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 66, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 67, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 68, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 69, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 70, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 71, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 72, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 73, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 74, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 75, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 76, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 77, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 78, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 79, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 80, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 81, isSolid: false + hex 45444200 + hex 54542222 + hex 45424444 + hex 54524444 + hex 45424444 + hex 54244444 + hex 45255555 + hex 54255555 + hex 000000ff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00244454 + hex 22224545 + hex 44442454 + hex 44442545 + hex 44442454 + hex 44444245 + hex 55555254 + hex 55555245 + hex ff000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 82, isSolid: false + hex 00000000 + hex 22222222 + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 55555555 + hex 55555555 + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 22222222 + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 55555555 + hex 55555555 + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 83, isSolid: false + hex 02222222 + hex 22444444 + hex 22444444 + hex 22444444 + hex 22444444 + hex 22555555 + hex 22555555 + hex 22444444 + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 22222220 + hex 44444422 + hex 44444422 + hex 44444422 + hex 44444422 + hex 55555522 + hex 55555522 + hex 44444422 + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 84, isSolid: true + hex 22222222 + hex 44444442 + hex 44444442 + hex 44444442 + hex 44444442 + hex 55555552 + hex 55555552 + hex 44444442 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 22222222 + hex 24444444 + hex 24444444 + hex 24444444 + hex 24444444 + hex 25555555 + hex 25555555 + hex 24444444 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 85, isSolid: true + hex 22222222 + hex 24444444 + hex 24444444 + hex 24444444 + hex 24444444 + hex 25555555 + hex 25555555 + hex 24444444 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 22222222 + hex 44444442 + hex 44444442 + hex 44444442 + hex 44444442 + hex 55555552 + hex 55555552 + hex 44444442 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 86, isSolid: false + hex 22222220 + hex 44444422 + hex 44444422 + hex 44444422 + hex 44444422 + hex 55555522 + hex 55555522 + hex 44444422 + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 02222222 + hex 22444444 + hex 22444444 + hex 22444444 + hex 22444444 + hex 22555555 + hex 22555555 + hex 22444444 + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 87, isSolid: false + hex 00000000 + hex 22222222 + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 55555555 + hex 55555555 + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 22222222 + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 55555555 + hex 55555555 + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 88, isSolid: false + hex 00244454 + hex 22224545 + hex 44442454 + hex 44442545 + hex 44442454 + hex 44444245 + hex 55555254 + hex 55555245 + hex ff000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 45444200 + hex 54542222 + hex 45424444 + hex 54524444 + hex 45424444 + hex 54244444 + hex 45255555 + hex 54255555 + hex 000000ff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 89, isSolid: false + hex 40000004 + hex 42000002 + hex 40200024 + hex 40200024 + hex 40022204 + hex 40000004 + hex 40000004 + hex 40000004 + hex 0ffffff0 + hex 00fffff0 + hex 0f0fff00 + hex 0f0fff00 + hex 0ff000f0 + hex 0ffffff0 + hex 0ffffff0 + hex 0ffffff0 + hex 40000004 + hex 20000024 + hex 42000204 + hex 42000204 + hex 40222004 + hex 40000004 + hex 40000004 + hex 40000004 + hex 0ffffff0 + hex 0fffff00 + hex 00fff0f0 + hex 00fff0f0 + hex 0f000ff0 + hex 0ffffff0 + hex 0ffffff0 + hex 0ffffff0 + +; Tile ID 90, isSolid: false + hex 00022222 + hex 002aaaaa + hex 02aaaaaa + hex 02aaaaaa + hex 2aaaaaaa + hex 2aaaaaaa + hex 2aaaaaaa + hex 2aaaaaa8 + hex fff00000 + hex ff000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 22222000 + hex aaaaa200 + hex aaaaaa20 + hex aaaaaa20 + hex aaaaaaa2 + hex aaaaaaa2 + hex aaaaaaa2 + hex 8aaaaaa2 + hex 00000fff + hex 000000ff + hex 0000000f + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 91, isSolid: true + hex 22222222 + hex a8888888 + hex a8888888 + hex a8888888 + hex a8888888 + hex 88888888 + hex 888aaa88 + hex 88aaaaa8 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 22222222 + hex 8888888a + hex 8888888a + hex 8888888a + hex 8888888a + hex 88888888 + hex 88aaa888 + hex 8aaaaa88 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 92, isSolid: true + hex 22222222 + hex aaaaaaaa + hex aaaaaaaa + hex aaaaaaaa + hex aaaaaaaa + hex 8aaaaaa8 + hex 88aaaa88 + hex 88888888 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 22222222 + hex aaaaaaaa + hex aaaaaaaa + hex aaaaaaaa + hex aaaaaaaa + hex 8aaaaaa8 + hex 88aaaa88 + hex 88888888 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 93, isSolid: false + hex 22222000 + hex 88888200 + hex 88888820 + hex 88888820 + hex 888aaa82 + hex 88aaaaa2 + hex 8aaaaaa2 + hex 8aaaaaa2 + hex 00000fff + hex 000000ff + hex 0000000f + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00022222 + hex 00288888 + hex 02888888 + hex 02888888 + hex 28aaa888 + hex 2aaaaa88 + hex 2aaaaaa8 + hex 2aaaaaa8 + hex fff00000 + hex ff000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 94, isSolid: true + hex 22222222 + hex 8aaaaaaa + hex 8aaaaaaa + hex 88aaaaaa + hex 88888888 + hex 88888888 + hex 8888888a + hex 8888888a + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 22222222 + hex aaaaaaa8 + hex aaaaaaa8 + hex aaaaaa88 + hex 88888888 + hex 88888888 + hex a8888888 + hex a8888888 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 95, isSolid: true + hex 22222222 + hex a8888888 + hex a8888888 + hex 88888888 + hex 88888888 + hex aaaaa888 + hex aaaaaa88 + hex aaaaaa88 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 22222222 + hex 8888888a + hex 8888888a + hex 88888888 + hex 88888888 + hex 888aaaaa + hex 88aaaaaa + hex 88aaaaaa + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 96, isSolid: false + hex 00800000 + hex 08788000 + hex 08788887 + hex 87888880 + hex 87888880 + hex 87888880 + hex 87888880 + hex 87888880 + hex ff0fffff + hex f0000ff0 + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000800 + hex 00088780 + hex 78888780 + hex 08888878 + hex 08888878 + hex 08888878 + hex 08888878 + hex 08888878 + hex fffff0ff + hex 0ff0000f + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 97, isSolid: false + hex 00000800 + hex 70088280 + hex 78888280 + hex 78888828 + hex 78888828 + hex 78888828 + hex 78888828 + hex 78888828 + hex fffff0ff + hex 0ff0000f + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00800000 + hex 08288007 + hex 08288887 + hex 82888887 + hex 82888887 + hex 82888887 + hex 82888887 + hex 82888887 + hex ff0fffff + hex f0000ff0 + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 98, isSolid: false + hex 00022222 + hex 00266666 + hex 02666666 + hex 02666666 + hex 02666666 + hex 26666666 + hex 26666626 + hex 26666626 + hex fff00000 + hex ff000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 22222000 + hex 66666200 + hex 66666620 + hex 66666620 + hex 66666620 + hex 66666662 + hex 62666662 + hex 62666662 + hex 00000fff + hex 000000ff + hex 0000000f + hex 0000000f + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 99, isSolid: false + hex 22222000 + hex 66666200 + hex 66666620 + hex 66666620 + hex 66666620 + hex 66666662 + hex 62666662 + hex 62666662 + hex 00000fff + hex 000000ff + hex 0000000f + hex 0000000f + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00022222 + hex 00266666 + hex 02666666 + hex 02666666 + hex 02666666 + hex 26666666 + hex 26666626 + hex 26666626 + hex fff00000 + hex ff000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 100, isSolid: false + hex 00000000 + hex 00000000 + hex 00000022 + hex 00002244 + hex 00024444 + hex 00244444 + hex 02444444 + hex 02444444 + hex ffffffff + hex ffffffff + hex ffffff00 + hex ffff0000 + hex fff00000 + hex ff000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex 22000000 + hex 44220000 + hex 44442000 + hex 44444200 + hex 44444420 + hex 44444420 + hex ffffffff + hex ffffffff + hex 00ffffff + hex 0000ffff + hex 00000fff + hex 000000ff + hex 0000000f + hex 0000000f + +; Tile ID 101, isSolid: false + hex 00000000 + hex 00000000 + hex 22000000 + hex 44220000 + hex 44442000 + hex 44444200 + hex 44444420 + hex 44444420 + hex ffffffff + hex ffffffff + hex 00ffffff + hex 0000ffff + hex 00000fff + hex 000000ff + hex 0000000f + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000022 + hex 00002244 + hex 00024444 + hex 00244444 + hex 02444444 + hex 02444444 + hex ffffffff + hex ffffffff + hex ffffff00 + hex ffff0000 + hex fff00000 + hex ff000000 + hex f0000000 + hex f0000000 + +; Tile ID 102, isSolid: false + hex 00001011 + hex 00001011 + hex 00111011 + hex 00001011 + hex 22221011 + hex 00001011 + hex 00001011 + hex 00001010 + hex ffff0000 + hex ffff0000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffff0000 + hex ffff0000 + hex ffff0000 + hex 11010000 + hex 11010000 + hex 11011100 + hex 11010000 + hex 11012222 + hex 11010000 + hex 11010000 + hex 01010000 + hex 0000ffff + hex 0000ffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000ffff + hex 0000ffff + hex 0000ffff + +; Tile ID 103, isSolid: false + hex 10020000 + hex 00020000 + hex 00021111 + hex 00020000 + hex 00022222 + hex 00020000 + hex 00020000 + hex 10020000 + hex 0000ffff + hex 0000ffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000ffff + hex 0000ffff + hex 0000ffff + hex 00002001 + hex 00002000 + hex 11112000 + hex 00002000 + hex 22222000 + hex 00002000 + hex 00002000 + hex 00002001 + hex ffff0000 + hex ffff0000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffff0000 + hex ffff0000 + hex ffff0000 + +; Tile ID 104, isSolid: true + hex 26662666 + hex 26662666 + hex 26662666 + hex 26662666 + hex 27772777 + hex a777a777 + hex a777a777 + hex a777a777 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 66626662 + hex 66626662 + hex 66626662 + hex 66626662 + hex 77727772 + hex 777a777a + hex 777a777a + hex 777a777a + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 105, isSolid: false + hex 00009000 + hex 90009000 + hex 90090009 + hex 99090009 + hex 09090099 + hex 0909009a + hex 0a99009a + hex 00aa999a + hex ffff0fff + hex 0fff0fff + hex 0ff0fff0 + hex 00f0fff0 + hex f0f0ff00 + hex f0f0ff00 + hex f000ff00 + hex ff000000 + hex 00090000 + hex 00090009 + hex 90009009 + hex 90009099 + hex 99009090 + hex a9009090 + hex a90099a0 + hex a999aa00 + hex fff0ffff + hex fff0fff0 + hex 0fff0ff0 + hex 0fff0f00 + hex 00ff0f0f + hex 00ff0f0f + hex 00ff000f + hex 000000ff + +; Tile ID 106, isSolid: false + hex 9a000009 + hex 9a00009a + hex 9a0009a0 + hex a0000a00 + hex a9999a00 + hex aaaaa900 + hex 0000aa90 + hex 000000a0 + hex 00fffff0 + hex 00ffff00 + hex 00fff00f + hex 0ffff0ff + hex 000000ff + hex 000000ff + hex ffff000f + hex ffffff0f + hex 900000a9 + hex a90000a9 + hex 0a9000a9 + hex 00a0000a + hex 00a9999a + hex 009aaaaa + hex 09aa0000 + hex 0a000000 + hex 0fffff00 + hex 00ffff00 + hex f00fff00 + hex ff0ffff0 + hex ff000000 + hex ff000000 + hex f000ffff + hex f0ffffff + +; Tile ID 107, isSolid: true + hex 55666666 + hex 56666555 + hex 66655666 + hex 26556666 + hex 52566555 + hex 52566555 + hex 52565555 + hex 25565555 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 66666655 + hex 55566665 + hex 66655666 + hex 66665562 + hex 55566525 + hex 55566525 + hex 55556525 + hex 55556552 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 108, isSolid: true + hex 66666625 + hex 55555522 + hex 55556662 + hex 65565556 + hex 52665555 + hex 52655555 + hex 55255555 + hex 55225552 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 52666666 + hex 22555555 + hex 26665555 + hex 65556556 + hex 55556625 + hex 55555625 + hex 55555255 + hex 25552255 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 109, isSolid: false + hex 11100000 + hex 12221111 + hex 11122222 + hex 11121111 + hex 12221111 + hex 12222222 + hex 12222222 + hex 12222222 + hex 000fffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000111 + hex 11112221 + hex 22222111 + hex 11112111 + hex 11112221 + hex 22222221 + hex 22222221 + hex 22222221 + hex fffff000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 110, isSolid: false + hex 00000111 + hex 11111122 + hex 22222111 + hex 11111111 + hex 11111122 + hex 22222122 + hex 22222122 + hex 22222122 + hex fffff000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 11100000 + hex 22111111 + hex 11122222 + hex 11111111 + hex 22111111 + hex 22122222 + hex 22122222 + hex 22122222 + hex 000fffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 111, isSolid: false + hex 00012222 + hex 00012222 + hex 00122222 + hex 00122222 + hex 01220000 + hex 01200011 + hex 12200111 + hex 12200101 + hex fff00000 + hex fff00000 + hex ff000000 + hex ff000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex 22221000 + hex 22221000 + hex 22222100 + hex 22222100 + hex 00002210 + hex 11000210 + hex 11100221 + hex 10100221 + hex 00000fff + hex 00000fff + hex 000000ff + hex 000000ff + hex 0000000f + hex 0000000f + hex 00000000 + hex 00000000 + +; Tile ID 112, isSolid: false + hex 22220000 + hex 22220000 + hex 22222000 + hex 22222000 + hex 00002200 + hex 11000200 + hex 11100200 + hex 10100220 + hex 00000fff + hex 00000fff + hex 000000ff + hex 000000ff + hex 0000000f + hex 0000000f + hex 0000000f + hex 00000000 + hex 00002222 + hex 00002222 + hex 00022222 + hex 00022222 + hex 00220000 + hex 00200011 + hex 00200111 + hex 02200101 + hex fff00000 + hex fff00000 + hex ff000000 + hex ff000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex 00000000 + +; Tile ID 113, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 114, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 115, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 116, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 117, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 118, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 119, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 120, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 121, isSolid: true + hex 45244444 + hex 54244444 + hex 42444444 + hex 52444444 + hex 42444444 + hex 52555555 + hex 42444444 + hex 52444444 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 44444254 + hex 44444245 + hex 44444424 + hex 44444425 + hex 44444424 + hex 55555525 + hex 44444424 + hex 44444425 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 122, isSolid: true + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 55555555 + hex 44444444 + hex 44444444 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 55555555 + hex 44444444 + hex 44444444 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 123, isSolid: true + hex 22444444 + hex 22444444 + hex 22444444 + hex 22444444 + hex 22555555 + hex 22444444 + hex 22444444 + hex 22444444 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 44444422 + hex 44444422 + hex 44444422 + hex 44444422 + hex 55555522 + hex 44444422 + hex 44444422 + hex 44444422 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 124, isSolid: true + hex 44444442 + hex 44444442 + hex 44444442 + hex 44444442 + hex 55555552 + hex 44444442 + hex 44444442 + hex 44444442 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 24444444 + hex 24444444 + hex 24444444 + hex 24444444 + hex 25555555 + hex 24444444 + hex 24444444 + hex 24444444 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 125, isSolid: true + hex 24444444 + hex 24444444 + hex 24444444 + hex 24444444 + hex 25555555 + hex 24444444 + hex 24444444 + hex 24444444 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 44444442 + hex 44444442 + hex 44444442 + hex 44444442 + hex 55555552 + hex 44444442 + hex 44444442 + hex 44444442 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 126, isSolid: true + hex 44444422 + hex 44444422 + hex 44444422 + hex 44444422 + hex 55555522 + hex 44444422 + hex 44444422 + hex 44444422 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 22444444 + hex 22444444 + hex 22444444 + hex 22444444 + hex 22555555 + hex 22444444 + hex 22444444 + hex 22444444 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 127, isSolid: true + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 55555555 + hex 44444444 + hex 44444444 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 44444444 + hex 55555555 + hex 44444444 + hex 44444444 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 128, isSolid: true + hex 44444254 + hex 44444245 + hex 44444424 + hex 44444425 + hex 44444424 + hex 55555525 + hex 44444424 + hex 44444425 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 45244444 + hex 54244444 + hex 42444444 + hex 52444444 + hex 42444444 + hex 52555555 + hex 42444444 + hex 52444444 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 129, isSolid: false + hex 22200022 + hex 11120211 + hex 11000001 + hex 11000001 + hex 11000001 + hex 11000001 + hex 11120211 + hex 22200022 + hex 000fff00 + hex 0000f000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000f000 + hex 000fff00 + hex 22000222 + hex 11202111 + hex 10000011 + hex 10000011 + hex 10000011 + hex 10000011 + hex 11202111 + hex 22000222 + hex 00fff000 + hex 000f0000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 000f0000 + hex 00fff000 + +; Tile ID 130, isSolid: false + hex 2aaaaa88 + hex 28888888 + hex 28888888 + hex 28888888 + hex 28888888 + hex 28888888 + hex 02288888 + hex 00022222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex fff00000 + hex 88aaaaa2 + hex 88888882 + hex 88888882 + hex 88888882 + hex 88888882 + hex 88888882 + hex 88888220 + hex 22222000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 00000fff + +; Tile ID 131, isSolid: true + hex 8aaaaaaa + hex 8aaaaaaa + hex 8aaaaaaa + hex 88aaaaa8 + hex 888aaa88 + hex 88888888 + hex 88888888 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex aaaaaaa8 + hex aaaaaaa8 + hex aaaaaaa8 + hex 8aaaaa88 + hex 88aaa888 + hex 88888888 + hex 88888888 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 132, isSolid: true + hex 88888888 + hex 88888888 + hex 88888888 + hex 88888888 + hex 88888888 + hex 88888888 + hex 88888888 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 88888888 + hex 88888888 + hex 88888888 + hex 88888888 + hex 88888888 + hex 88888888 + hex 88888888 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 133, isSolid: false + hex 8aaaaaa2 + hex 88aaaaa2 + hex 888aaa82 + hex 88888882 + hex 88888882 + hex 88888882 + hex 88888822 + hex 22222220 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 2aaaaaa8 + hex 2aaaaa88 + hex 28aaa888 + hex 28888888 + hex 28888888 + hex 28888888 + hex 22888888 + hex 02222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + +; Tile ID 134, isSolid: true + hex 888888aa + hex 888888aa + hex 888888aa + hex 888888aa + hex 8888888a + hex 8888888a + hex 88888888 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex aa888888 + hex aa888888 + hex aa888888 + hex aa888888 + hex a8888888 + hex a8888888 + hex 88888888 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 135, isSolid: true + hex aaaaaaa8 + hex aaaaaaa8 + hex aaaaaaa8 + hex aaaaaaa8 + hex aaaaaa88 + hex aaaaaa88 + hex aaaaa888 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 8aaaaaaa + hex 8aaaaaaa + hex 8aaaaaaa + hex 8aaaaaaa + hex 88aaaaaa + hex 88aaaaaa + hex 888aaaaa + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 136, isSolid: false + hex 08788880 + hex 08788000 + hex 00800007 + hex 00000000 + hex 00000007 + hex 00000000 + hex 00000007 + hex 00000000 + hex f0000000 + hex f0000ff0 + hex ff0ffff0 + hex fffffff0 + hex fffffff0 + hex fffffff0 + hex fffffff0 + hex fffffff0 + hex 08888780 + hex 00088780 + hex 70000800 + hex 00000000 + hex 70000000 + hex 00000000 + hex 70000000 + hex 00000000 + hex 0000000f + hex 0ff0000f + hex 0ffff0ff + hex 0fffffff + hex 0fffffff + hex 0fffffff + hex 0fffffff + hex 0fffffff + +; Tile ID 137, isSolid: false + hex 78888280 + hex 70008280 + hex 70000800 + hex 70000000 + hex 70000000 + hex 70000000 + hex 70000000 + hex 70000000 + hex 0000000f + hex 0fff000f + hex 0ffff0ff + hex 0fffffff + hex 0fffffff + hex 0fffffff + hex 0fffffff + hex 0fffffff + hex 08288887 + hex 08280007 + hex 00800007 + hex 00000007 + hex 00000007 + hex 00000007 + hex 00000007 + hex 00000007 + hex f0000000 + hex f000fff0 + hex ff0ffff0 + hex fffffff0 + hex fffffff0 + hex fffffff0 + hex fffffff0 + hex fffffff0 + +; Tile ID 138, isSolid: false + hex 26666626 + hex 26666666 + hex 26266666 + hex 02666266 + hex 02666622 + hex 02666666 + hex 00266662 + hex 00022220 + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex ff000000 + hex fff0000f + hex 62666662 + hex 66666662 + hex 66666262 + hex 66266620 + hex 22666620 + hex 66666620 + hex 26666200 + hex 02222000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 0000000f + hex 0000000f + hex 000000ff + hex f0000fff + +; Tile ID 139, isSolid: false + hex 62666662 + hex 66666662 + hex 66666262 + hex 66266620 + hex 22666620 + hex 66666620 + hex 26666200 + hex 02222000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 0000000f + hex 0000000f + hex 000000ff + hex f0000fff + hex 26666626 + hex 26666666 + hex 26266666 + hex 02666266 + hex 02666622 + hex 02666666 + hex 00266662 + hex 00022220 + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex ff000000 + hex fff0000f + +; Tile ID 140, isSolid: false + hex 02444444 + hex 02444444 + hex 02444444 + hex 00244444 + hex 00224444 + hex 00022244 + hex 00002222 + hex 00000222 + hex f0000000 + hex f0000000 + hex f0000000 + hex ff000000 + hex ff000000 + hex fff00000 + hex ffff0000 + hex fffff000 + hex 44444420 + hex 44444420 + hex 44444420 + hex 44444200 + hex 44442200 + hex 44222000 + hex 22220000 + hex 22200000 + hex 0000000f + hex 0000000f + hex 0000000f + hex 000000ff + hex 000000ff + hex 00000fff + hex 0000ffff + hex 000fffff + +; Tile ID 141, isSolid: false + hex 44444420 + hex 44444420 + hex 44444420 + hex 44444200 + hex 44442200 + hex 44222000 + hex 22220000 + hex 22220000 + hex 0000000f + hex 0000000f + hex 0000000f + hex 000000ff + hex 000000ff + hex 00000fff + hex 0000ffff + hex 0000ffff + hex 02444444 + hex 02444444 + hex 02444444 + hex 00244444 + hex 00224444 + hex 00022244 + hex 00002222 + hex 00002222 + hex f0000000 + hex f0000000 + hex f0000000 + hex ff000000 + hex ff000000 + hex fff00000 + hex ffff0000 + hex ffff0000 + +; Tile ID 142, isSolid: false + hex 00001010 + hex 00001010 + hex 00111010 + hex 00001010 + hex 22221011 + hex 00001011 + hex 00001011 + hex 00001011 + hex ffff0000 + hex ffff0000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffff0000 + hex ffff0000 + hex ffff0000 + hex 01010000 + hex 01010000 + hex 01011100 + hex 01010000 + hex 11012222 + hex 11010000 + hex 11010000 + hex 11010000 + hex 0000ffff + hex 0000ffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000ffff + hex 0000ffff + hex 0000ffff + +; Tile ID 143, isSolid: false + hex 10020000 + hex 10020000 + hex 10021111 + hex 10020000 + hex 10022222 + hex 10020000 + hex 10020000 + hex 10020000 + hex 0000ffff + hex 0000ffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000ffff + hex 0000ffff + hex 0000ffff + hex 00002001 + hex 00002001 + hex 11112001 + hex 00002001 + hex 22222001 + hex 00002001 + hex 00002001 + hex 00002001 + hex ffff0000 + hex ffff0000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffff0000 + hex ffff0000 + hex ffff0000 + +; Tile ID 144, isSolid: true + hex a777a777 + hex a777a777 + hex a777a777 + hex 27772777 + hex 2aaa2aaa + hex 2aaa2aaa + hex 2aaa2aaa + hex 2aaa2aaa + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 777a777a + hex 777a777a + hex 777a777a + hex 77727772 + hex aaa2aaa2 + hex aaa2aaa2 + hex aaa2aaa2 + hex aaa2aaa2 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 145, isSolid: false + hex 0000aa9a + hex 0900009a + hex 0909909a + hex 09090099 + hex 00990009 + hex 000a9009 + hex 0000a999 + hex 00000aaa + hex ffff0000 + hex f0ffff00 + hex f0f00f00 + hex f0f0ff00 + hex ff00fff0 + hex fff00ff0 + hex ffff0000 + hex fffff000 + hex a9aa0000 + hex a9000090 + hex a9099090 + hex 99009090 + hex 90009900 + hex 9009a000 + hex 999a0000 + hex aaa00000 + hex 0000ffff + hex 00ffff0f + hex 00f00f0f + hex 00ff0f0f + hex 0fff00ff + hex 0ff00fff + hex 0000ffff + hex 000fffff + +; Tile ID 146, isSolid: false + hex 00090000 + hex 00900000 + hex 00900090 + hex a09aa090 + hex a9a00aa0 + hex 9aa0000a + hex 9a000000 + hex 9a000000 + hex fff0ffff + hex ff0fffff + hex ff0fff0f + hex 0f000f0f + hex 000ff00f + hex 000ffff0 + hex 00ffffff + hex 00ffffff + hex 00009000 + hex 00000900 + hex 09000900 + hex 090aa90a + hex 0aa00a9a + hex a0000aa9 + hex 000000a9 + hex 000000a9 + hex ffff0fff + hex fffff0ff + hex f0fff0ff + hex f0f000f0 + hex f00ff000 + hex 0ffff000 + hex ffffff00 + hex ffffff00 + +; Tile ID 147, isSolid: true + hex 65265555 + hex 62666655 + hex 62655565 + hex 66555552 + hex 66555552 + hex 65555522 + hex 65552222 + hex 52222225 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 55556256 + hex 55666626 + hex 56555626 + hex 25555566 + hex 25555566 + hex 22555556 + hex 22225556 + hex 52222225 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 148, isSolid: true + hex 55222262 + hex 55222622 + hex 55522652 + hex 55226552 + hex 52226522 + hex 66665522 + hex 65555225 + hex 22222225 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 26222255 + hex 22622255 + hex 25622555 + hex 25562255 + hex 22562225 + hex 22556666 + hex 52255556 + hex 52222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 149, isSolid: false + hex 12222211 + hex 12222122 + hex 12221221 + hex 12221212 + hex 12221212 + hex 12221220 + hex 11121222 + hex 12201222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 000f0000 + hex 11222221 + hex 22122221 + hex 12212221 + hex 21212221 + hex 21212221 + hex 02212221 + hex 22212111 + hex 22210221 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000f000 + +; Tile ID 150, isSolid: false + hex 11222122 + hex 22022122 + hex 12202122 + hex 20202122 + hex 20202122 + hex 02201122 + hex 22202111 + hex 22200122 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000f000 + hex 22122211 + hex 22122022 + hex 22120221 + hex 22120202 + hex 22120202 + hex 22110220 + hex 11120222 + hex 22100222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 000f0000 + +; Tile ID 151, isSolid: true + hex 12201001 + hex 12201001 + hex 12201001 + hex 12201111 + hex 12200010 + hex 12200011 + hex 12220000 + hex 12222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 10010221 + hex 10010221 + hex 10010221 + hex 11110221 + hex 01000221 + hex 11000221 + hex 00002221 + hex 22222221 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 152, isSolid: true + hex 10010220 + hex 10010220 + hex 10010220 + hex 11110220 + hex 01000220 + hex 11000220 + hex 00002220 + hex 22222220 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 02201001 + hex 02201001 + hex 02201001 + hex 02201111 + hex 02200010 + hex 02200011 + hex 02220000 + hex 02222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 153, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 154, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 155, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 156, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 157, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 158, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 159, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 160, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 161, isSolid: true + hex 42555555 + hex 52555555 + hex 42555555 + hex 52555555 + hex 42555555 + hex 52555555 + hex 45255555 + hex 54255555 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 55555524 + hex 55555525 + hex 55555524 + hex 55555525 + hex 55555524 + hex 55555525 + hex 55555254 + hex 55555245 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 162, isSolid: true + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 163, isSolid: true + hex 22444444 + hex 22555555 + hex 22555555 + hex 22555555 + hex 22555555 + hex 22555555 + hex 22555555 + hex 22555555 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 44444422 + hex 55555522 + hex 55555522 + hex 55555522 + hex 55555522 + hex 55555522 + hex 55555522 + hex 55555522 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 164, isSolid: true + hex 44444442 + hex 55555552 + hex 55555552 + hex 55555552 + hex 55555552 + hex 55555552 + hex 55555552 + hex 55555552 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 24444444 + hex 25555555 + hex 25555555 + hex 25555555 + hex 25555555 + hex 25555555 + hex 25555555 + hex 25555555 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 165, isSolid: true + hex 24444444 + hex 25555555 + hex 25555555 + hex 25555555 + hex 25555555 + hex 25555555 + hex 25555555 + hex 25555555 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 44444442 + hex 55555552 + hex 55555552 + hex 55555552 + hex 55555552 + hex 55555552 + hex 55555552 + hex 55555552 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 166, isSolid: true + hex 44444422 + hex 55555522 + hex 55555522 + hex 55555522 + hex 55555522 + hex 55555522 + hex 55555522 + hex 55555522 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 22444444 + hex 22555555 + hex 22555555 + hex 22555555 + hex 22555555 + hex 22555555 + hex 22555555 + hex 22555555 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 167, isSolid: true + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 168, isSolid: true + hex 55555524 + hex 5555552b + hex 5555552c + hex 5555552b + hex 5555552c + hex 5555552b + hex 5555525c + hex 5555524b + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 42555555 + hex b2555555 + hex c2555555 + hex b2555555 + hex c2555555 + hex b2555555 + hex c5255555 + hex b4255555 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 169, isSolid: false + hex 00000000 + hex 00000000 + hex 00002222 + hex 0002ee4d + hex 002eb444 + hex 002e2424 + hex 02eb2424 + hex 02eb2424 + hex ffffffff + hex ffffffff + hex ffff0000 + hex fff00000 + hex ff000000 + hex ff000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex 22220000 + hex d4ee2000 + hex 444be200 + hex 4242e200 + hex 4242be20 + hex 4242be20 + hex ffffffff + hex ffffffff + hex 0000ffff + hex 00000fff + hex 000000ff + hex 000000ff + hex 0000000f + hex 0000000f + +; Tile ID 170, isSolid: false + hex 00000000 + hex 00000000 + hex 20000000 + hex d2000000 + hex d2000000 + hex dd200000 + hex dd200000 + hex d2222200 + hex ffffffff + hex ffffffff + hex 0fffffff + hex 00ffffff + hex 00ffffff + hex 000fffff + hex 000fffff + hex 000000ff + hex 00000000 + hex 00000000 + hex 00000002 + hex 0000002d + hex 0000002d + hex 000002dd + hex 000002dd + hex 0022222d + hex ffffffff + hex ffffffff + hex fffffff0 + hex ffffff00 + hex ffffff00 + hex fffff000 + hex fffff000 + hex ff000000 + +; Tile ID 171, isSolid: false + hex 00000000 + hex 00000222 + hex 0000211d + hex 000021bb + hex 0002112b + hex 00021b2b + hex 00021bbb + hex 0021bbbb + hex ffffffff + hex fffff000 + hex ffff0000 + hex ffff0000 + hex fff00000 + hex fff00000 + hex fff00000 + hex ff000000 + hex 00000000 + hex 22200000 + hex d1120000 + hex bb120000 + hex b2112000 + hex b2b12000 + hex bbb12000 + hex bbbb1200 + hex ffffffff + hex 000fffff + hex 0000ffff + hex 0000ffff + hex 00000fff + hex 00000fff + hex 00000fff + hex 000000ff + +; Tile ID 172, isSolid: false + hex 00000000 + hex 20000000 + hex d2000000 + hex d2000000 + hex 2d200000 + hex 2d200000 + hex bd222200 + hex bd211d20 + hex ffffffff + hex 0fffffff + hex 00ffffff + hex 00ffffff + hex 000fffff + hex 000fffff + hex 000000ff + hex 0000000f + hex 00000000 + hex 00000002 + hex 0000002d + hex 0000002d + hex 000002d2 + hex 000002d2 + hex 002222db + hex 02d112db + hex ffffffff + hex fffffff0 + hex ffffff00 + hex ffffff00 + hex fffff000 + hex fffff000 + hex ff000000 + hex f0000000 + +; Tile ID 173, isSolid: false + hex 00000000 + hex 00000000 + hex 00002222 + hex 000211bd + hex 0021bbbb + hex 00212b2b + hex 021b2b2b + hex 021b2b2b + hex ffffffff + hex ffffffff + hex ffff0000 + hex fff00000 + hex ff000000 + hex ff000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex 22220000 + hex db112000 + hex bbbb1200 + hex b2b21200 + hex b2b2b120 + hex b2b2b120 + hex ffffffff + hex ffffffff + hex 0000ffff + hex 00000fff + hex 000000ff + hex 000000ff + hex 0000000f + hex 0000000f + +; Tile ID 174, isSolid: false + hex 00000000 + hex 00000000 + hex 20000000 + hex d2000000 + hex dd200000 + hex dd200000 + hex ddd20000 + hex dd222000 + hex ffffffff + hex ffffffff + hex 0fffffff + hex 00ffffff + hex 000fffff + hex 000fffff + hex 0000ffff + hex 00000fff + hex 00000000 + hex 00000000 + hex 00000002 + hex 0000002d + hex 000002dd + hex 000002dd + hex 00002ddd + hex 000222dd + hex ffffffff + hex ffffffff + hex fffffff0 + hex ffffff00 + hex fffff000 + hex fffff000 + hex ffff0000 + hex fff00000 + +; Tile ID 175, isSolid: false + hex 00000000 + hex 00222200 + hex 02111d20 + hex 211bbd20 + hex 212b2bd2 + hex 212b2bd2 + hex 212b2bdd + hex 21bbbbd2 + hex ffffffff + hex ff0000ff + hex f000000f + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00222200 + hex 02d11120 + hex 02dbb112 + hex 2db2b212 + hex 2db2b212 + hex ddb2b212 + hex 2dbbbb12 + hex ffffffff + hex ff0000ff + hex f000000f + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 176, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 22200000 + hex 11120000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 000fffff + hex 0000ffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000222 + hex 00002111 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex fffff000 + hex ffff0000 + +; Tile ID 177, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 178, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 179, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 180, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 181, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 182, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 183, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 184, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 185, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 186, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 187, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 188, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 189, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 190, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 191, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 192, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 193, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 194, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 195, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 196, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 197, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 198, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 199, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 200, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 201, isSolid: false + hex 45255555 + hex 54254545 + hex 45245454 + hex 54524545 + hex 45424444 + hex 54524444 + hex 45442222 + hex 54544200 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 000000ff + hex 55555254 + hex 54545245 + hex 45454254 + hex 54542545 + hex 44442454 + hex 44442545 + hex 22224454 + hex 00244545 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ff000000 + +; Tile ID 202, isSolid: false + hex 55555555 + hex 45454545 + hex 54545454 + hex 45454545 + hex 44444444 + hex 44444444 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex 55555555 + hex 54545454 + hex 45454545 + hex 54545454 + hex 44444444 + hex 44444444 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + +; Tile ID 203, isSolid: false + hex 22555555 + hex 22555555 + hex 22545454 + hex 22454545 + hex 22545454 + hex 22444444 + hex 22444444 + hex 02222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex 55555522 + hex 55555522 + hex 45454522 + hex 54545422 + hex 45454522 + hex 44444422 + hex 44444422 + hex 22222220 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + +; Tile ID 204, isSolid: true + hex 55555552 + hex 55555552 + hex 54545452 + hex 45454542 + hex 54545452 + hex 44444442 + hex 44444442 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 25555555 + hex 25555555 + hex 25454545 + hex 24545454 + hex 25454545 + hex 24444444 + hex 24444444 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 205, isSolid: true + hex 25555555 + hex 25555555 + hex 25454545 + hex 24545454 + hex 25454545 + hex 24444444 + hex 24444444 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 55555552 + hex 55555552 + hex 54545452 + hex 45454542 + hex 54545452 + hex 44444442 + hex 44444442 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 206, isSolid: false + hex 55555522 + hex 55555522 + hex 45454522 + hex 54545422 + hex 45454522 + hex 44444422 + hex 44444422 + hex 22222220 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 22555555 + hex 22555555 + hex 22545454 + hex 22454545 + hex 22545454 + hex 22444444 + hex 22444444 + hex 02222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + +; Tile ID 207, isSolid: false + hex 55555555 + hex 54545454 + hex 45454545 + hex 54545454 + hex 44444444 + hex 44444444 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex 55555555 + hex 45454545 + hex 54545454 + hex 45454545 + hex 44444444 + hex 44444444 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + +; Tile ID 208, isSolid: false + hex 55555254 + hex 54545245 + hex 45454254 + hex 54542545 + hex 44442454 + hex 44442545 + hex 22224454 + hex 00244545 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ff000000 + hex 45255555 + hex 54254545 + hex 45245454 + hex 54524545 + hex 45424444 + hex 54524444 + hex 45442222 + hex 54544200 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 000000ff + +; Tile ID 209, isSolid: false + hex 2e44444d + hex 2e44444d + hex 2e44444d + hex 22e4444d + hex 12e44444 + hex 122e4442 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex d44444e2 + hex d44444e2 + hex d44444e2 + hex d4444e22 + hex 44444e21 + hex 2444e221 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + +; Tile ID 210, isSolid: false + hex 2e444d20 + hex 21242d20 + hex 21242d20 + hex 2e444d20 + hex 44444d20 + hex 4444dd20 + hex 2dddd222 + hex 00000000 + hex 0000000f + hex 0000000f + hex 0000000f + hex 0000000f + hex 0000000f + hex 0000000f + hex 00000000 + hex ffffffff + hex 02d444e2 + hex 02d24212 + hex 02d24212 + hex 02d444e2 + hex 02d44444 + hex 02dd4444 + hex 222dddd2 + hex 00000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex ffffffff + +; Tile ID 211, isSolid: false + hex 0021bbbb + hex 0021bbbb + hex 0021bbbd + hex 0021bbbd + hex 00021bbd + hex 00021bd2 + hex 22222222 + hex 00000000 + hex ff000000 + hex ff000000 + hex ff000000 + hex ff000000 + hex fff00000 + hex fff00000 + hex 00000000 + hex ffffffff + hex bbbb1200 + hex bbbb1200 + hex dbbb1200 + hex dbbb1200 + hex dbb12000 + hex 2db12000 + hex 22222222 + hex 00000000 + hex 000000ff + hex 000000ff + hex 000000ff + hex 000000ff + hex 00000fff + hex 00000fff + hex 00000000 + hex ffffffff + +; Tile ID 212, isSolid: false + hex d21212d2 + hex d212b2d2 + hex 21bbbbd2 + hex 1bbbbd20 + hex 1bbbbd20 + hex 1bbbd220 + hex 2bbbb222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 0000000f + hex 0000000f + hex 00000000 + hex ffffffff + hex 2d21212d + hex 2d2b212d + hex 2dbbbb12 + hex 02dbbbb1 + hex 02dbbbb1 + hex 022dbbb1 + hex 222bbbb2 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex ffffffff + +; Tile ID 213, isSolid: false + hex 021bbbbd + hex 021bbbbd + hex 02bbbbbd + hex 002bbbbd + hex 002bbbbd + hex 0002bbd2 + hex 22222222 + hex 00000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex ff000000 + hex ff000000 + hex fff00000 + hex 00000000 + hex ffffffff + hex dbbbb120 + hex dbbbb120 + hex dbbbbb20 + hex dbbbb200 + hex dbbbb200 + hex 2dbb2000 + hex 22222222 + hex 00000000 + hex 0000000f + hex 0000000f + hex 0000000f + hex 000000ff + hex 000000ff + hex 00000fff + hex 00000000 + hex ffffffff + +; Tile ID 214, isSolid: false + hex d211d200 + hex 21bbbd20 + hex 212b2d20 + hex 21bbbd20 + hex bbbbbd20 + hex bbbbdd20 + hex 2dddd222 + hex 00000000 + hex 000000ff + hex 0000000f + hex 0000000f + hex 0000000f + hex 0000000f + hex 0000000f + hex 00000000 + hex ffffffff + hex 002d112d + hex 02dbbb12 + hex 02d2b212 + hex 02dbbb12 + hex 02dbbbbb + hex 02ddbbbb + hex 222dddd2 + hex 00000000 + hex ff000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex ffffffff + +; Tile ID 215, isSolid: false + hex 21bbbb21 + hex 21bbbb21 + hex 21bbbb21 + hex 021bbbb2 + hex 021bbbbb + hex 0021bbbb + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex f0000000 + hex ff000000 + hex 00000000 + hex ffffffff + hex 12bbbb12 + hex 12bbbb12 + hex 12bbbb12 + hex 2bbbb120 + hex bbbbb120 + hex bbbb1200 + hex 22222222 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 0000000f + hex 000000ff + hex 00000000 + hex ffffffff + +; Tile ID 216, isSolid: false + hex 212d2000 + hex 2b2d2000 + hex bbbbd200 + hex bbbbbd20 + hex 2bbbbd20 + hex bbbbdd20 + hex 2dddd222 + hex 00000000 + hex 00000fff + hex 00000fff + hex 000000ff + hex 0000000f + hex 0000000f + hex 0000000f + hex 00000000 + hex ffffffff + hex 0002d212 + hex 0002d2b2 + hex 002dbbbb + hex 02dbbbbb + hex 02dbbbb2 + hex 02ddbbbb + hex 222dddd2 + hex 00000000 + hex fff00000 + hex fff00000 + hex ff000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex ffffffff + +; Tile ID 217, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 218, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 219, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 220, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 221, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 222, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 223, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 224, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 225, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 226, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 227, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 228, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 229, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 230, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 231, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 232, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 233, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 234, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 235, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 236, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 237, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 238, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 239, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 240, isSolid: false + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff diff --git a/demos/shell/gen/App.TileSetAnim.s b/demos/shell/gen/App.TileSetAnim.s new file mode 100644 index 0000000..7af722b --- /dev/null +++ b/demos/shell/gen/App.TileSetAnim.s @@ -0,0 +1,52 @@ + +TileAnimInit ENT + + ldx #168 + ldy #0 + jsl CopyTileToDyn + ldx #169 + ldy #1 + jsl CopyTileToDyn + ldx #208 + ldy #2 + jsl CopyTileToDyn + ldx #209 + ldy #3 + jsl CopyTileToDyn + lda #TileAnim_168 + ldx #^TileAnim_168 + ldy #15 + jsl StartScript + lda #TileAnim_169 + ldx #^TileAnim_169 + ldy #15 + jsl StartScript + lda #TileAnim_208 + ldx #^TileAnim_208 + ldy #15 + jsl StartScript + lda #TileAnim_209 + ldx #^TileAnim_209 + ldy #15 + jsl StartScript + rts +TileAnim_168 + dw $8006,168,0,0 + dw $8006,170,0,0 + dw $8006,172,0,0 + dw $cd06,174,0,0 +TileAnim_169 + dw $8006,169,1,0 + dw $8006,171,1,0 + dw $8006,173,1,0 + dw $cd06,175,1,0 +TileAnim_208 + dw $8006,208,2,0 + dw $8006,210,2,0 + dw $8006,212,2,0 + dw $cd06,214,2,0 +TileAnim_209 + dw $8006,209,3,0 + dw $8006,211,3,0 + dw $8006,213,3,0 + dw $cd06,215,3,0 \ No newline at end of file diff --git a/demos/shell/package.json b/demos/shell/package.json index 60856ca..bdca999 100644 --- a/demos/shell/package.json +++ b/demos/shell/package.json @@ -24,7 +24,7 @@ "build:assets-woz-fatbits": "node %npm_package_config_png2iigs% ./assets/woz-pixelated.png ./emu/bg1a.bin --start-index 6 && node %npm_package_config_png2iigs% ./assets/woz-shifted.png ./emu/bg1b.bin --start-index 6 && node %npm_package_config_png2iigs% ./assets/donut-plains-1-6-color.png ./emu/fg1.bin", "build:assets-color-cycle": "node %npm_package_config_png2iigs% ./assets/rotopattern.png ./emu/bg1a.bin --start-index 6 && node %npm_package_config_png2iigs% ./assets/woz-shifted.png ./emu/bg1b.bin --start-index 6 && node %npm_package_config_png2iigs% ./assets/donut-plains-1-6-color.png ./emu/fg1.bin", "build:map": "node %npm_package_config_tiled2iigs% ./assets/tiled/world_1-1.json --output-dir ./gen", - "build:tiles": "node %npm_package_config_png2iigs% ./assets/tilesets/smb-16.png --as-tile-data --transparent-color-index 3 > ./gen/App.TileSet.s" + "build:tiles": "node %npm_package_config_png2iigs% ./assets/tilesets/smb-16.png --max-tiles 224 --as-tile-data --transparent-color-index 3 > ./gen/App.TileSet.s" }, "repository": { "type": "git", diff --git a/macros/CORE.MACS.S b/macros/CORE.MACS.S index 58ed1db..204ea42 100644 --- a/macros/CORE.MACS.S +++ b/macros/CORE.MACS.S @@ -119,6 +119,15 @@ min mac lda ]1 mout <<< +; Macro to define script steps +ScriptStep MAC + IF #=]5 + dw {]1+{{]5&#$000F}<<8}},]2,]3,]4 + ELSE + dw ]1,]2,]3,]4 + FIN + <<< + ; Macros to use in the Masked Tile renderer ; ; ]1 : tiledata offset @@ -174,3 +183,14 @@ transparent sta: ]3+1,y next eom + + + + + + + + + + + diff --git a/src/Anim.s b/src/Anim.s index b5e9c68..a4db627 100644 --- a/src/Anim.s +++ b/src/Anim.s @@ -39,28 +39,12 @@ AnimatePath ; at a time . The slope of the lines are (X1 - X0) / Duration and (Y1 - Y0) / Duration. ; ; The tricky bit is that we *always* single-step in the "Y" direction (duration), so we -; actaully need to use two differenct algorithms. +; actually need to use two differenct algorithms. ; -; If |X1 - X0| <= Duration, use a standard line-drawing approach (Bresenham's, DDA, etc.) +; If |X1 - X0| <= Duration, use a standard Bresenham's ; If |X1 - X0| > Duration, use the Run-Length Slice algorithm (https://www.phatcode.net/res/224/files/html/ch36/36-02.html) + lda AnimX1 + lda AnimY - -:stepx lda - - cmp AnimDuration ; Handle the two cases - - - - - - - - - - - - - - diff --git a/src/Defs.s b/src/Defs.s index a989aff..12cf76e 100644 --- a/src/Defs.s +++ b/src/Defs.s @@ -109,3 +109,13 @@ DIRTY_BIT_BG1_X equ $0004 DIRTY_BIT_BG1_Y equ $0008 DIRTY_BIT_BG0_REFRESH equ $0010 DIRTY_BIT_BG1_REFRESH equ $0020 + +; Script definition +YIELD equ $8000 +JUMP equ $4000 + +SET_PALETTE_ENTRY equ $0002 +SWAP_PALETTE_ENTRY equ $0004 +SET_DYN_TILE equ $0006 +CALLBACK equ $0010 + diff --git a/src/GTE.s b/src/GTE.s index 55ce1fd..9405257 100644 --- a/src/GTE.s +++ b/src/GTE.s @@ -7,12 +7,18 @@ EngineShutDown EXT SetScreenMode EXT ReadControl EXT +; Low-Level Functions +SetPalette EXT +GetVBLTicks EXT + +; Tilemap functions SetBG0XPos EXT SetBG0YPos EXT SetBG1XPos EXT SetBG1YPos EXT CopyBG0Tile EXT CopyBG1Tile EXT +CopyTileToDyn EXT Render EXT ; Rotation @@ -40,3 +46,6 @@ ScreenAddr EXT OneSecondCounter EXT BlitBuff EXT + + + diff --git a/src/Graphics.s b/src/Graphics.s index d92af12..1e35274 100644 --- a/src/Graphics.s +++ b/src/Graphics.s @@ -1,123 +1,153 @@ ; Graphic screen initialization InitGraphics - jsr ShadowOn - jsr GrafOn - lda #0 - jsr ClearToColor - lda #0 - jsr SetSCBs - ldx #DefaultPalette - lda #0 - jsr SetPalette + jsr _ShadowOn + jsr _GrafOn + lda #0 + jsr _ClearToColor + lda #0 + jsr _SetSCBs + ldx #DefaultPalette + lda #0 + jsr _SetPalette - jsr _InitBG0 ; Initialize the background layers - jsr _InitBG1 + jsr _InitBG0 ; Initialize the background layers + jsr _InitBG1 - lda #0 - jsr _ClearBG1Buffer + lda #0 + jsr _ClearBG1Buffer - rts + rts -DefaultPalette dw $0000,$007F,$0090,$0FF0 - dw $000F,$0080,$0f70,$0FFF - dw $0fa9,$0ff0,$00e0,$04DF - dw $0d00,$078f,$0ccc,$0FFF +DefaultPalette dw $0000,$007F,$0090,$0FF0 + dw $000F,$0080,$0f70,$0FFF + dw $0fa9,$0ff0,$00e0,$04DF + dw $0d00,$078f,$0ccc,$0FFF ; Return the current border color ($0 - $F) in the accumulator -GetBorderColor lda #0000 - sep #$20 - ldal BORDER_REG - and #$0F - rep #$20 - rts +_GetBorderColor lda #0000 + sep #$20 + ldal BORDER_REG + and #$0F + rep #$20 + rts ; Set the border color to the accumulator value. -SetBorderColor sep #$20 ; ACC = $X_Y, REG = $W_Z - eorl BORDER_REG ; ACC = $(X^Y)_(Y^Z) - and #$0F ; ACC = $0_(Y^Z) - eorl BORDER_REG ; ACC = $W_(Y^Z^Z) = $W_Y - stal BORDER_REG - rep #$20 - rts +SetBorderColor ENT + jsr _SetBorderColor + rtl + +_SetBorderColor sep #$20 ; ACC = $X_Y, REG = $W_Z + eorl BORDER_REG ; ACC = $(X^Y)_(Y^Z) + and #$0F ; ACC = $0_(Y^Z) + eorl BORDER_REG ; ACC = $W_(Y^Z^Z) = $W_Y + stal BORDER_REG + rep #$20 + rts ; Clear to SHR screen to a specific color -ClearToColor ldx #$7D00 ;start at top of pixel data! ($2000-9D00) -:clearloop dex - dex - stal SHR_SCREEN,x ;screen location - bne :clearloop ;loop until we've worked our way down to 0 - rts +_ClearToColor + ldx #$7D00 ;start at top of pixel data! ($2000-9D00) +:clearloop dex + dex + stal SHR_SCREEN,x ;screen location + bne :clearloop ;loop until we've worked our way down to 0 + rts ; Set a palette values -; A = palette number, X = palette address -SetPalette - and #$000F ; palette values are 0 - 15 and each palette is 32 bytes - asl - asl - asl - asl - asl - txy - tax +; A = high word of palette data pointer, X = low word of palette data pointer, Y = palette number +SetPalette ENT + phb ; save old data bank + pha ; push 16-bit value + plb ; pop 8-bit bank register + tya + jsr _SetPalette + plb ; pop the other half og the 16-bit push off + plb ; restore the original data bank + rtl -]idx equ 0 - lup 16 - lda: $0000+]idx,y - stal SHR_PALETTES+]idx,x -]idx equ ]idx+2 - --^ - rts +; A = palette number, X = palette address +_SetPalette + and #$000F ; palette values are 0 - 15 and each palette is 32 bytes + asl + asl + asl + asl + asl + txy + tax + +]idx equ 0 + lup 16 + lda: $0000+]idx,y + stal SHR_PALETTES+]idx,x +]idx equ ]idx+2 + --^ + rts ; Initialize the SCB -SetSCBs ldx #$0100 ;set all $100 scbs to A -:scbloop dex - dex - stal SHR_SCB,x - bne :scbloop - rts +_SetSCBs + ldx #$0100 ;set all $100 scbs to A +:scbloop dex + dex + stal SHR_SCB,x + bne :scbloop + rts ; Turn SHR screen On/Off -GrafOn sep #$20 - lda #$81 - stal NEW_VIDEO_REG - rep #$20 - rts +_GrafOn + sep #$20 + lda #$81 + stal NEW_VIDEO_REG + rep #$20 + rts -GrafOff sep #$20 - lda #$01 - stal NEW_VIDEO_REG - rep #$20 - rts +_GrafOff + sep #$20 + lda #$01 + stal NEW_VIDEO_REG + rep #$20 + rts ; Enable/Disable Shadowing. -ShadowOn sep #$20 - ldal SHADOW_REG - and #$F7 - stal SHADOW_REG - rep #$20 - rts +_ShadowOn + sep #$20 + ldal SHADOW_REG + and #$F7 + stal SHADOW_REG + rep #$20 + rts + +_ShadowOff + sep #$20 + ldal SHADOW_REG + ora #$08 + stal SHADOW_REG + rep #$20 + rts + +_GetVBL + sep #$20 + ldal VBL_HORZ_REG + asl + ldal VBL_VERT_REG + rol ; put V5 into carry bit, if needed. See TN #39 for details. + rep #$20 + and #$00FF + rts + +_WaitForVBL + sep #$20 +:wait1 ldal VBL_STATE_REG ; If we are already in VBL, then wait + bmi :wait1 +:wait2 ldal VBL_STATE_REG + bpl :wait2 ; spin until transition into VBL + rep #$20 + rts + + + + -ShadowOff sep #$20 - ldal SHADOW_REG - ora #$08 - stal SHADOW_REG - rep #$20 - rts -GetVBL sep #$20 - ldal VBL_HORZ_REG - asl - ldal VBL_VERT_REG - rol ; put V5 into carry bit, if needed. See TN #39 for details. - rep #$20 - and #$00FF - rts -WaitForVBL sep #$20 -:wait1 ldal VBL_STATE_REG ; If we are already in VBL, then wait - bmi :wait1 -:wait2 ldal VBL_STATE_REG - bpl :wait2 ; spin until transition into VBL - rep #$20 - rts diff --git a/src/Render.s b/src/Render.s index 22e6eba..0986fa5 100644 --- a/src/Render.s +++ b/src/Render.s @@ -86,13 +86,13 @@ _Render ; The code fields are locked in now and reder to be rendered - jsr ShadowOff + jsr _ShadowOff ; ldx #0 ; Blit the full virtual buffer to the screen ; ldy #8 ; jsr _BltRange - jsr ShadowOn + jsr _ShadowOn ; ldx #0 ; Expose the top 8 rows ; ldy #8 @@ -124,3 +124,4 @@ _Render stz DirtyBits rts + diff --git a/src/Script.s b/src/Script.s index 86bc2a1..62e6980 100644 --- a/src/Script.s +++ b/src/Script.s @@ -9,7 +9,7 @@ ; ; The COMMAND word has its bits defined as: ; -; bit 15 = 1 if the end of a sequece +; bit 15 = 1 if the end of a sequence ; bit 14 = 0 proceed to next action, 1 jump ; bit 13 = 0 (Reserved) ; bit 12 = 0 (Reserved) @@ -22,6 +22,7 @@ ; ----------------------------------------------------- ; $0002 SET_PALETTE_ENTRY ADDR COLOR ---- : Set the palette entry at ARG1 to the color in ARG2 ; $0004 SWAP_PALETTE_ENTRY ADDR1 ADDR2 ---- : Swap the palette entries in ADDR1 <-> ADDR2 +; $0006 SET_DYN_TILE TILE_ID DTILE_ID ---- : Copy data from TileData into Dynamic Tile Area ; $0010 CALLBACK LONG_ADDR PARAM : Call a user-defined function (JSL) with a parameter value in accumulator ; Start a new script @@ -37,16 +38,16 @@ StartScript ENT phk plb - phx ; Save the script array address + phx ; Save the script array address pha - lda #_DoScriptSeq ; Try to create a timer for this script + lda #_DoScriptSeq ; Try to create a timer for this script ldx #^_DoScriptSeq clc jsl AddTimer - bcs :err ; No timer slots available :( + bcs :err ; No timer slots available :( - tax ; Initialize the UserData with the command pointer + tax ; Initialize the UserData with the command pointer pla sta Timers+8,x pla @@ -56,117 +57,129 @@ StartScript ENT rtl :err - pla ; Pop the values and return with the carry flag set + pla ; Pop the values and return with the carry flag set pla plb rtl ; This routine executes script command until it encounters one with the STOP bit set. In some -; sense, the stop bit acts like a "yield" in high-levellanguages. -_DoScriptSeq - phx ; save the timer index; will need to update user data at the end - phb ; save the current data bank +; sense, the stop bit acts like a "yield" in high-level languages. - sep #$20 ; push the bank byte of the command list pointer on the stack +ARG1 equ 2 +ARG2 equ 4 +ARG3 equ 6 + +_DoScriptSeq + phx ; save the timer index; will need to update user data at the end + phb ; save the current data bank + + sep #$20 ; push the bank byte of the command list pointer on the stack lda Timers+10,x pha rep #$20 - lda Timers+8,x ; get the current address of the command sequence + lda Timers+8,x ; get the current address of the command sequence tax - plb ; pop the bank + plb ; pop the bank ; Now we are ready to process commands until reaching one with the STOP bit set. Each command ; is 8 bytes, so we just have to do a very simple fetch/execute/increment loop. The only ; exception is handling the JUMP bit which requires moving the script pc stored in the ; x-register. -:loop phx ; Save the command address +_dss_loop phx ; Save the command address + txy ; Cache in the y-register - lda: 0,x ; Load the command word - pha ; Stash it + lda: 0,x ; Load the command word + pha ; Stash it - and #$001E ; Only have 16 built-in command. Use the _UserCallback - tax ; command for custom functionality - jsr (:commands,x) + and #$001E ; Only have 16 built-in commands. Use the _UserCallback + tax ; command for custom functionality + jmp (_dss_commands,x) - lda 1,s ; Reload the command word +_dss_commands dw _Null,_SetPalEntry,_SwapPalEntry,_SetDTile,_Null,_Null,_Null,_Null + dw _UserCallback,_Null,_Null,_Null,_Null,_Null,_Null,_Null + +_dss_cmd_rtn + lda 1,s ; Reload the command word ; Move to the next instruction. If the JUMP bit is set, we move the address forward or ; backward N commands (8 bytes at a time). If the JUMP bit is not set, then just move ; to the next entry. - bit #$4000 ; Just do a fall through and set the jump offset to - bne :move_addr ; a hard-coded value of 1 if the jump bit is not set + bit #JUMP ; Just do a fall through and set the jump offset to + bne :move_addr ; a hard-coded value of 1 if the jump bit is not set :retry lda #$0100 -:move_addr and #$0F00 ; mask out the number of commands to move - beq :retry ; Don't allow zeros; will cause infinite loop. Just advance by one. +:move_addr and #$0F00 ; mask out the number of commands to move + beq :retry ; Don't allow zeros; will cause infinite loop. Just advance by one. - xba ; put it in the low byte - cmp #$0008 ; Sign-extend the 4-bit value + xba ; put it in the low byte + cmp #$0008 ; Sign-extend the 4-bit value bcc *+5 ora #$FFF0 - asl ; multiply by 8 + asl ; multiply by 8 asl asl clc - adc 3,s ; add it to the saved command address + adc 3,s ; add it to the saved command address sta 3,s ; Check to see if we stop on this instruction, or continue executing commands - pla ; Reload the command word - plx ; Pop off the update command address + pla ; Reload the command word + plx ; Pop off the update command address - bit #$8000 ; If the stop bit is set, we're done with this sequence - beq :loop ; Otherwise, keep going and fetch the next command word + bit #YIELD ; If the stop bit is set, we're done with this sequence + beq _dss_loop ; Otherwise, keep going and fetch the next command word - txa ; save the current command address - plb ; restore the data bank and the timer index + txa ; save the current command address + plb ; restore the data bank and the timer index plx - sta Timers+8,x ; store the command address back into the timer user data space + sta Timers+8,x ; store the command address back into the timer user data space rtl -:commands dw _Null,_SetPalEntry,_SwapPalEntry,_Null,_Null,_Null,_Null,_Null - dw _UserCallback,_Null,_Null,_Null,_Null,_Null,_Null,_Null - -ARG1 equ 2 -ARG2 equ 4 -ARG3 equ 6 - ; Implementation of the built-in commands -_Null rts +_Null brl _dss_cmd_rtn _SetPalEntry - txy ldx: ARG1,y lda: ARG2,y stal SHR_PALETTES,x - rts + brl _dss_cmd_rtn -_SwapPalEntry txy - - ldx: ARG1,y ; Load palette values +_SwapPalEntry + ldx: ARG1,y ; Load palette values ldal SHR_PALETTES,x pha ldx: ARG2,y ldal SHR_PALETTES,x - ldx: ARG1,y ; and swap + ldx: ARG1,y ; and swap stal SHR_PALETTES,x ldx: ARG2,y pla stal SHR_PALETTES,x - rts + brl _dss_cmd_rtn -_UserCallback lda: ARG1,x +_SetDTile + ldx: ARG1,y + lda: ARG2,y + tay + jsl CopyTileToDyn + brl _dss_cmd_rtn + +_UserCallback + lda: ARG1,y sta :dispatch+1 - lda: ARG1+1,x + lda: ARG1+1,y sta :dispatch+2 - lda: ARG3,x + lda: ARG3,y :dispatch jsl $000000 - rts + brl _dss_cmd_rtn + + + diff --git a/src/TileMap.s b/src/TileMap.s index 31285dc..bed81e4 100644 --- a/src/TileMap.s +++ b/src/TileMap.s @@ -316,7 +316,7 @@ _UpdateBG0TileMap ; Handle fringe tiles -- if the fringe bit is set, then we need to get the fringe tile index ; and merge the tiles before rendering - bit #$TILE_FRINGE_BIT + bit #TILE_FRINGE_BIT beq :no_fringe jsr _GetTileAddr tax @@ -675,3 +675,4 @@ _DrawRectBG1 pla rts + diff --git a/src/Timer.s b/src/Timer.s index 8a301d1..2a39a39 100644 --- a/src/Timer.s +++ b/src/Timer.s @@ -29,6 +29,9 @@ TIMER_REC_SIZE equ 16 lastTick ds 2 Timers ds TIMER_REC_SIZE*MAX_TIMERS +GetVBLTicks ENT + jsr _GetVBLTicks + rtl _GetVBLTicks PushLong #0 _GetTick @@ -150,6 +153,12 @@ DoTimers ENT sec sbc lastTick stx lastTick + +; We don't want times to fire excessively. If the timer has nt been evaluated for over +; one second, then just skip processing and wait for the next call. + cmp #60 + bcs :exit + jsr _DoTimers :exit plb @@ -196,9 +205,9 @@ _DoTimers :skip txa clc - adc #8 + adc #TIMER_REC_SIZE tax - cpx #8*MAX_TIMERS + cpx #{TIMER_REC_SIZE*MAX_TIMERS} bcc :loop pla @@ -227,6 +236,24 @@ _DoTimers + + + + + + + + + + + + + + + + + + diff --git a/src/blitter/Template.s b/src/blitter/Template.s index ea35e44..c80ec81 100644 --- a/src/blitter/Template.s +++ b/src/blitter/Template.s @@ -118,7 +118,7 @@ SetScreenRect sty ScreenHeight ; Save the screen height ; Clear the SHR screen and then infill the defined field FillScreen lda #0 - jsr ClearToColor + jsr _ClearToColor ldy ScreenY0 :yloop @@ -272,6 +272,48 @@ SetConst ; Need a blank line here, sta: $0000,y :bottom rts +; SetDPAddrs +; +; A = absolute address (largest) +; Y = offset +; +; Initializes a bank of direct page offsets +SetDPAddrs + lda #$0800 + sta $F000,y + lda #$0700 + sta $E000,y + lda #$0600 + sta $D000,y + lda #$0500 + sta $C000,y + lda #$0400 + sta $B000,y + lda #$0300 + sta $A000,y + lda #$0200 + sta $9000,y + lda #$0100 + sta: $8000,y + + lda #$0800 + sta $7000,y + lda #$0700 + sta $6000,y + lda #$0600 + sta $5000,y + lda #$0500 + sta $4000,y + lda #$0400 + sta $3000,y + lda #$0300 + sta $2000,y + lda #$0200 + sta $1000,y + lda #$0100 + sta: $0000,y + rts + ; SetAbsAddrs ; ; A = absolute address (largest) @@ -361,11 +403,17 @@ BuildBank plb plb - lda #$F000+{TWO_LYR_ENTRY} ; Set the address from each line to the next +; Change the patched value to one of DP_ENTRY, TWO_LYR_ENTRY or ONE_LYR_ENTRY based on the capabilities +; that the engine needs. + + lda #$F000+{DP_ENTRY} ; Set the address from each line to the next ldy #CODE_EXIT+1 ldx #15*2 jsr SetAbsAddrs + ldy #DP_ADDR + jsr SetDPAddrs + ldy #$F000+CODE_EXIT ; Patch the last line with a JML to go to the next bank lda #{$005C+{TWO_LYR_ENTRY}*256} sta [:target],y @@ -480,7 +528,7 @@ odd_entry jmp $0100 ; unconditionally jump in r_is_jmp sep #$41 ; Set the C and V flags which tells a snippet to push only the low byte long_2 ldal entry_jmp+1-base long_3 stal *+5-base - jmp $0000 ; Jumps into the exception code, which return to r_jmp_rtn + jmp $0000 ; Jumps into the exception code, which returns to r_jmp_rtn ; The next labels are special, in that they are entry points into special subroutines. They are special ; because they are within the first 256 bytes of each code field, which allows them to be selectable @@ -530,7 +578,7 @@ odd_exit ldal l_is_jmp+1-base sep #$20 long_6 ldal l_is_jmp+3-base ; get the high byte of the PEA operand -; Fall-through when we have to push a byte on the left edge. Must be 8-bit on entry. Optimize +; Fall-through when we have to push a byte on the left edge. Must be 8-bit on entry. Optimized ; for the PEA $0000 case -- only 19 cycles to handle the edge, so pretty good :left_byte pha @@ -580,7 +628,7 @@ epilogue_1 tsc ; a. Overflow set -> Low 8-bit write and return to the next code field operand ; b. Overflow clear -> High 8-bit write and exit the line ; c. Always clear the Carry flags. It's actually OK to leave the overflow bit in -; its passed state, because having the carry bit clear prevent evaluation of +; its passed state, because having the carry bit clear prevents evaluation of ; the V bit. ; ; Snippet Samples: @@ -637,3 +685,11 @@ snippets lup 82 ]index equ ]index+1 --^ top + + + + + + + + diff --git a/src/blitter/Tiles.s b/src/blitter/Tiles.s index 383a404..02edf81 100644 --- a/src/blitter/Tiles.s +++ b/src/blitter/Tiles.s @@ -48,7 +48,7 @@ TILE_CTRL_MASK equ $1E00 ; Deliberatel ; Low-level function to take a tile descriptor and return the address in the tiledata ; bank. This is not too useful in the fast-path because the fast-path does more -; incremental calculations, but it is handy for other utilitiy function +; incremental calculations, but it is handy for other utility functions ; ; A = tile descriptor ; @@ -58,7 +58,7 @@ _GetTileAddr bit #2*TILE_HFLIP_BIT ; Check if the horizontal flip bit is set beq :no_flip inc ; Set the LSB -:no_flip and #$02FF ; Mask out non-id bits +:no_flip and #TILE_ID_MASK ; Mask out non-id bits asl ; x4 asl ; x8 asl ; x16 @@ -529,7 +529,24 @@ DynamicTile rep #$20 rts -; Helper function to copy tile data to the appropriate location in Bank 0 +; Helper functions to copy tile data to the appropriate location in Bank 0 +; X = tile ID +; Y = dynamic tile ID +CopyTileToDyn ENT + txa + jsr _GetTileAddr + tax + + tya + and #$001F ; Maximum of 32 dynamic tiles + asl + asl ; 4 bytes per page + adc BlitterDP ; Add to the bank 00 base address + adc #$0100 ; Go to the next page + tay + jsr CopyTileDToDyn ; Copy the tile data + rtl + ; X = address of tile ; Y = tile address in bank 0 CopyTileDToDyn @@ -681,7 +698,8 @@ dynamic pla asl asl - xba ; Undo the x128 we just need x2 + asl + xba ; Undo the x128 we just need x4 plx brl DynamicTile @@ -824,3 +842,21 @@ _CopyBG1Tile plx ; pop the x-register plb ; restore the data bank and return rts + + + + + + + + + + + + + + + + + + diff --git a/tools/png2iigs.js b/tools/png2iigs.js index 38dc2f2..0be657c 100644 --- a/tools/png2iigs.js +++ b/tools/png2iigs.js @@ -133,6 +133,7 @@ async function main(argv) { startIndex = getArg(argv, '--start-index', x => parseInt(x, 10), 0); asTileData = getArg(argv, '--as-tile-data', null, 0); + maxTiles = getArg(argv, '--max-tiles', x => parseInt(x, 10), 64); transparentColor = getArg(argv, '--transparent-color-index', x => parseInt(x, 10), -1); transparentIndex = transparentColor; @@ -175,7 +176,7 @@ async function main(argv) { if (buff && argv[1]) { if (asTileData) { - writeToTileDataSource(buff, png.width / 2); + writeToTileDataSource(buff, png.width / 2, maxTiles); } else { console.log(`; Writing to output file ${argv[1]}`); @@ -355,14 +356,12 @@ function buildMerlinCodeForTiles(tiles, label='tiledata') { return sb.toString(); } -function writeToTileDataSource(buff, width) { +function writeToTileDataSource(buff, width, MAX_TILES = 64) { console.log('tiledata ENT'); console.log(); console.log('; Reserved space (tile 0 is special...'); console.log(' ds 128'); - const MAX_TILES = 64; - let count = 0; for (let y = 0; ; y += 8) { for (let x = 0; x < width; x += 4, count += 1) { diff --git a/tools/tiled2iigs.js b/tools/tiled2iigs.js index 5163a5c..db36ba5 100644 --- a/tools/tiled2iigs.js +++ b/tools/tiled2iigs.js @@ -102,7 +102,7 @@ function writeTileAnimations(filename, animations) { // Create code to copy it into the dynamic tile index location init.appendLine(' ldx #' + firstTileId); init.appendLine(' ldy #' + animation.dynTileId); - init.appendLine(' jsr CopyTileToDyn'); + init.appendLine(' jsl CopyTileToDyn'); } // Next, create the scripts to change the tile data based on the configured ticks delays. @@ -122,13 +122,30 @@ function writeTileAnimations(filename, animations) { init.appendLine(` ldy #${numTicks}`); init.appendLine(` jsl StartScript`); - scripts.appendLine(label); - for (let i = 0; i < frames.length ; i += 1) { - const last = (i === (frames.length - 1)); - const command = 'YIELD+SET_DYN_TILE' + (last ? '+JUMP' : ''); - const jump = last ? `,-${frames.length - 1}` : ''; + // bit 15 = 1 if the end of a sequence + // bit 14 = 0 proceed to next action, 1 jump + // bit 13 = 0 (Reserved) + // bit 12 = 0 (Reserved) + // bit 11 - 8 = signed jump displacement F = -1, E = -2, D = -3, C = -4, B = -5, A = -6, 9 = -7, 8 = -8, 7 = 7, 6 = 6, .... + // bit 8 - 0 = command number + const YIELD = 0x8000; + const JUMP = 0x4000; + const SET_DYN_TILE = 0x0006; // Command number - scripts.appendLine(` dw ${command},${frames[i].tileId},${animation.dynTileId}${jump}`); + scripts.appendLine(label); + const lastValidIndex = frames.length - 1; + for (let i = 0; i < frames.length ; i += 1) { + const isLast = (i === lastValidIndex); + let command = YIELD | SET_DYN_TILE; + if (isLast) { + command |= JUMP; + const offset = ((0x0010 - lastValidIndex) & 0x000F) * 256; + command |= offset; + } + command = '$' + toHex(command, 4); + + // scripts.appendLine(` ScriptStep #${command};#${frames[i].tileId};#${animation.dynTileId};#0`); + scripts.appendLine(` dw ${command},${frames[i].tileId},${animation.dynTileId},0`); } } @@ -242,11 +259,11 @@ async function main(argv) { console.log(`Writing tiles to ${outputFilename}`); writeTiles(outputFilename, tiles); console.log(`Writing complete`); - + // Look for tiles with animation sequences. If found, this information need to be propagated // to the tilemap export to mark those tile IDs as Dynamic Tiles. // - // Exporting the "animations" actually created two code stubs; one to copy the first + // Exporting the "animations" actually creates two code stubs; one to copy the first // tile of the animation into the dynamic tile space during initialization and a second // that created the timer callbacks that replace the tile data based on the time animation // rate. We only have a VBL timer, so the animation time is rounded to the nearest @@ -257,7 +274,12 @@ async function main(argv) { writeTileAnimations(animationFilename, animations); console.log(`Writing complete`); + // Modify the entries in the tileset that are animated + for (const animation of animations) { + tiles[animation.tileId].animation = animation; + } } + bg0TileSet = tiles; } @@ -351,6 +373,7 @@ function emitLayerData(sb, layer, tileset) { */ function convertTileID(tileId, tileset) { const GTE_MASK_BIT = 0x1000; + const GTE_DYN_BIT = 0x0800; const GTE_VFLIP_BIT = 0x0400; const GTE_HFLIP_BIT = 0x0200; const TILED_VFLIP_BIT = 0x40000000; @@ -375,5 +398,16 @@ function convertTileID(tileId, tileset) { // because a special zero tile is inserted, but we have to manually adjust here const mask_bit = !tileset[tileIndex - 1].isSolid; - return (tileId & 0x1FFFFFFF) + (mask_bit ? GTE_MASK_BIT : 0) + (hflip ? GTE_HFLIP_BIT : 0) + (vflip ? GTE_VFLIP_BIT : 0); + // Build up a partial set of control bits + let control_bits = (mask_bit ? GTE_MASK_BIT : 0) + (hflip ? GTE_HFLIP_BIT : 0) + (vflip ? GTE_VFLIP_BIT : 0); + + // Check if this is an animated tile. If so, substitute the index of the animation slot for + // the tile ID + if (tileset[tileIndex - 1].animation) { + const animation = tileset[tileIndex - 1].animation; + tileId = animation.dynTileId; + control_bits = GTE_DYN_BIT; + } + + return (tileId & 0x1FFFFFFF) + control_bits; } \ No newline at end of file