diff --git a/demos/lite/.gitignore b/demos/lite/.gitignore new file mode 100644 index 0000000..ef9cf26 --- /dev/null +++ b/demos/lite/.gitignore @@ -0,0 +1 @@ +GTEToolDemo \ No newline at end of file diff --git a/demos/lite/App.Main.s b/demos/lite/App.Main.s new file mode 100644 index 0000000..cc0f708 --- /dev/null +++ b/demos/lite/App.Main.s @@ -0,0 +1,333 @@ + REL + DSK MAINSEG + + use Locator.Macs + use Load.Macs + use Mem.Macs + use Misc.Macs + use Util.Macs + use EDS.GSOS.Macs + use GTE.Macs + + mx %00 + +TSZelda EXT ; tileset buffer + +ScreenX equ 0 +ScreenY equ 2 +Tmp0 equ 4 +Tmp1 equ 6 +KeyState equ 8 +Selected equ 10 +Flips equ 12 +DTile equ 14 +Tmp2 equ 16 +ScreenWidth equ 18 +ScreenHeight equ 20 +SpriteFlags equ 22 +frameCount equ 24 +OldOneSecondCounter equ 26 +SpriteAddr equ 28 +RenderMode equ 30 + +; Control modes +DefaultMode equ RENDER_WITH_SHADOWING +SlowSprites equ 0 + +; Typical init + phk + plb + + sta MyUserId ; GS/OS passes the memory manager user ID for the application into the program + tdc + sta MyDirectPage ; Keep a copy for the overlay callback + + _MTStartUp ; GTE requires the miscellaneous toolset to be running + + lda #ENGINE_MODE_USER_TOOL + jsr GTEStartUp ; Load and install the GTE User Tool + +; Init local variables + + stz frameCount + +; Initialize the graphics screen to a 256x160 playfield + + pea #160 + pea #200 + _GTESetScreenMode + +; Load a tileset + + pea 0 + pea 360 + pea #^TSZelda + pea #TSZelda + _GTELoadTileSet + +; Set the palette + pea $0000 + pea #^palette + pea #palette + _GTESetPalette + + jsr SetLimits + + pha + _GTEGetSeconds + pla + sta OldOneSecondCounter + +; Manually fill in the 41x26 tiles of the TileStore with a test pattern of trees + + jsr _fillTileStore + + pha + pha + pea liteBlitter + _GTEGetAddress + pla + plx + +; Set the screen coordinates + + lda #0 + sta ScreenX + lda #0 + sta ScreenY + + stz Selected + stz Flips + +; Very simple actions +:evt_loop + pha ; space for result, with pattern + _GTEReadControl + pla + + jsr HandleKeys ; Do the generic key handlers + bcs :do_more + brl :do_render +:do_more + and #$007F + +:do_render jsr :next_frame + brl :evt_loop + +:next_frame +; inc ScreenX +; inc ScreenY +; pei ScreenX +; pei ScreenY +; _GTESetBG0Origin + + pea $FFFE + _GTERender + +; Update the performance counters + + inc frameCount + pha + _GTEGetSeconds + pla + cmp OldOneSecondCounter + beq :noudt + sta OldOneSecondCounter + jsr UdtOverlay + stz frameCount +:noudt + rts + +; Shut down everything +Exit + _GTEShutDown + _QuitGS qtRec +qtRec adrl $0000 + da $00 + +; Called by StartUp function callbacks when the screen size changes +SetLimits + pha ; Allocate space for x, y, width, height + pha + pha + pha + _GTEGetScreenInfo + pla + pla ; Discard screen corner + pla + sec + sbc #8 + sta ScreenWidth ; Pre-adjust to keep sprites on the visible playfield (for compiled sprites) + pla + sec + sbc #16 + sta ScreenHeight + rts + +_fillTileStore + sta Tmp2 + stz Tmp0 +:oloop + stz Tmp1 +:iloop + ldx Tmp1 + ldy Tmp0 + jsr _drawTree + + lda Tmp1 + clc + adc #2 + sta Tmp1 + cmp #40 + bcc :iloop + + lda Tmp0 + clc + adc #2 + sta Tmp0 + cmp #25 + bcc :oloop + rts + +; Tile 65 Tile 66 +; Tile 97 Tile 98 + +_drawTreeFront + phx + phy + pea #65+TILE_PRIORITY_BIT + + inx + phx + phy + pea #66+TILE_PRIORITY_BIT + + iny + phx + phy + pea #98+TILE_PRIORITY_BIT + + dex + phx + phy + pea #97+TILE_PRIORITY_BIT + + _GTESetTile + _GTESetTile + _GTESetTile + _GTESetTile + rts + +_drawTree + phx + phy + pea #65 + + inx + phx + phy + pea #66 + + iny + phx + phy + pea #98 + + dex + phx + phy + pea #97 + + _GTESetTile + _GTESetTile + _GTESetTile + _GTESetTile + rts + +_drawTreeH + phx + phy + pea #66+TILE_HFLIP_BIT + + inx + phx + phy + pea #65+TILE_HFLIP_BIT + + iny + phx + phy + pea #97+TILE_HFLIP_BIT + + dex + phx + phy + pea #98+TILE_HFLIP_BIT + + _GTESetTile + _GTESetTile + _GTESetTile + _GTESetTile + rts + +_drawTreeV + phx + phy + pea #97+TILE_VFLIP_BIT + + inx + phx + phy + pea #98+TILE_VFLIP_BIT + + iny + phx + phy + pea #66+TILE_VFLIP_BIT + + dex + phx + phy + pea #65+TILE_VFLIP_BIT + + _GTESetTile + _GTESetTile + _GTESetTile + _GTESetTile + rts + +_drawTreeHV + phx + phy + pea #98+TILE_VFLIP_BIT+TILE_HFLIP_BIT + + inx + phx + phy + pea #97+TILE_VFLIP_BIT+TILE_HFLIP_BIT + + iny + phx + phy + pea #65+TILE_VFLIP_BIT+TILE_HFLIP_BIT + + dex + phx + phy + pea #66+TILE_VFLIP_BIT+TILE_HFLIP_BIT + + _GTESetTile + _GTESetTile + _GTESetTile + _GTESetTile + rts + +MyDirectPage ds 2 +MyUserId ds 2 +palette dw $0000,$08C1,$0C41,$0F93,$0777,$0FDA,$00A0,$0000,$0D20,$0FFF,$0FD7,$0F59,$0000,$01CE,$0EDA,$0EEE + + PUT ../kfest-2022/StartUp.s + PUT ../shell/Overlay.s + +; PUT App.Msg.s +; PUT font.s diff --git a/demos/lite/App.Msg.s b/demos/lite/App.Msg.s new file mode 100644 index 0000000..4afc4dd --- /dev/null +++ b/demos/lite/App.Msg.s @@ -0,0 +1,105 @@ +HexToChar dfb '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' + +; Convert a byte (Acc) into a string and store at (Y) +ByteToString and #$00FF + sep #$20 + pha + lsr + lsr + lsr + lsr + and #$0F + tax + ldal HexToChar,x + sta: $0000,y + + pla + and #$0F + tax + ldal HexToChar,x + sta: $0001,y + + rep #$20 + rts + +; Convert a word (Acc) into a hexadecimal string and store at (Y) +WordToString pha + bra Addr2ToString + +; Pass in Acc = High, X = low +Addr3ToString phx + jsr ByteToString + iny + iny + lda 1,s +Addr2ToString xba + jsr ByteToString + iny + iny + pla + jsr ByteToString + rts + +; A=Value +; X=Screen offset +DrawWord phx ; Save register value + phy + ldy #WordBuff+1 + jsr WordToString + ply + plx + lda #WordBuff + jsr DrawString + rts + +WordBuff str '0000' +Addr3Buff str '000000' ; str adds leading length byte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demos/lite/App.s b/demos/lite/App.s new file mode 100644 index 0000000..43a98bd --- /dev/null +++ b/demos/lite/App.s @@ -0,0 +1,15 @@ +; IIgs GTE Lite rendering test + + TYP $B3 ; S16 file + DSK GTELiteDemo + XPL + +; Segment #1 -- Main execution block + + ASM App.Main.s + SNA Main + +; Segment #2 -- Tileset + + ASM Zelda.TileSet.s + SNA TSET diff --git a/demos/lite/Zelda.TileSet.s b/demos/lite/Zelda.TileSet.s new file mode 100644 index 0000000..c1f93ef --- /dev/null +++ b/demos/lite/Zelda.TileSet.s @@ -0,0 +1,13687 @@ +; startIndex = 0 +; Palette: +; $0F0F,$08C1,$0C41,$0F93,$0777,$0FDA,$00A0,$0000,$0D20,$0FFF,$023E +; Converting to BG0 format... +TSZelda ENT + +; Reserved space (tile 0 is special... + ds 128 +; Tile ID 1 +; From image coordinates 0, 0 + hex 00000111 + hex 00001111 + hex 00301222 + hex 00302222 + hex 00332313 + hex 00332323 + hex 00033333 + hex 00011332 + + hex fffff000 + hex ffff0000 + hex ff0f0000 + hex ff0f0000 + hex ff000000 + hex ff000000 + hex fff00000 + hex fff00000 + + hex 11100000 + hex 11110000 + hex 22210300 + hex 22220300 + hex 31323300 + hex 32323300 + hex 33333000 + hex 23311000 + + hex 000fffff + hex 0000ffff + hex 0000f0ff + hex 0000f0ff + hex 000000ff + hex 000000ff + hex 00000fff + hex 00000fff + +; Tile ID 2 +; From image coordinates 8, 0 + hex 11100000 + hex 11110000 + hex 22210300 + hex 22220300 + hex 31323300 + hex 32323300 + hex 33333200 + hex 23311200 + + hex 000fffff + hex 0000ffff + hex 0000f0ff + hex 0000f0ff + hex 000000ff + hex 000000ff + hex 000000ff + hex 000000ff + + hex 00000111 + hex 00001111 + hex 00301222 + hex 00302222 + hex 00332313 + hex 00332323 + hex 00233333 + hex 00211332 + + hex fffff000 + hex ffff0000 + hex ff0f0000 + hex ff0f0000 + hex ff000000 + hex ff000000 + hex ff000000 + hex ff000000 + +; Tile ID 3 +; From image coordinates 16, 0 + hex 00000111 + hex 00001111 + hex 00301222 + hex 00302222 + hex 00332313 + hex 00332323 + hex 00033333 + hex 00001332 + + hex fffff000 + hex ffff0000 + hex ff0f0000 + hex ff0f0000 + hex ff000000 + hex ff000000 + hex fff00000 + hex ffff0000 + + hex 11100000 + hex 11110000 + hex 22210300 + hex 22220300 + hex 31323300 + hex 32323300 + hex 33333000 + hex 23310000 + + hex 000fffff + hex 0000ffff + hex 0000f0ff + hex 0000f0ff + hex 000000ff + hex 000000ff + hex 00000fff + hex 0000ffff + +; Tile ID 4 +; From image coordinates 24, 0 + hex 11100000 + hex 11110000 + hex 22210300 + hex 22220300 + hex 31323300 + hex 32323300 + hex 33333200 + hex 23312200 + + hex 000fffff + hex 0000ffff + hex 0000f0ff + hex 0000f0ff + hex 000000ff + hex 000000ff + hex 000000ff + hex 000000ff + + hex 00000111 + hex 00001111 + hex 00301222 + hex 00302222 + hex 00332313 + hex 00332323 + hex 00233333 + hex 00221332 + + hex fffff000 + hex ffff0000 + hex ff0f0000 + hex ff0f0000 + hex ff000000 + hex ff000000 + hex ff000000 + hex ff000000 + +; Tile ID 5 +; From image coordinates 32, 0 + hex 00000111 + hex 00011111 + hex 01113112 + hex 11113322 + hex 10113332 + hex 00122332 + hex 00022233 + hex 00001111 + + hex fffff000 + hex fff00000 + hex f0000000 + hex 00000000 + hex 0f000000 + hex ff000000 + hex fff00000 + hex ffff0000 + + hex 11100000 + hex 11111000 + hex 21131110 + hex 22331111 + hex 23331101 + hex 23322100 + hex 33222000 + hex 11110000 + + hex 000fffff + hex 00000fff + hex 0000000f + hex 00000000 + hex 000000f0 + hex 000000ff + hex 00000fff + hex 0000ffff + +; Tile ID 6 +; From image coordinates 40, 0 + hex 10000000 + hex 22220000 + hex 22222000 + hex 22220000 + hex 33130020 + hex 33233320 + hex 33330020 + hex 33330020 + + hex 0fffffff + hex 0000ffff + hex 00000fff + hex 0000ffff + hex 0000ff0f + hex 0000000f + hex 0000ff0f + hex 0000ff0f + + hex 00000001 + hex 00002222 + hex 00022222 + hex 00002222 + hex 02003133 + hex 02333233 + hex 02003333 + hex 02003333 + + hex fffffff0 + hex ffff0000 + hex fff00000 + hex ffff0000 + hex f0ff0000 + hex f0000000 + hex f0ff0000 + hex f0ff0000 + +; Tile ID 7 +; From image coordinates 48, 0 + hex 00000000 + hex 00000111 + hex 00011111 + hex 01113112 + hex 11113322 + hex 10113332 + hex 00122332 + hex 00022233 + + hex ffffffff + hex fffff000 + hex fff00000 + hex f0000000 + hex 00000000 + hex 0f000000 + hex ff000000 + hex fff00000 + + hex 00000000 + hex 11100000 + hex 11111000 + hex 21131110 + hex 22331111 + hex 23331101 + hex 23322100 + hex 33222000 + + hex ffffffff + hex 000fffff + hex 00000fff + hex 0000000f + hex 00000000 + hex 000000f0 + hex 000000ff + hex 00000fff + +; Tile ID 8 +; From image coordinates 56, 0 + hex 00000000 + hex 10000000 + hex 22220000 + hex 22222000 + hex 22220000 + hex 33130000 + hex 33233300 + hex 33330200 + + hex ffffffff + hex 0fffffff + hex 0000ffff + hex 00000fff + hex 0000ffff + hex 0000ffff + hex 000000ff + hex 0000f0ff + + hex 00000000 + hex 00000001 + hex 00002222 + hex 00022222 + hex 00002222 + hex 00003133 + hex 00333233 + hex 00203333 + + hex ffffffff + hex fffffff0 + hex ffff0000 + hex fff00000 + hex ffff0000 + hex ffff0000 + hex ff000000 + hex ff0f0000 + +; Tile ID 9 +; From image coordinates 64, 0 + hex 00000111 + hex 00001111 + hex 00301111 + hex 00311111 + hex 00321111 + hex 00332211 + hex 00032221 + hex 00021222 + + hex fffff000 + hex ffff0000 + hex ff0f0000 + hex ff000000 + hex ff000000 + hex ff000000 + hex fff00000 + hex fff00000 + + hex 11100000 + hex 11110000 + hex 11110300 + hex 11111300 + hex 11112300 + hex 11223300 + hex 12223000 + hex 22212000 + + hex 000fffff + hex 0000ffff + hex 0000f0ff + hex 000000ff + hex 000000ff + hex 000000ff + hex 00000fff + hex 00000fff + +; Tile ID 10 +; From image coordinates 72, 0 + hex 11100000 + hex 11110000 + hex 11110300 + hex 11111300 + hex 11112300 + hex 11223300 + hex 12223000 + hex 22212000 + + hex 000fffff + hex 0000ffff + hex 0000f0ff + hex 000000ff + hex 000000ff + hex 000000ff + hex 00000fff + hex 00000fff + + hex 00000111 + hex 00001111 + hex 00301111 + hex 00311111 + hex 00321111 + hex 00332211 + hex 00032221 + hex 00021222 + + hex fffff000 + hex ffff0000 + hex ff0f0000 + hex ff000000 + hex ff000000 + hex ff000000 + hex fff00000 + hex fff00000 + +; Tile ID 11 +; From image coordinates 80, 0 + hex 00000111 + hex 00001111 + hex 00301111 + hex 00311111 + hex 00321111 + hex 00332211 + hex 00032221 + hex 00021222 + + hex fffff000 + hex ffff0000 + hex ff0f0000 + hex ff000000 + hex ff000000 + hex ff000000 + hex fff00000 + hex fff00000 + + hex 11100000 + hex 11110000 + hex 11110300 + hex 11111300 + hex 11112300 + hex 11223300 + hex 12223000 + hex 22212000 + + hex 000fffff + hex 0000ffff + hex 0000f0ff + hex 000000ff + hex 000000ff + hex 000000ff + hex 00000fff + hex 00000fff + +; Tile ID 12 +; From image coordinates 88, 0 + hex 11100000 + hex 11110000 + hex 11110300 + hex 11111300 + hex 11112300 + hex 11223300 + hex 12223000 + hex 22212000 + + hex 000fffff + hex 0000ffff + hex 0000f0ff + hex 000000ff + hex 000000ff + hex 000000ff + hex 00000fff + hex 00000fff + + hex 00000111 + hex 00001111 + hex 00301111 + hex 00311111 + hex 00321111 + hex 00332211 + hex 00032221 + hex 00021222 + + hex fffff000 + hex ffff0000 + hex ff0f0000 + hex ff000000 + hex ff000000 + hex ff000000 + hex fff00000 + hex fff00000 + +; Tile ID 13 +; From image coordinates 96, 0 + hex 00022011 + hex 00232111 + hex 02231122 + hex 22331222 + hex 22332313 + hex 32232323 + hex 03221332 + hex 00321132 + + hex fff00f00 + hex ff000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex ff000000 + + hex 11022000 + hex 11123200 + hex 22113220 + hex 22213322 + hex 31323322 + hex 32323223 + hex 23312230 + hex 23112300 + + hex 00f00fff + hex 000000ff + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 000000ff + +; Tile ID 14 +; From image coordinates 104, 0 + hex 11100000 + hex 11110000 + hex 22111000 + hex 22211030 + hex 31221330 + hex 32321300 + hex 23333000 + hex 23322000 + + hex 000fffff + hex 0000ffff + hex 00000fff + hex 00000f0f + hex 0000000f + hex 000000ff + hex 00000fff + hex 00000fff + + hex 00000111 + hex 00001111 + hex 00011122 + hex 03011222 + hex 03312213 + hex 00312323 + hex 00033332 + hex 00022332 + + hex fffff000 + hex ffff0000 + hex fff00000 + hex f0f00000 + hex f0000000 + hex ff000000 + hex fff00000 + hex fff00000 + +; Tile ID 15 +; From image coordinates 112, 0 + hex 00000000 + hex 00000011 + hex 00001111 + hex 00011311 + hex 00011332 + hex 00111333 + hex 01112233 + hex 01002223 + + hex ffffffff + hex ffffff00 + hex ffff0000 + hex fff00000 + hex fff00000 + hex ff000000 + hex f0000000 + hex f0ff0000 + + hex 00000000 + hex 11000000 + hex 11110000 + hex 11311000 + hex 23311000 + hex 33311100 + hex 33221110 + hex 32220010 + + hex ffffffff + hex 00ffffff + hex 0000ffff + hex 00000fff + hex 00000fff + hex 000000ff + hex 0000000f + hex 0000ff0f + +; Tile ID 16 +; From image coordinates 120, 0 + hex 00000000 + hex 11000000 + hex 12222000 + hex 22222200 + hex 22222000 + hex 23313000 + hex 23323330 + hex 33333000 + + hex ffffffff + hex 00ffffff + hex 00000fff + hex 000000ff + hex 00000fff + hex 00000fff + hex 0000000f + hex 00000fff + + hex 00000000 + hex 00000011 + hex 00022221 + hex 00222222 + hex 00022222 + hex 00031332 + hex 03332332 + hex 00033333 + + hex ffffffff + hex ffffff00 + hex fff00000 + hex ff000000 + hex fff00000 + hex fff00000 + hex f0000000 + hex fff00000 + +; Tile ID 17 +; From image coordinates 128, 0 + hex 00021111 + hex 03011111 + hex 03211111 + hex 03311111 + hex 02321111 + hex 02322111 + hex 02212212 + hex 02211222 + + hex fff00000 + hex f0f00000 + hex f0000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex f0000000 + + hex 11112000 + hex 11111030 + hex 11111230 + hex 11111330 + hex 11112320 + hex 11122320 + hex 21221220 + hex 22211220 + + hex 00000fff + hex 00000f0f + hex 0000000f + hex 0000000f + hex 0000000f + hex 0000000f + hex 0000000f + hex 0000000f + +; Tile ID 18 +; From image coordinates 136, 0 + hex 10000000 + hex 11000000 + hex 11100000 + hex 11103000 + hex 11233000 + hex 22230003 + hex 22130032 + hex 21222322 + + hex 0fffffff + hex 00ffffff + hex 000fffff + hex 000f0fff + hex 00000fff + hex 0000fff0 + hex 0000ff00 + hex 00000000 + + hex 00000001 + hex 00000011 + hex 00000111 + hex 00030111 + hex 00033211 + hex 30003222 + hex 23003122 + hex 22322212 + + hex fffffff0 + hex ffffff00 + hex fffff000 + hex fff0f000 + hex fff00000 + hex 0fff0000 + hex 00ff0000 + hex 00000000 + +; Tile ID 19 +; From image coordinates 144, 0 + hex 00222000 + hex 00222000 + hex 00222000 + hex 00222000 + hex 00222000 + hex 00222000 + hex 00222000 + hex 00222000 + + hex ff000fff + hex ff000fff + hex ff000fff + hex ff000fff + hex ff000fff + hex ff000fff + hex ff000fff + hex ff000fff + + hex 00022200 + hex 00022200 + hex 00022200 + hex 00022200 + hex 00022200 + hex 00022200 + hex 00022200 + hex 00022200 + + hex fff000ff + hex fff000ff + hex fff000ff + hex fff000ff + hex fff000ff + hex fff000ff + hex fff000ff + hex fff000ff + +; Tile ID 20 +; From image coordinates 152, 0 + hex 00222000 + hex 00222000 + hex 00222000 + hex 00222000 + hex 00222000 + hex 00222000 + hex 00020000 + hex 00000000 + + hex ff000fff + hex ff000fff + hex ff000fff + hex ff000fff + hex ff000fff + hex ff000fff + hex fff0ffff + hex ffffffff + + hex 00022200 + hex 00022200 + hex 00022200 + hex 00022200 + hex 00022200 + hex 00022200 + hex 00002000 + hex 00000000 + + hex fff000ff + hex fff000ff + hex fff000ff + hex fff000ff + hex fff000ff + hex fff000ff + hex ffff0fff + hex ffffffff + +; Tile ID 21 +; From image coordinates 160, 0 + hex 33100000 + hex 00100000 + hex 33122222 + hex 33122222 + hex 13122222 + hex 00100000 + hex 01100000 + hex 00000000 + + hex 000fffff + hex ff0fffff + hex 00000000 + hex 00000000 + hex 00000000 + hex ff0fffff + hex f00fffff + hex ffffffff + + hex 00000133 + hex 00000100 + hex 22222133 + hex 22222133 + hex 22222131 + hex 00000100 + hex 00000110 + hex 00000000 + + hex fffff000 + hex fffff0ff + hex 00000000 + hex 00000000 + hex 00000000 + hex fffff0ff + hex fffff00f + hex ffffffff + +; Tile ID 22 +; From image coordinates 168, 0 + hex 00000000 + hex 00000000 + hex 22222000 + hex 22222200 + hex 22222000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex ffffffff + hex ffffffff + hex 00000fff + hex 000000ff + hex 00000fff + hex ffffffff + hex ffffffff + hex ffffffff + + hex 00000000 + hex 00000000 + hex 00022222 + hex 00222222 + hex 00022222 + hex 00000000 + hex 00000000 + hex 00000000 + + hex ffffffff + hex ffffffff + hex fff00000 + hex ff000000 + hex fff00000 + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 23 +; From image coordinates 176, 0 + hex 33000000 + hex 42000000 + hex 22222222 + hex 32222222 + hex 32222222 + hex 42000000 + hex 42000000 + hex 42000000 + + hex 00ffffff + hex 00ffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00ffffff + hex 00ffffff + hex 00ffffff + + hex 00000033 + hex 00000024 + hex 22222222 + hex 22222223 + hex 22222223 + hex 00000024 + hex 00000024 + hex 00000024 + + hex ffffff00 + hex ffffff00 + hex 00000000 + hex 00000000 + hex 00000000 + hex ffffff00 + hex ffffff00 + hex ffffff00 + +; Tile ID 24 +; From image coordinates 184, 0 + hex 00000000 + hex 00000000 + hex 22000000 + hex 22200000 + hex 22000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex ffffffff + hex ffffffff + hex 00ffffff + hex 000fffff + hex 00ffffff + hex ffffffff + hex ffffffff + hex ffffffff + + hex 00000000 + hex 00000000 + hex 00000022 + hex 00000222 + hex 00000022 + hex 00000000 + hex 00000000 + hex 00000000 + + hex ffffffff + hex ffffffff + hex ffffff00 + hex fffff000 + hex ffffff00 + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 25 +; From image coordinates 192, 0 + 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 26 +; From image coordinates 200, 0 + 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 27 +; From image coordinates 208, 0 + 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 28 +; From image coordinates 216, 0 + 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 29 +; From image coordinates 224, 0 + 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 30 +; From image coordinates 232, 0 + 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 31 +; From image coordinates 240, 0 + 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 32 +; From image coordinates 248, 0 + 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 33 +; From image coordinates 0, 8 + hex 02222233 + hex 22322221 + hex 23332232 + hex 22322231 + hex 22322232 + hex 22222231 + hex 03333320 + hex 00002220 + + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex ffff000f + + hex 33222220 + hex 12222322 + hex 23223332 + hex 13222322 + hex 23222322 + hex 13222222 + hex 02333330 + hex 02220000 + + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex f000ffff + +; Tile ID 34 +; From image coordinates 8, 8 + hex 33112220 + hex 11113220 + hex 21133320 + hex 22223330 + hex 21111300 + hex 11110000 + hex 02220000 + hex 00000000 + + hex 0000000f + hex 0000000f + hex 0000000f + hex 0000000f + hex 000000ff + hex 0000ffff + hex f000ffff + hex ffffffff + + hex 02221133 + hex 02231111 + hex 02333112 + hex 03332222 + hex 00311112 + hex 00001111 + hex 00002220 + hex 00000000 + + hex f0000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex ff000000 + hex ffff0000 + hex ffff000f + hex ffffffff + +; Tile ID 35 +; From image coordinates 16, 8 + hex 00222223 + hex 02232222 + hex 02333223 + hex 02232223 + hex 02232223 + hex 02222223 + hex 00333330 + hex 00000000 + + hex ff000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex ff00000f + hex ffffffff + + hex 32222200 + hex 22223220 + hex 32233320 + hex 32223220 + hex 32223220 + hex 32222220 + hex 03333300 + hex 00000000 + + hex 000000ff + hex 0000000f + hex 0000000f + hex 0000000f + hex 0000000f + hex 0000000f + hex f00000ff + hex ffffffff + +; Tile ID 36 +; From image coordinates 24, 8 + hex 33111300 + hex 11111300 + hex 22112000 + hex 12221000 + hex 22111000 + hex 11120000 + hex 02220000 + hex 02220000 + + hex 000000ff + hex 000000ff + hex 00000fff + hex 00000fff + hex 00000fff + hex 0000ffff + hex f000ffff + hex f000ffff + + hex 00311133 + hex 00311111 + hex 00021122 + hex 00012221 + hex 00011122 + hex 00002111 + hex 00002220 + hex 00002220 + + hex ff000000 + hex ff000000 + hex fff00000 + hex fff00000 + hex fff00000 + hex ffff0000 + hex ffff000f + hex ffff000f + +; Tile ID 37 +; From image coordinates 32, 8 + hex 00211111 + hex 02221333 + hex 02222333 + hex 02222331 + hex 00122112 + hex 01111111 + hex 00002222 + hex 00002222 + + hex ff000000 + hex f0000000 + hex f0000000 + hex f0000000 + hex ff000000 + hex f0000000 + hex ffff0000 + hex ffff0000 + + hex 11111200 + hex 33312220 + hex 33322220 + hex 13322220 + hex 21122100 + hex 11111110 + hex 22220000 + hex 22220000 + + hex 000000ff + hex 0000000f + hex 0000000f + hex 0000000f + hex 000000ff + hex 0000000f + hex 0000ffff + hex 0000ffff + +; Tile ID 38 +; From image coordinates 40, 8 + hex 11222320 + hex 11122320 + hex 11122020 + hex 11200020 + hex 22200020 + hex 11100000 + hex 00000000 + hex 20000000 + + hex 0000000f + hex 0000000f + hex 00000f0f + hex 000fff0f + hex 000fff0f + hex 000fffff + hex ffffffff + hex 0fffffff + + hex 02322211 + hex 02322111 + hex 02022111 + hex 02000211 + hex 02000222 + hex 00000111 + hex 00000000 + hex 00000002 + + hex f0000000 + hex f0000000 + hex f0f00000 + hex f0fff000 + hex f0fff000 + hex fffff000 + hex ffffffff + hex fffffff0 + +; Tile ID 39 +; From image coordinates 48, 8 + hex 00001111 + hex 00122113 + hex 00222223 + hex 01222223 + hex 01122221 + hex 22111112 + hex 22211111 + hex 02220000 + + hex ffff0000 + hex ff000000 + hex ff000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex f000ffff + + hex 11110000 + hex 31122100 + hex 32222200 + hex 32222210 + hex 12222110 + hex 21111122 + hex 11111222 + hex 00002220 + + hex 0000ffff + hex 000000ff + hex 000000ff + hex 0000000f + hex 0000000f + hex 00000000 + hex 00000000 + hex ffff000f + +; Tile ID 40 +; From image coordinates 56, 8 + hex 33330200 + hex 33223200 + hex 33123200 + hex 31120200 + hex 11200200 + hex 22210200 + hex 11122000 + hex 02220000 + + hex 0000f0ff + hex 000000ff + hex 000000ff + hex 0000f0ff + hex 000ff0ff + hex 0000f0ff + hex 00000fff + hex f000ffff + + hex 00203333 + hex 00232233 + hex 00232133 + hex 00202113 + hex 00200211 + hex 00201222 + hex 00022111 + hex 00002220 + + hex ff0f0000 + hex ff000000 + hex ff000000 + hex ff0f0000 + hex ff0ff000 + hex ff0f0000 + hex fff00000 + hex ffff000f + +; Tile ID 41 +; From image coordinates 64, 8 + hex 00221111 + hex 00221111 + hex 00022111 + hex 00011222 + hex 00011111 + hex 00022211 + hex 00022220 + hex 00002200 + + hex ff000000 + hex ff000000 + hex fff00000 + hex fff00000 + hex fff00000 + hex fff00000 + hex fff0000f + hex ffff00ff + + hex 11112200 + hex 11112200 + hex 11122000 + hex 22211000 + hex 11111000 + hex 11222000 + hex 02222000 + hex 00220000 + + hex 000000ff + hex 000000ff + hex 00000fff + hex 00000fff + hex 00000fff + hex 00000fff + hex f0000fff + hex ff00ffff + +; Tile ID 42 +; From image coordinates 72, 8 + hex 11122000 + hex 11122300 + hex 11122300 + hex 22213300 + hex 11111000 + hex 11120000 + hex 02200000 + hex 00000000 + + hex 00000fff + hex 000000ff + hex 000000ff + hex 000000ff + hex 00000fff + hex 0000ffff + hex f00fffff + hex ffffffff + + hex 00022111 + hex 00322111 + hex 00322111 + hex 00331222 + hex 00011111 + hex 00002111 + hex 00000220 + hex 00000000 + + hex fff00000 + hex ff000000 + hex ff000000 + hex ff000000 + hex fff00000 + hex ffff0000 + hex fffff00f + hex ffffffff + +; Tile ID 43 +; From image coordinates 80, 8 + hex 00022111 + hex 00322111 + hex 00322111 + hex 00331222 + hex 00011111 + hex 00002111 + hex 00000220 + hex 00000000 + + hex fff00000 + hex ff000000 + hex ff000000 + hex ff000000 + hex fff00000 + hex ffff0000 + hex fffff00f + hex ffffffff + + hex 11122000 + hex 11122300 + hex 11122300 + hex 22213300 + hex 11111000 + hex 11120000 + hex 02200000 + hex 00000000 + + hex 00000fff + hex 000000ff + hex 000000ff + hex 000000ff + hex 00000fff + hex 0000ffff + hex f00fffff + hex ffffffff + +; Tile ID 44 +; From image coordinates 88, 8 + hex 11112200 + hex 11112200 + hex 11122000 + hex 22211000 + hex 11111000 + hex 11222000 + hex 02222000 + hex 00220000 + + hex 000000ff + hex 000000ff + hex 00000fff + hex 00000fff + hex 00000fff + hex 00000fff + hex f0000fff + hex ff00ffff + + hex 00221111 + hex 00221111 + hex 00022111 + hex 00011222 + hex 00011111 + hex 00022211 + hex 00022220 + hex 00002200 + + hex ff000000 + hex ff000000 + hex fff00000 + hex fff00000 + hex fff00000 + hex fff00000 + hex fff0000f + hex ffff00ff + +; Tile ID 45 +; From image coordinates 96, 8 + hex 00031113 + hex 00002111 + hex 00001212 + hex 00001122 + hex 00022112 + hex 00222011 + hex 00000000 + hex 00000000 + + hex fff00000 + hex ffff0000 + hex ffff0000 + hex ffff0000 + hex fff00000 + hex ff000f00 + hex ffffffff + hex ffffffff + + hex 31113000 + hex 11120000 + hex 21210000 + hex 22110000 + hex 21122000 + hex 11022200 + hex 00000000 + hex 00000000 + + hex 00000fff + hex 0000ffff + hex 0000ffff + hex 0000ffff + hex 00000fff + hex 00f000ff + hex ffffffff + hex ffffffff + +; Tile ID 46 +; From image coordinates 104, 8 + hex 33222200 + hex 11222200 + hex 22222100 + hex 12221100 + hex 23321120 + hex 33311222 + hex 33302222 + hex 00000000 + + hex 000000ff + hex 000000ff + hex 000000ff + hex 000000ff + hex 0000000f + hex 00000000 + hex 000f0000 + hex ffffffff + + hex 00222233 + hex 00222211 + hex 00122222 + hex 00112221 + hex 02112332 + hex 22211333 + hex 22220333 + hex 00000000 + + hex ff000000 + hex ff000000 + hex ff000000 + hex ff000000 + hex f0000000 + hex 00000000 + hex 0000f000 + hex ffffffff + +; Tile ID 47 +; From image coordinates 112, 8 + hex 00001111 + hex 00011222 + hex 00012222 + hex 00112222 + hex 01111222 + hex 22111111 + hex 22211111 + hex 02220000 + + hex ffff0000 + hex fff00000 + hex fff00000 + hex ff000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex f000ffff + + hex 11110000 + hex 22211000 + hex 22221000 + hex 22221100 + hex 22211110 + hex 11111122 + hex 11111222 + hex 00002220 + + hex 0000ffff + hex 00000fff + hex 00000fff + hex 000000ff + hex 0000000f + hex 00000000 + hex 00000000 + hex ffff000f + +; Tile ID 48 +; From image coordinates 120, 8 + hex 13333300 + hex 22233300 + hex 22233000 + hex 22210000 + hex 11122000 + hex 22222000 + hex 11112200 + hex 00022220 + + hex 000000ff + hex 000000ff + hex 00000fff + hex 0000ffff + hex 00000fff + hex 00000fff + hex 000000ff + hex fff0000f + + hex 00333331 + hex 00333222 + hex 00033222 + hex 00001222 + hex 00022111 + hex 00022222 + hex 00221111 + hex 02222000 + + hex ff000000 + hex ff000000 + hex fff00000 + hex ffff0000 + hex fff00000 + hex fff00000 + hex ff000000 + hex f0000fff + +; Tile ID 49 +; From image coordinates 128, 8 + hex 00211111 + hex 00211111 + hex 00121111 + hex 02112222 + hex 22111111 + hex 22200001 + hex 00000000 + hex 00000000 + + hex ff000000 + hex ff000000 + hex ff000000 + hex f0000000 + hex 00000000 + hex 000ffff0 + hex ffffffff + hex ffffffff + + hex 11111200 + hex 11111200 + hex 11112100 + hex 22221120 + hex 11111122 + hex 10000222 + hex 00000000 + hex 00000000 + + hex 000000ff + hex 000000ff + hex 000000ff + hex 0000000f + hex 00000000 + hex 0ffff000 + hex ffffffff + hex ffffffff + +; Tile ID 50 +; From image coordinates 136, 8 + hex 11223222 + hex 11232222 + hex 11322220 + hex 22232200 + hex 11113000 + hex 11122000 + hex 00222200 + hex 00222200 + + hex 00000000 + hex 00000000 + hex 0000000f + hex 000000ff + hex 00000fff + hex 00000fff + hex ff0000ff + hex ff0000ff + + hex 22232211 + hex 22223211 + hex 02222311 + hex 00223222 + hex 00031111 + hex 00022111 + hex 00222200 + hex 00222200 + + hex 00000000 + hex 00000000 + hex f0000000 + hex ff000000 + hex fff00000 + hex fff00000 + hex ff0000ff + hex ff0000ff + +; Tile ID 51 +; From image coordinates 144, 8 + hex 00222000 + hex 00222000 + hex 00020000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex ff000fff + hex ff000fff + hex fff0ffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + + hex 00022200 + hex 00022200 + hex 00002000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex fff000ff + hex fff000ff + hex ffff0fff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 52 +; From image coordinates 152, 8 + hex 33200000 + hex 00200000 + hex 00200000 + hex 23222200 + hex 23222220 + hex 22222200 + hex 00200000 + hex 00200000 + + hex 000fffff + hex ff0fffff + hex ff0fffff + hex 000000ff + hex 0000000f + hex 000000ff + hex ff0fffff + hex ff0fffff + + hex 00000233 + hex 00000200 + hex 00000200 + hex 00222232 + hex 02222232 + hex 00222222 + hex 00000200 + hex 00000200 + + hex fffff000 + hex fffff0ff + hex fffff0ff + hex ff000000 + hex f0000000 + hex ff000000 + hex fffff0ff + hex fffff0ff + +; Tile ID 53 +; From image coordinates 160, 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 54 +; From image coordinates 168, 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 55 +; From image coordinates 176, 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 56 +; From image coordinates 184, 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 57 +; From image coordinates 192, 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 58 +; From image coordinates 200, 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 59 +; From image coordinates 208, 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 60 +; From image coordinates 216, 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 61 +; From image coordinates 224, 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 62 +; From image coordinates 232, 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 63 +; From image coordinates 240, 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 64 +; From image coordinates 248, 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 65 +; From image coordinates 0, 16 + hex 00000000 + hex 00006567 + hex 00656666 + hex 00667666 + hex 06666666 + hex 06666676 + hex 66666666 + hex 66766666 + + hex ffffffff + hex ffff0000 + hex ff000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 00000000 + hex 76560000 + hex 66665600 + hex 66676600 + hex 66666660 + hex 67666660 + hex 66666666 + hex 66666766 + + hex ffffffff + hex 0000ffff + hex 000000ff + hex 000000ff + hex 0000000f + hex 0000000f + hex 00000000 + hex 00000000 + +; Tile ID 66 +; From image coordinates 8, 16 + hex 00000000 + hex 77000000 + hex 67777000 + hex 66776700 + hex 66677700 + hex 66767770 + hex 66777700 + hex 66677770 + + hex ffffffff + hex 00ffffff + hex 00000fff + hex 000000ff + hex 000000ff + hex 0000000f + hex 000000ff + hex 0000000f + + hex 00000000 + hex 00000077 + hex 00077776 + hex 00767766 + hex 00777666 + hex 07776766 + hex 00777766 + hex 07777666 + + hex ffffffff + hex ffffff00 + hex fff00000 + hex ff000000 + hex ff000000 + hex f0000000 + hex ff000000 + hex f0000000 + +; Tile ID 67 +; From image coordinates 16, 16 + hex 55667555 + hex 56666755 + hex 56566776 + hex 65666756 + hex 65666756 + hex 65667566 + hex 66667566 + hex 66667566 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 55576655 + hex 55766665 + hex 67766565 + hex 65766656 + hex 65766656 + hex 66576656 + hex 66576666 + hex 66576666 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 68 +; From image coordinates 24, 16 + hex 55555555 + hex 55555555 + hex 66775555 + hex 66667555 + hex 66667755 + hex 66666755 + hex 76666775 + hex 76677775 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 55555555 + hex 55555555 + hex 55557766 + hex 55576666 + hex 55776666 + hex 55766666 + hex 57766667 + hex 57777667 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 69 +; From image coordinates 32, 16 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555577 + hex 55555567 + hex 55555667 + hex 55555667 + + 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 77555555 + hex 76555555 + hex 76655555 + hex 76655555 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 70 +; From image coordinates 40, 16 + hex 55667755 + hex 56666775 + hex 66666675 + hex 56666677 + hex 56666677 + hex 56666777 + hex 56666677 + hex 76666675 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 55776655 + hex 57766665 + hex 57666666 + hex 77666665 + hex 77666665 + hex 77766665 + hex 77666665 + hex 57666667 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 71 +; From image coordinates 48, 16 + hex 55555555 + hex 55567555 + hex 55666755 + hex 56666675 + hex 76666675 + hex 56666667 + hex 56666667 + hex 56666677 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 55555555 + hex 55576555 + hex 55766655 + hex 57666665 + hex 57666667 + hex 76666665 + hex 76666665 + hex 77666665 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 72 +; From image coordinates 56, 16 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 55555555 + hex 65555555 + hex 66777555 + + 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 55555556 + hex 55577766 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 73 +; From image coordinates 64, 16 + hex 66665666 + hex 66665666 + hex 66675666 + hex 66675666 + hex 66675666 + hex 66675666 + hex 76775666 + hex 57775666 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 66656666 + hex 66656666 + hex 66657666 + hex 66657666 + hex 66657666 + hex 66657666 + hex 66657767 + hex 66657775 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 74 +; From image coordinates 72, 16 + hex 77756677 + hex 66756667 + hex 66756667 + hex 66756666 + hex 66756666 + hex 66756666 + hex 66775666 + hex 66777566 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 77665777 + hex 76665766 + hex 76665766 + hex 66665766 + hex 66665766 + hex 66665766 + hex 66657766 + hex 66577766 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 75 +; From image coordinates 80, 16 + hex 66675775 + hex 66667756 + hex 66667756 + hex 56667756 + hex 56667566 + hex 66667566 + hex 66667566 + hex 66667566 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 57757666 + hex 65776666 + hex 65776666 + hex 65776665 + hex 66576665 + hex 66576666 + hex 66576666 + hex 66576666 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 76 +; From image coordinates 88, 16 + hex 66775766 + hex 66667775 + hex 66667767 + hex 66666767 + hex 66666767 + hex 66666667 + hex 66655775 + hex 66566675 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 66757766 + hex 57776666 + hex 76776666 + hex 76766666 + hex 76766666 + hex 76666666 + hex 57755666 + hex 57666566 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 77 +; From image coordinates 96, 16 + hex 56666667 + hex 56666666 + hex 56776666 + hex 55667666 + hex 56667666 + hex 56667666 + hex 56667666 + hex 56667666 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 76666665 + hex 66666665 + hex 66667765 + hex 66676655 + hex 66676665 + hex 66676665 + hex 66676665 + hex 66676665 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 78 +; From image coordinates 104, 16 + hex 77566777 + hex 77566677 + hex 77566677 + hex 77566675 + hex 77566675 + hex 77567755 + hex 77775555 + hex 77555555 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 77766577 + hex 77666577 + hex 77666577 + hex 57666577 + hex 57666577 + hex 55776577 + hex 55557777 + hex 55555577 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 79 +; From image coordinates 112, 16 + hex 00000883 + hex 00088388 + hex 88888888 + hex 08888838 + hex 00883888 + hex 88889988 + hex 08899899 + hex 00899889 + + hex fffff000 + hex fff00000 + hex 00000000 + hex f0000000 + hex ff000000 + hex 00000000 + hex f0000000 + hex ff000000 + + hex 38800000 + hex 88388000 + hex 88888888 + hex 83888880 + hex 88838800 + hex 88998888 + hex 99899880 + hex 98899800 + + hex 000fffff + hex 00000fff + hex 00000000 + hex 0000000f + hex 000000ff + hex 00000000 + hex 0000000f + hex 000000ff + +; Tile ID 80 +; From image coordinates 120, 16 + hex 38800000 + hex 88388000 + hex 88888888 + hex 83888880 + hex 88838800 + hex 88998888 + hex 99899880 + hex 98899800 + + hex 000fffff + hex 00000fff + hex 00000000 + hex 0000000f + hex 000000ff + hex 00000000 + hex 0000000f + hex 000000ff + + hex 00000883 + hex 00088388 + hex 88888888 + hex 08888838 + hex 00883888 + hex 88889988 + hex 08899899 + hex 00899889 + + hex fffff000 + hex fff00000 + hex 00000000 + hex f0000000 + hex ff000000 + hex 00000000 + hex f0000000 + hex ff000000 + +; Tile ID 81 +; From image coordinates 128, 16 + hex 00000883 + hex 88088388 + hex 08838888 + hex 00888838 + hex 88883888 + hex 08889988 + hex 00899899 + hex 08899889 + + hex fffff000 + hex 00f00000 + hex f0000000 + hex ff000000 + hex 00000000 + hex f0000000 + hex ff000000 + hex f0000000 + + hex 38800000 + hex 88388088 + hex 88883880 + hex 83888800 + hex 88838888 + hex 88998880 + hex 99899800 + hex 98899880 + + hex 000fffff + hex 00000f00 + hex 0000000f + hex 000000ff + hex 00000000 + hex 0000000f + hex 000000ff + hex 0000000f + +; Tile ID 82 +; From image coordinates 136, 16 + hex 38800000 + hex 88388088 + hex 88883880 + hex 83888800 + hex 88838888 + hex 88998880 + hex 99899800 + hex 98899880 + + hex 000fffff + hex 00000f00 + hex 0000000f + hex 000000ff + hex 00000000 + hex 0000000f + hex 000000ff + hex 0000000f + + hex 00000883 + hex 88088388 + hex 08838888 + hex 00888838 + hex 88883888 + hex 08889988 + hex 00899899 + hex 08899889 + + hex fffff000 + hex 00f00000 + hex f0000000 + hex ff000000 + hex 00000000 + hex f0000000 + hex ff000000 + hex f0000000 + +; Tile ID 83 +; From image coordinates 144, 16 + hex 00000000 + hex 00000088 + hex 00000008 + hex 00008888 + hex 80008899 + hex 80000898 + hex 88888988 + hex 88888999 + + hex ffffffff + hex ffffff00 + hex fffffff0 + hex ffff0000 + hex 0fff0000 + hex 0ffff000 + hex 00000000 + hex 00000000 + + hex 00000000 + hex 88000000 + hex 80000000 + hex 88880000 + hex 99880008 + hex 89800008 + hex 88988888 + hex 99988888 + + hex ffffffff + hex 00ffffff + hex 0fffffff + hex 0000ffff + hex 0000fff0 + hex 000ffff0 + hex 00000000 + hex 00000000 + +; Tile ID 84 +; From image coordinates 152, 16 + hex 00800800 + hex 08808800 + hex 88888800 + hex 99888880 + hex 99938880 + hex 88988838 + hex 89883888 + hex 99888883 + + hex ff0ff0ff + hex f00f00ff + hex 000000ff + hex 0000000f + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + + hex 00800800 + hex 00880880 + hex 00888888 + hex 08888899 + hex 08883999 + hex 83888988 + hex 88838898 + hex 38888899 + + hex ff0ff0ff + hex ff00f00f + hex ff000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 85 +; From image coordinates 160, 16 + hex 00000008 + hex 00000008 + hex 00008008 + hex 00008888 + hex 00800899 + hex 00880898 + hex 00888988 + hex 00888999 + + hex fffffff0 + hex fffffff0 + hex ffff0ff0 + hex ffff0000 + hex ff0ff000 + hex ff00f000 + hex ff000000 + hex ff000000 + + hex 80000000 + hex 80000000 + hex 80080000 + hex 88880000 + hex 99800800 + hex 89808800 + hex 88988800 + hex 99988800 + + hex 0fffffff + hex 0fffffff + hex 0ff0ffff + hex 0000ffff + hex 000ff0ff + hex 000f00ff + hex 000000ff + hex 000000ff + +; Tile ID 86 +; From image coordinates 168, 16 + hex 00080080 + hex 80880880 + hex 88888800 + hex 99888880 + hex 99938880 + hex 88988838 + hex 89883888 + hex 99888883 + + hex fff0ff0f + hex 0f00f00f + hex 000000ff + hex 0000000f + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + + hex 08008000 + hex 08808808 + hex 00888888 + hex 08888899 + hex 08883999 + hex 83888988 + hex 88838898 + hex 38888899 + + hex f0ff0fff + hex f00f00f0 + hex ff000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 87 +; From image coordinates 176, 16 + hex 00000000 + hex 00000000 + hex 00332000 + hex 02233200 + hex 23233220 + hex 23332220 + hex 23233232 + hex 33323232 + + hex ffffffff + hex ffffffff + hex ff000fff + hex f00000ff + hex 0000000f + hex 0000000f + hex 00000000 + hex 00000000 + + hex 00000000 + hex 00000000 + hex 00023300 + hex 00233220 + hex 02233232 + hex 02223332 + hex 23233232 + hex 23232333 + + hex ffffffff + hex ffffffff + hex fff000ff + hex ff00000f + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + +; Tile ID 88 +; From image coordinates 184, 16 + 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 89 +; From image coordinates 192, 16 + 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 90 +; From image coordinates 200, 16 + 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 91 +; From image coordinates 208, 16 + 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 92 +; From image coordinates 216, 16 + 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 93 +; From image coordinates 224, 16 + 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 94 +; From image coordinates 232, 16 + 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 95 +; From image coordinates 240, 16 + 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 96 +; From image coordinates 248, 16 + 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 97 +; From image coordinates 0, 24 + hex 06666666 + hex 66667666 + hex 66666666 + hex 66766666 + hex 06666667 + hex 00066a6a + hex 00007aaa + hex 00077777 + + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex fff00000 + hex ffff0000 + hex fff00000 + + hex 66666660 + hex 66676666 + hex 66666666 + hex 66666766 + hex 76666660 + hex a6a66000 + hex aaa70000 + hex 77777000 + + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 00000fff + hex 0000ffff + hex 00000fff + +; Tile ID 98 +; From image coordinates 8, 24 + hex 76677670 + hex 66677770 + hex 67777700 + hex 66767700 + hex 77777000 + hex 77600000 + hex aa777777 + hex 77777700 + + hex 0000000f + hex 0000000f + hex 000000ff + hex 000000ff + hex 00000fff + hex 000fffff + hex 00000000 + hex 000000ff + + hex 07677667 + hex 07777666 + hex 00777776 + hex 00776766 + hex 00077777 + hex 00000677 + hex 777777aa + hex 00777777 + + hex f0000000 + hex f0000000 + hex ff000000 + hex ff000000 + hex fff00000 + hex fffff000 + hex 00000000 + hex ff000000 + +; Tile ID 99 +; From image coordinates 16, 24 + hex 56667566 + hex 56667566 + hex 56667566 + hex 66667666 + hex 66667666 + hex 66666666 + hex 56666676 + hex 77777777 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 66576665 + hex 66576665 + hex 66576665 + hex 66676666 + hex 66676666 + hex 66666666 + hex 67666665 + hex 77777777 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 100 +; From image coordinates 24, 24 + hex 76676775 + hex 77676775 + hex 77676775 + hex 67677775 + hex 66677675 + hex 67776655 + hex 66777777 + hex 77777755 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 57767667 + hex 57767677 + hex 57767677 + hex 57777676 + hex 57677666 + hex 55667776 + hex 77777766 + hex 55777777 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 101 +; From image coordinates 32, 24 + hex 55577667 + hex 55667667 + hex 56666667 + hex 56667667 + hex 56667677 + hex 56667677 + hex 66666677 + hex 66666677 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 76677555 + hex 76676655 + hex 76666665 + hex 76676665 + hex 77676665 + hex 77676665 + hex 77666666 + hex 77666666 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 102 +; From image coordinates 40, 24 + hex 66666665 + hex 66666665 + hex 66666675 + hex 56666677 + hex 76666677 + hex 66666677 + hex 76666775 + hex 76776675 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 56666666 + hex 56666666 + hex 57666666 + hex 77666665 + hex 77666667 + hex 77666666 + hex 57766667 + hex 57667767 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 103 +; From image coordinates 48, 24 + hex 66666675 + hex 66666775 + hex 66666775 + hex 56666677 + hex 76666667 + hex 55776667 + hex 66667677 + hex 66677667 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 57666666 + hex 57766666 + hex 57766666 + hex 77666665 + hex 76666667 + hex 76667755 + hex 77676666 + hex 76677666 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 104 +; From image coordinates 56, 24 + hex 67666755 + hex 66666755 + hex 66666675 + hex 56666675 + hex 56666675 + hex 56666775 + hex 57766775 + hex 57776755 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 55766676 + hex 55766666 + hex 57666666 + hex 57666665 + hex 57666665 + hex 57766665 + hex 57766775 + hex 55767775 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 105 +; From image coordinates 64, 24 + hex 55577666 + hex 55557676 + hex 55555777 + 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 66677555 + hex 67675555 + hex 77755555 + 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 106 +; From image coordinates 72, 24 + hex 66777566 + hex 67777566 + hex 77777566 + hex 77777566 + hex 55557566 + hex 55555766 + hex 55555766 + hex 55555577 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 66577766 + hex 66577776 + hex 66577777 + hex 66577777 + hex 66575555 + hex 66755555 + hex 66755555 + hex 77555555 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 107 +; From image coordinates 80, 24 + hex 66677566 + hex 66677566 + hex 56777576 + hex 56755577 + hex 67566666 + hex 67566667 + hex 65666666 + hex 75656657 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 66577666 + hex 66577666 + hex 67577765 + hex 77555765 + hex 66666576 + hex 76666576 + hex 66666656 + hex 75665657 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 108 +; From image coordinates 88, 24 + hex 66566667 + hex 66566667 + hex 67566677 + hex 67566675 + hex 77566675 + hex 77566675 + hex 77766777 + hex 57755775 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 76666566 + hex 76666566 + hex 77666576 + hex 57666576 + hex 57666577 + hex 57666577 + hex 77766777 + hex 57755775 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 109 +; From image coordinates 96, 24 + hex 56667667 + hex 56667667 + hex 75667667 + hex 75667667 + hex 75667677 + hex 75677775 + hex 77555555 + hex 55555555 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 76676665 + hex 76676665 + hex 76676657 + hex 76676657 + hex 77676657 + hex 57777657 + hex 55555577 + hex 55555555 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 110 +; From image coordinates 104, 24 + hex 75555555 + hex 75555555 + hex 75555555 + hex 75555555 + 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 55555557 + hex 55555557 + hex 55555557 + hex 55555557 + 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 111 +; From image coordinates 112, 24 + hex 08889889 + hex 08089989 + hex 00088899 + hex 00088088 + hex 00000088 + hex 00000088 + hex 00000088 + hex 00008888 + + hex f0000000 + hex f0f00000 + hex fff00000 + hex fff00f00 + hex ffffff00 + hex ffffff00 + hex ffffff00 + hex ffff0000 + + hex 98898880 + hex 98998080 + hex 99888000 + hex 88088000 + hex 88000000 + hex 88000000 + hex 88000000 + hex 88880000 + + hex 0000000f + hex 00000f0f + hex 00000fff + hex 00f00fff + hex 00ffffff + hex 00ffffff + hex 00ffffff + hex 0000ffff + +; Tile ID 112 +; From image coordinates 120, 24 + hex 98898880 + hex 98998080 + hex 99888000 + hex 88088000 + hex 88000000 + hex 88000000 + hex 88000000 + hex 88880000 + + hex 0000000f + hex 00000f0f + hex 00000fff + hex 00f00fff + hex 00ffffff + hex 00ffffff + hex 00ffffff + hex 0000ffff + + hex 08889889 + hex 08089989 + hex 00088899 + hex 00088088 + hex 00000088 + hex 00000088 + hex 00000088 + hex 00008888 + + hex f0000000 + hex f0f00000 + hex fff00000 + hex fff00f00 + hex ffffff00 + hex ffffff00 + hex ffffff00 + hex ffff0000 + +; Tile ID 113 +; From image coordinates 128, 24 + hex 88889889 + hex 00089989 + hex 00088899 + hex 00880088 + hex 00000888 + hex 00008888 + hex 00000000 + hex 00000000 + + hex 00000000 + hex fff00000 + hex fff00000 + hex ff00ff00 + hex fffff000 + hex ffff0000 + hex ffffffff + hex ffffffff + + hex 98898888 + hex 98998000 + hex 99888000 + hex 88008800 + hex 88800000 + hex 88880000 + hex 00000000 + hex 00000000 + + hex 00000000 + hex 00000fff + hex 00000fff + hex 00ff00ff + hex 000fffff + hex 0000ffff + hex ffffffff + hex ffffffff + +; Tile ID 114 +; From image coordinates 136, 24 + hex 98898888 + hex 98998000 + hex 99888000 + hex 88008800 + hex 88800000 + hex 88880000 + hex 00000000 + hex 00000000 + + hex 00000000 + hex 00000fff + hex 00000fff + hex 00ff00ff + hex 000fffff + hex 0000ffff + hex ffffffff + hex ffffffff + + hex 88889889 + hex 00089989 + hex 00088899 + hex 00880088 + hex 00000888 + hex 00008888 + hex 00000000 + hex 00000000 + + hex 00000000 + hex fff00000 + hex fff00000 + hex ff00ff00 + hex fffff000 + hex ffff0000 + hex ffffffff + hex ffffffff + +; Tile ID 115 +; From image coordinates 144, 24 + hex 88888999 + hex 88888988 + hex 80000898 + hex 80008899 + hex 00008888 + hex 00000008 + hex 00000088 + hex 00000000 + + hex 00000000 + hex 00000000 + hex 0ffff000 + hex 0fff0000 + hex ffff0000 + hex fffffff0 + hex ffffff00 + hex ffffffff + + hex 99988888 + hex 88988888 + hex 89800008 + hex 99880008 + hex 88880000 + hex 80000000 + hex 88000000 + hex 00000000 + + hex 00000000 + hex 00000000 + hex 000ffff0 + hex 0000fff0 + hex 0000ffff + hex 0fffffff + hex 00ffffff + hex ffffffff + +; Tile ID 116 +; From image coordinates 152, 24 + hex 99888883 + hex 89883888 + hex 88988838 + hex 99938880 + hex 99888880 + hex 88888800 + hex 08808800 + hex 00800800 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 0000000f + hex 000000ff + hex f00f00ff + hex ff0ff0ff + + hex 38888899 + hex 88838898 + hex 83888988 + hex 08883999 + hex 08888899 + hex 00888888 + hex 00880880 + hex 00800800 + + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex f0000000 + hex ff000000 + hex ff00f00f + hex ff0ff0ff + +; Tile ID 117 +; From image coordinates 160, 24 + hex 00888999 + hex 00888988 + hex 00880898 + hex 00800899 + hex 00008888 + hex 00008008 + hex 00000008 + hex 00000008 + + hex ff000000 + hex ff000000 + hex ff00f000 + hex ff0ff000 + hex ffff0000 + hex ffff0ff0 + hex fffffff0 + hex fffffff0 + + hex 99988800 + hex 88988800 + hex 89808800 + hex 99800800 + hex 88880000 + hex 80080000 + hex 80000000 + hex 80000000 + + hex 000000ff + hex 000000ff + hex 000f00ff + hex 000ff0ff + hex 0000ffff + hex 0ff0ffff + hex 0fffffff + hex 0fffffff + +; Tile ID 118 +; From image coordinates 168, 24 + hex 99888883 + hex 89883888 + hex 88988838 + hex 99938880 + hex 99888880 + hex 88888800 + hex 80880880 + hex 00080080 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 0000000f + hex 000000ff + hex 0f00f00f + hex fff0ff0f + + hex 38888899 + hex 88838898 + hex 83888988 + hex 08883999 + hex 08888899 + hex 00888888 + hex 08808808 + hex 08008000 + + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex f0000000 + hex ff000000 + hex f00f00f0 + hex f0ff0fff + +; Tile ID 119 +; From image coordinates 176, 24 + hex 33332222 + hex 32332220 + hex 02222220 + hex 00022000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 00000000 + hex 0000000f + hex f000000f + hex fff00fff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + + hex 22223333 + hex 02223323 + hex 02222220 + hex 00022000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 00000000 + hex f0000000 + hex f000000f + hex fff00fff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 120 +; From image coordinates 184, 24 + 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 +; From image coordinates 192, 24 + 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 122 +; From image coordinates 200, 24 + 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 123 +; From image coordinates 208, 24 + 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 124 +; From image coordinates 216, 24 + 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 125 +; From image coordinates 224, 24 + 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 126 +; From image coordinates 232, 24 + 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 127 +; From image coordinates 240, 24 + 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 128 +; From image coordinates 248, 24 + 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 129 +; From image coordinates 0, 32 + 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 130 +; From image coordinates 8, 32 + hex 77777777 + hex 77777777 + hex 77777777 + hex 77777777 + hex 77777777 + hex 77777777 + hex 77777777 + hex 77777777 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 77777777 + hex 77777777 + hex 77777777 + hex 77777777 + hex 77777777 + hex 77777777 + hex 77777777 + hex 77777777 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 131 +; From image coordinates 16, 32 + 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 132 +; From image coordinates 24, 32 + 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 133 +; From image coordinates 32, 32 + 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 134 +; From image coordinates 40, 32 + 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 135 +; From image coordinates 48, 32 + 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 136 +; From image coordinates 56, 32 + 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 137 +; From image coordinates 64, 32 + 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 138 +; From image coordinates 72, 32 + 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 139 +; From image coordinates 80, 32 + 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 140 +; From image coordinates 88, 32 + 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 141 +; From image coordinates 96, 32 + 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 142 +; From image coordinates 104, 32 + 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 143 +; From image coordinates 112, 32 + 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 144 +; From image coordinates 120, 32 + 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 145 +; From image coordinates 128, 32 + 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 146 +; From image coordinates 136, 32 + 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 147 +; From image coordinates 144, 32 + 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 148 +; From image coordinates 152, 32 + 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 149 +; From image coordinates 160, 32 + 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 150 +; From image coordinates 168, 32 + 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 151 +; From image coordinates 176, 32 + 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 152 +; From image coordinates 184, 32 + 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 153 +; From image coordinates 192, 32 + 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 +; From image coordinates 200, 32 + 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 +; From image coordinates 208, 32 + 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 +; From image coordinates 216, 32 + 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 +; From image coordinates 224, 32 + 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 +; From image coordinates 232, 32 + 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 +; From image coordinates 240, 32 + 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 +; From image coordinates 248, 32 + 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 +; From image coordinates 0, 40 + 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 162 +; From image coordinates 8, 40 + 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 163 +; From image coordinates 16, 40 + 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 164 +; From image coordinates 24, 40 + 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 165 +; From image coordinates 32, 40 + 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 166 +; From image coordinates 40, 40 + 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 167 +; From image coordinates 48, 40 + 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 168 +; From image coordinates 56, 40 + 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 169 +; From image coordinates 64, 40 + 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 170 +; From image coordinates 72, 40 + 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 171 +; From image coordinates 80, 40 + 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 172 +; From image coordinates 88, 40 + 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 173 +; From image coordinates 96, 40 + 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 174 +; From image coordinates 104, 40 + 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 175 +; From image coordinates 112, 40 + 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 176 +; From image coordinates 120, 40 + 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 177 +; From image coordinates 128, 40 + 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 +; From image coordinates 136, 40 + 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 +; From image coordinates 144, 40 + 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 +; From image coordinates 152, 40 + 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 +; From image coordinates 160, 40 + 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 +; From image coordinates 168, 40 + 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 +; From image coordinates 176, 40 + 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 +; From image coordinates 184, 40 + 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 +; From image coordinates 192, 40 + 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 +; From image coordinates 200, 40 + 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 +; From image coordinates 208, 40 + 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 +; From image coordinates 216, 40 + 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 +; From image coordinates 224, 40 + 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 +; From image coordinates 232, 40 + 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 +; From image coordinates 240, 40 + 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 +; From image coordinates 248, 40 + 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 +; From image coordinates 0, 48 + hex 00000000 + hex 0cccccc0 + hex ccaaaacc + hex caaccaac + hex caaccaac + hex caaccaac + hex ccaaaacc + hex 0cccccc0 + + hex ffffffff + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + + hex 00000000 + hex 0cccccc0 + hex ccaaaacc + hex caaccaac + hex caaccaac + hex caaccaac + hex ccaaaacc + hex 0cccccc0 + + hex ffffffff + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + +; Tile ID 194 +; From image coordinates 8, 48 + hex 00000000 + hex 0ccccc00 + hex 0caaac00 + hex 0ccaac00 + hex 00caac00 + hex 00caac00 + hex 00caac00 + hex 00cccc00 + + hex ffffffff + hex f00000ff + hex f00000ff + hex f00000ff + hex ff0000ff + hex ff0000ff + hex ff0000ff + hex ff0000ff + + hex 00000000 + hex 00ccccc0 + hex 00caaac0 + hex 00caacc0 + hex 00caac00 + hex 00caac00 + hex 00caac00 + hex 00cccc00 + + hex ffffffff + hex ff00000f + hex ff00000f + hex ff00000f + hex ff0000ff + hex ff0000ff + hex ff0000ff + hex ff0000ff + +; Tile ID 195 +; From image coordinates 16, 48 + hex 00000000 + hex 0cccccc0 + hex ccaaaacc + hex caaccaac + hex cccaaac0 + hex 0caacccc + hex caaaaaac + hex cccccccc + + hex ffffffff + hex f000000f + hex 00000000 + hex 00000000 + hex 0000000f + hex f0000000 + hex 00000000 + hex 00000000 + + hex 00000000 + hex 0cccccc0 + hex ccaaaacc + hex caaccaac + hex 0caaaccc + hex ccccaac0 + hex caaaaaac + hex cccccccc + + hex ffffffff + hex f000000f + hex 00000000 + hex 00000000 + hex f0000000 + hex 0000000f + hex 00000000 + hex 00000000 + +; Tile ID 196 +; From image coordinates 24, 48 + hex 00000000 + hex ccccccc0 + hex caaaaacc + hex cccccaac + hex 00caaac0 + hex cccccaac + hex caaaaacc + hex ccccccc0 + + hex ffffffff + hex 0000000f + hex 00000000 + hex 00000000 + hex ff00000f + hex 00000000 + hex 00000000 + hex 0000000f + + hex 00000000 + hex 0ccccccc + hex ccaaaaac + hex caaccccc + hex 0caaac00 + hex caaccccc + hex ccaaaaac + hex 0ccccccc + + hex ffffffff + hex f0000000 + hex 00000000 + hex 00000000 + hex f00000ff + hex 00000000 + hex 00000000 + hex f0000000 + +; Tile ID 197 +; From image coordinates 32, 48 + hex 00000000 + hex 00ccccc0 + hex 0ccaaac0 + hex ccacaac0 + hex caccaacc + hex caaaaaac + hex ccccaacc + hex 000cccc0 + + hex ffffffff + hex ff00000f + hex f000000f + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex fff0000f + + hex 00000000 + hex 0ccccc00 + hex 0caaacc0 + hex 0caacacc + hex ccaaccac + hex caaaaaac + hex ccaacccc + hex 0cccc000 + + hex ffffffff + hex f00000ff + hex f000000f + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000fff + +; Tile ID 198 +; From image coordinates 40, 48 + hex 00000000 + hex ccccccc0 + hex caaaaac0 + hex caacccc0 + hex caaaaacc + hex 0ccccaac + hex caaaaacc + hex ccccccc0 + + hex ffffffff + hex 0000000f + hex 0000000f + hex 0000000f + hex 00000000 + hex f0000000 + hex 00000000 + hex 0000000f + + hex 00000000 + hex 0ccccccc + hex 0caaaaac + hex 0ccccaac + hex ccaaaaac + hex caacccc0 + hex ccaaaaac + hex 0ccccccc + + hex ffffffff + hex f0000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 0000000f + hex 00000000 + hex f0000000 + +; Tile ID 199 +; From image coordinates 48, 48 + hex 00000000 + hex 0cccccc0 + hex ccaaaac0 + hex caacccc0 + hex caaaaacc + hex caaccaac + hex ccaaaacc + hex 0cccccc0 + + hex ffffffff + hex f000000f + hex 0000000f + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + + hex 00000000 + hex 0cccccc0 + hex 0caaaacc + hex 0ccccaac + hex ccaaaaac + hex caaccaac + hex ccaaaacc + hex 0cccccc0 + + hex ffffffff + hex f000000f + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + +; Tile ID 200 +; From image coordinates 56, 48 + hex 00000000 + hex cccccccc + hex caaaaaac + hex caaccaac + hex ccccaac0 + hex 00caac00 + hex 00caac00 + hex 00cccc00 + + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex ff0000ff + hex ff0000ff + hex ff0000ff + + hex 00000000 + hex cccccccc + hex caaaaaac + hex caaccaac + hex 0caacccc + hex 00caac00 + hex 00caac00 + hex 00cccc00 + + hex ffffffff + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex ff0000ff + hex ff0000ff + hex ff0000ff + +; Tile ID 201 +; From image coordinates 64, 48 + hex 00000000 + hex 0cccccc0 + hex ccaaaacc + hex caaccaac + hex 0caaaac0 + hex caaccaac + hex ccaaaacc + hex 0cccccc0 + + hex ffffffff + hex f000000f + hex 00000000 + hex 00000000 + hex f000000f + hex 00000000 + hex 00000000 + hex f000000f + + hex 00000000 + hex 0cccccc0 + hex ccaaaacc + hex caaccaac + hex 0caaaac0 + hex caaccaac + hex ccaaaacc + hex 0cccccc0 + + hex ffffffff + hex f000000f + hex 00000000 + hex 00000000 + hex f000000f + hex 00000000 + hex 00000000 + hex f000000f + +; Tile ID 202 +; From image coordinates 72, 48 + hex 00000000 + hex 0cccccc0 + hex ccaaaacc + hex caaccaac + hex ccaaaaac + hex 0ccccaac + hex 0caaaacc + hex 0cccccc0 + + hex ffffffff + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex f0000000 + hex f000000f + + hex 00000000 + hex 0cccccc0 + hex ccaaaacc + hex caaccaac + hex caaaaacc + hex caacccc0 + hex ccaaaac0 + hex 0cccccc0 + + hex ffffffff + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 0000000f + hex f000000f + +; Tile ID 203 +; From image coordinates 80, 48 + hex 00000000 + hex 0cc000cc + hex 0cac0cac + hex 00cacac0 + hex 000cac00 + hex 00cacac0 + hex 0cac0cac + hex 0cc000cc + + hex ffffffff + hex f00fff00 + hex f000f000 + hex ff00000f + hex fff000ff + hex ff00000f + hex f000f000 + hex f00fff00 + + hex 00000000 + hex cc000cc0 + hex cac0cac0 + hex 0cacac00 + hex 00cac000 + hex 0cacac00 + hex cac0cac0 + hex cc000cc0 + + hex ffffffff + hex 00fff00f + hex 000f000f + hex f00000ff + hex ff000fff + hex f00000ff + hex 000f000f + hex 00fff00f + +; Tile ID 204 +; From image coordinates 88, 48 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0cccccc0 + hex 0caaaac0 + hex 0cccccc0 + hex 00000000 + + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex f000000f + hex f000000f + hex f000000f + hex ffffffff + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0cccccc0 + hex 0caaaac0 + hex 0cccccc0 + hex 00000000 + + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex f000000f + hex f000000f + hex f000000f + hex ffffffff + +; Tile ID 205 +; From image coordinates 96, 48 + hex 000cc000 + hex 00caac00 + hex 00caac00 + hex 00caac00 + hex 00caac00 + hex 000cc000 + hex 00caac00 + hex 000cc000 + + hex fff00fff + hex ff0000ff + hex ff0000ff + hex ff0000ff + hex ff0000ff + hex fff00fff + hex ff0000ff + hex fff00fff + + hex 000cc000 + hex 00caac00 + hex 00caac00 + hex 00caac00 + hex 00caac00 + hex 000cc000 + hex 00caac00 + hex 000cc000 + + hex fff00fff + hex ff0000ff + hex ff0000ff + hex ff0000ff + hex ff0000ff + hex fff00fff + hex ff0000ff + hex fff00fff + +; Tile ID 206 +; From image coordinates 104, 48 + hex 00cccc00 + hex 0caacac0 + hex caacacac + hex caacacac + hex caacacac + hex caccacac + hex 0caacac0 + hex 00cccc00 + + hex ff0000ff + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex ff0000ff + + hex 00cccc00 + hex 0cacaac0 + hex cacacaac + hex cacacaac + hex cacacaac + hex cacaccac + hex 0cacaac0 + hex 00cccc00 + + hex ff0000ff + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex ff0000ff + +; Tile ID 207 +; From image coordinates 112, 48 + hex 00ccc000 + hex 0cacac00 + hex caacaac0 + hex caacccc0 + hex caaaaac0 + hex 0caaac00 + hex 00ccc000 + hex 00000000 + + hex ff000fff + hex f00000ff + hex 0000000f + hex 0000000f + hex 0000000f + hex f00000ff + hex ff000fff + hex ffffffff + + hex 000ccc00 + hex 00cacac0 + hex 0caacaac + hex 0ccccaac + hex 0caaaaac + hex 00caaac0 + hex 000ccc00 + hex 00000000 + + hex fff000ff + hex ff00000f + hex f0000000 + hex f0000000 + hex f0000000 + hex ff00000f + hex fff000ff + hex ffffffff + +; Tile ID 208 +; From image coordinates 120, 48 + hex 00000000 + hex 0cccccc0 + hex 0caaaac0 + hex 0cccccc0 + hex 0cccccc0 + hex 0caaaac0 + hex 0cccccc0 + hex 00000000 + + hex ffffffff + hex f000000f + hex f000000f + hex f000000f + hex f000000f + hex f000000f + hex f000000f + hex ffffffff + + hex 00000000 + hex 0cccccc0 + hex 0caaaac0 + hex 0cccccc0 + hex 0cccccc0 + hex 0caaaac0 + hex 0cccccc0 + hex 00000000 + + hex ffffffff + hex f000000f + hex f000000f + hex f000000f + hex f000000f + hex f000000f + hex f000000f + hex ffffffff + +; Tile ID 209 +; From image coordinates 128, 48 + hex 000ccc00 + hex 000cac00 + hex 000ccc00 + hex 00000000 + hex 00000000 + hex 000ccc00 + hex 000cac00 + hex 000ccc00 + + hex fff000ff + hex fff000ff + hex fff000ff + hex ffffffff + hex ffffffff + hex fff000ff + hex fff000ff + hex fff000ff + + hex 00ccc000 + hex 00cac000 + hex 00ccc000 + hex 00000000 + hex 00000000 + hex 00ccc000 + hex 00cac000 + hex 00ccc000 + + hex ff000fff + hex ff000fff + hex ff000fff + hex ffffffff + hex ffffffff + hex ff000fff + hex ff000fff + hex ff000fff + +; Tile ID 210 +; From image coordinates 136, 48 + hex 000cc000 + hex 00caac00 + hex 0caccac0 + hex caaccaac + hex caaaaaac + hex caaccaac + hex caaccaac + hex cccccccc + + hex fff00fff + hex ff0000ff + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 000cc000 + hex 00caac00 + hex 0caccac0 + hex caaccaac + hex caaaaaac + hex caaccaac + hex caaccaac + hex cccccccc + + hex fff00fff + hex ff0000ff + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 211 +; From image coordinates 144, 48 + hex cccccc00 + hex caaaaac0 + hex caaccaac + hex caaaaac0 + hex caaccaac + hex caaccaac + hex caaaaac0 + hex cccccc00 + + hex 000000ff + hex 0000000f + hex 00000000 + hex 0000000f + hex 00000000 + hex 00000000 + hex 0000000f + hex 000000ff + + hex 00cccccc + hex 0caaaaac + hex caaccaac + hex 0caaaaac + hex caaccaac + hex caaccaac + hex 0caaaaac + hex 00cccccc + + hex ff000000 + hex f0000000 + hex 00000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex ff000000 + +; Tile ID 212 +; From image coordinates 152, 48 + hex 00cccc00 + hex 0caaaac0 + hex caaccaac + hex caaccccc + hex caaccccc + hex caaccaac + hex 0caaaac0 + hex 00cccc00 + + hex ff0000ff + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex ff0000ff + + hex 00cccc00 + hex 0caaaac0 + hex caaccaac + hex cccccaac + hex cccccaac + hex caaccaac + hex 0caaaac0 + hex 00cccc00 + + hex ff0000ff + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex ff0000ff + +; Tile ID 213 +; From image coordinates 160, 48 + hex ccccc000 + hex caaaac00 + hex caaccac0 + hex caaccaac + hex caaccaac + hex caaccac0 + hex caaaac00 + hex ccccc000 + + hex 00000fff + hex 000000ff + hex 0000000f + hex 00000000 + hex 00000000 + hex 0000000f + hex 000000ff + hex 00000fff + + hex 000ccccc + hex 00caaaac + hex 0caccaac + hex caaccaac + hex caaccaac + hex 0caccaac + hex 00caaaac + hex 000ccccc + + hex fff00000 + hex ff000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex ff000000 + hex fff00000 + +; Tile ID 214 +; From image coordinates 168, 48 + hex cccccccc + hex caaaaaac + hex caaccccc + hex caaaaac0 + hex caacccc0 + hex caaccccc + hex caaaaaac + hex cccccccc + + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + + hex cccccccc + hex caaaaaac + hex cccccaac + hex 0caaaaac + hex 0ccccaac + hex cccccaac + hex caaaaaac + hex cccccccc + + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 215 +; From image coordinates 176, 48 + hex cccccccc + hex caaaaaac + hex caaccccc + hex caaaaac0 + hex caacccc0 + hex caac0000 + hex caac0000 + hex cccc0000 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 0000000f + hex 0000ffff + hex 0000ffff + hex 0000ffff + + hex cccccccc + hex caaaaaac + hex cccccaac + hex 0caaaaac + hex 0ccccaac + hex 0000caac + hex 0000caac + hex 0000cccc + + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex f0000000 + hex ffff0000 + hex ffff0000 + hex ffff0000 + +; Tile ID 216 +; From image coordinates 184, 48 + hex 0cccccc0 + hex ccaaaacc + hex caaccaac + hex caaccccc + hex caacaaac + hex caaccaac + hex ccaaaaac + hex 0cccccc0 + + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + + hex 0cccccc0 + hex ccaaaacc + hex caaccaac + hex cccccaac + hex caaacaac + hex caaccaac + hex caaaaacc + hex 0cccccc0 + + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + +; Tile ID 217 +; From image coordinates 192, 48 + hex cccccccc + hex caaccaac + hex caaccaac + hex caaaaaac + hex caaccaac + hex caaccaac + hex caaccaac + hex cccccccc + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex cccccccc + hex caaccaac + hex caaccaac + hex caaaaaac + hex caaccaac + hex caaccaac + hex caaccaac + hex cccccccc + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 218 +; From image coordinates 200, 48 + hex 0cccccc0 + hex 0caaaac0 + hex 00caac00 + hex 00caac00 + hex 00caac00 + hex 00caac00 + hex 0caaaac0 + hex 0cccccc0 + + hex f000000f + hex f000000f + hex ff0000ff + hex ff0000ff + hex ff0000ff + hex ff0000ff + hex f000000f + hex f000000f + + hex 0cccccc0 + hex 0caaaac0 + hex 00caac00 + hex 00caac00 + hex 00caac00 + hex 00caac00 + hex 0caaaac0 + hex 0cccccc0 + + hex f000000f + hex f000000f + hex ff0000ff + hex ff0000ff + hex ff0000ff + hex ff0000ff + hex f000000f + hex f000000f + +; Tile ID 219 +; From image coordinates 208, 48 + hex 00cccccc + hex 00caaaac + hex 00ccaacc + hex 000caac0 + hex ccccaac0 + hex caacaac0 + hex ccaaacc0 + hex 0ccccc00 + + hex ff000000 + hex ff000000 + hex ff000000 + hex fff0000f + hex 0000000f + hex 0000000f + hex 0000000f + hex f00000ff + + hex cccccc00 + hex caaaac00 + hex ccaacc00 + hex 0caac000 + hex 0caacccc + hex 0caacaac + hex 0ccaaacc + hex 00ccccc0 + + hex 000000ff + hex 000000ff + hex 000000ff + hex f0000fff + hex f0000000 + hex f0000000 + hex f0000000 + hex ff00000f + +; Tile ID 220 +; From image coordinates 216, 48 + hex cccccccc + hex caaccaac + hex caacaacc + hex caaaacc0 + hex caaaacc0 + hex caacaacc + hex caaccaac + hex cccccccc + + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 0000000f + hex 00000000 + hex 00000000 + hex 00000000 + + hex cccccccc + hex caaccaac + hex ccaacaac + hex 0ccaaaac + hex 0ccaaaac + hex ccaacaac + hex caaccaac + hex cccccccc + + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 221 +; From image coordinates 224, 48 + hex cccc0000 + hex caac0000 + hex caac0000 + hex caac0000 + hex caac0000 + hex caaccccc + hex caaaaaac + hex cccccccc + + hex 0000ffff + hex 0000ffff + hex 0000ffff + hex 0000ffff + hex 0000ffff + hex 00000000 + hex 00000000 + hex 00000000 + + hex 0000cccc + hex 0000caac + hex 0000caac + hex 0000caac + hex 0000caac + hex cccccaac + hex caaaaaac + hex cccccccc + + hex ffff0000 + hex ffff0000 + hex ffff0000 + hex ffff0000 + hex ffff0000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 222 +; From image coordinates 232, 48 + hex ccc000cc + hex caac0cac + hex caaacaac + hex caaaaaac + hex caacacac + hex caacccac + hex caac0cac + hex cccc0ccc + + hex 000fff00 + hex 0000f000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000f000 + hex 0000f000 + + hex cc000ccc + hex cac0caac + hex caacaaac + hex caaaaaac + hex cacacaac + hex cacccaac + hex cac0caac + hex ccc0cccc + + hex 00fff000 + hex 000f0000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 000f0000 + hex 000f0000 + +; Tile ID 223 +; From image coordinates 240, 48 + hex ccc00ccc + hex caac0cac + hex caaaccac + hex caaaacac + hex caacaaac + hex caaccaac + hex caac0cac + hex cccc00cc + + hex 000ff000 + hex 0000f000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000f000 + hex 0000ff00 + + hex ccc00ccc + hex cac0caac + hex caccaaac + hex cacaaaac + hex caaacaac + hex caaccaac + hex cac0caac + hex cc00cccc + + hex 000ff000 + hex 000f0000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 000f0000 + hex 00ff0000 + +; Tile ID 224 +; From image coordinates 248, 48 + hex 00cccc00 + hex 0caaaac0 + hex caaccaac + hex caaccaac + hex caaccaac + hex caaccaac + hex 0caaaac0 + hex 00cccc00 + + hex ff0000ff + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex ff0000ff + + hex 00cccc00 + hex 0caaaac0 + hex caaccaac + hex caaccaac + hex caaccaac + hex caaccaac + hex 0caaaac0 + hex 00cccc00 + + hex ff0000ff + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex ff0000ff + +; Tile ID 225 +; From image coordinates 0, 56 + hex cccccc00 + hex caaaaac0 + hex caaccaac + hex caaccaac + hex caaaaac0 + hex caaccc00 + hex caac0000 + hex cccc0000 + + hex 000000ff + hex 0000000f + hex 00000000 + hex 00000000 + hex 0000000f + hex 000000ff + hex 0000ffff + hex 0000ffff + + hex 00cccccc + hex 0caaaaac + hex caaccaac + hex caaccaac + hex 0caaaaac + hex 00cccaac + hex 0000caac + hex 0000cccc + + hex ff000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex ff000000 + hex ffff0000 + hex ffff0000 + +; Tile ID 226 +; From image coordinates 8, 56 + hex 00cccc00 + hex 0caaaac0 + hex caaccaac + hex caaccaac + hex caaaaaac + hex caaccac0 + hex 0caaaaac + hex 00ccccc0 + + hex ff0000ff + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex f0000000 + hex ff00000f + + hex 00cccc00 + hex 0caaaac0 + hex caaccaac + hex caaccaac + hex caaaaaac + hex 0caccaac + hex caaaaac0 + hex 0ccccc00 + + hex ff0000ff + hex f000000f + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex 0000000f + hex f00000ff + +; Tile ID 227 +; From image coordinates 16, 56 + hex cccccc00 + hex caaaaac0 + hex caaccaac + hex caaccaac + hex caaaaac0 + hex caacaac0 + hex caaccaac + hex cccc0ccc + + hex 000000ff + hex 0000000f + hex 00000000 + hex 00000000 + hex 0000000f + hex 0000000f + hex 00000000 + hex 0000f000 + + hex 00cccccc + hex 0caaaaac + hex caaccaac + hex caaccaac + hex 0caaaaac + hex 0caacaac + hex caaccaac + hex ccc0cccc + + hex ff000000 + hex f0000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 000f0000 + +; Tile ID 228 +; From image coordinates 24, 56 + hex 00ccccc0 + hex 0caaaac0 + hex caaccc00 + hex 0caaaac0 + hex cccccaac + hex caaccaac + hex 0caaaac0 + hex 00cccc00 + + hex ff00000f + hex f000000f + hex 000000ff + hex f000000f + hex 00000000 + hex 00000000 + hex f000000f + hex ff0000ff + + hex 0ccccc00 + hex 0caaaac0 + hex 00cccaac + hex 0caaaac0 + hex caaccccc + hex caaccaac + hex 0caaaac0 + hex 00cccc00 + + hex f00000ff + hex f000000f + hex ff000000 + hex f000000f + hex 00000000 + hex 00000000 + hex f000000f + hex ff0000ff + +; Tile ID 229 +; From image coordinates 32, 56 + hex cccccccc + hex caaaaaac + hex cccaaccc + hex 00caac00 + hex 00caac00 + hex 00caac00 + hex 00caac00 + hex 00cccc00 + + hex 00000000 + hex 00000000 + hex 00000000 + hex ff0000ff + hex ff0000ff + hex ff0000ff + hex ff0000ff + hex ff0000ff + + hex cccccccc + hex caaaaaac + hex cccaaccc + hex 00caac00 + hex 00caac00 + hex 00caac00 + hex 00caac00 + hex 00cccc00 + + hex 00000000 + hex 00000000 + hex 00000000 + hex ff0000ff + hex ff0000ff + hex ff0000ff + hex ff0000ff + hex ff0000ff + +; Tile ID 230 +; From image coordinates 40, 56 + hex ccc00ccc + hex caaccaac + hex caaccaac + hex caaccaac + hex caaccaac + hex caaccaac + hex 0caaaac0 + hex 00cccc00 + + hex 000ff000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex ff0000ff + + hex ccc00ccc + hex caaccaac + hex caaccaac + hex caaccaac + hex caaccaac + hex caaccaac + hex 0caaaac0 + hex 00cccc00 + + hex 000ff000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex ff0000ff + +; Tile ID 231 +; From image coordinates 48, 56 + hex cccccccc + hex caaccaac + hex caaccaac + hex caaccaac + hex ccaccacc + hex 0caaaac0 + hex 0ccaacc0 + hex 00cccc00 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex f000000f + hex ff0000ff + + hex cccccccc + hex caaccaac + hex caaccaac + hex caaccaac + hex ccaccacc + hex 0caaaac0 + hex 0ccaacc0 + hex 00cccc00 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex f000000f + hex ff0000ff + +; Tile ID 232 +; From image coordinates 56, 56 + hex cccccccc + hex caacacac + hex caacacac + hex caacacac + hex caacacac + hex caaaaaac + hex cccacacc + hex 0cccccc0 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + + hex cccccccc + hex cacacaac + hex cacacaac + hex cacacaac + hex cacacaac + hex caaaaaac + hex ccacaccc + hex 0cccccc0 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + +; Tile ID 233 +; From image coordinates 64, 56 + hex cccc0ccc + hex caacccac + hex caaacacc + hex ccaaacc0 + hex 0ccaaacc + hex ccacaaac + hex cacccaac + hex ccc0cccc + + hex 0000f000 + hex 00000000 + hex 00000000 + hex 0000000f + hex f0000000 + hex 00000000 + hex 00000000 + hex 000f0000 + + hex ccc0cccc + hex cacccaac + hex ccacaaac + hex 0ccaaacc + hex ccaaacc0 + hex caaacacc + hex caacccac + hex cccc0ccc + + hex 000f0000 + hex 00000000 + hex 00000000 + hex f0000000 + hex 0000000f + hex 00000000 + hex 00000000 + hex 0000f000 + +; Tile ID 234 +; From image coordinates 72, 56 + hex cccccccc + hex caaccaac + hex caaccaac + hex ccaaaacc + hex 0ccaacc0 + hex 00caac00 + hex 00caac00 + hex 00cccc00 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex ff0000ff + hex ff0000ff + hex ff0000ff + + hex cccccccc + hex caaccaac + hex caaccaac + hex ccaaaacc + hex 0ccaacc0 + hex 00caac00 + hex 00caac00 + hex 00cccc00 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f000000f + hex ff0000ff + hex ff0000ff + hex ff0000ff + +; Tile ID 235 +; From image coordinates 80, 56 + hex cccccccc + hex caaaaaac + hex ccccaaac + hex 00caaac0 + hex 0caaac00 + hex caaacccc + hex caaaaaac + hex cccccccc + + hex 00000000 + hex 00000000 + hex 00000000 + hex ff00000f + hex f00000ff + hex 00000000 + hex 00000000 + hex 00000000 + + hex cccccccc + hex caaaaaac + hex caaacccc + hex 0caaac00 + hex 00caaac0 + hex ccccaaac + hex caaaaaac + hex cccccccc + + hex 00000000 + hex 00000000 + hex 00000000 + hex f00000ff + hex ff00000f + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 236 +; From image coordinates 88, 56 + 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 +; From image coordinates 96, 56 + 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 +; From image coordinates 104, 56 + 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 +; From image coordinates 112, 56 + 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 +; From image coordinates 120, 56 + 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 241 +; From image coordinates 128, 56 + 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 242 +; From image coordinates 136, 56 + 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 243 +; From image coordinates 144, 56 + 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 244 +; From image coordinates 152, 56 + 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 245 +; From image coordinates 160, 56 + 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 246 +; From image coordinates 168, 56 + 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 247 +; From image coordinates 176, 56 + 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 248 +; From image coordinates 184, 56 + 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 249 +; From image coordinates 192, 56 + 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 250 +; From image coordinates 200, 56 + hex 0000cccc + hex 00cc2222 + hex 0c224444 + hex 0c244222 + hex c2442ccc + hex c242cc00 + hex c242c0c0 + hex c242c00c + + hex ffff0000 + hex ff000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 000000ff + hex 00000f0f + hex 00000ff0 + + hex cccc0000 + hex 2222cc00 + hex 444422c0 + hex 222442c0 + hex ccc2442c + hex 00cc242c + hex 0c0c242c + hex c00c242c + + hex 0000ffff + hex 000000ff + hex 0000000f + hex 0000000f + hex 00000000 + hex ff000000 + hex f0f00000 + hex 0ff00000 + +; Tile ID 251 +; From image coordinates 208, 56 + hex cccccccc + hex 22222222 + hex 44444444 + hex 22222222 + hex cccccccc + hex 00c00c00 + hex 0c0000c0 + hex c000000c + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ff0ff0ff + hex f0ffff0f + hex 0ffffff0 + + hex cccccccc + hex 22222222 + hex 44444444 + hex 22222222 + hex cccccccc + hex 00c00c00 + hex 0c0000c0 + hex c000000c + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ff0ff0ff + hex f0ffff0f + hex 0ffffff0 + +; Tile ID 252 +; From image coordinates 216, 56 + hex cccc0000 + hex 2222cc00 + hex 444422c0 + hex 222442c0 + hex ccc2442c + hex 00cc242c + hex 0c0c242c + hex c00c242c + + hex 0000ffff + hex 000000ff + hex 0000000f + hex 0000000f + hex 00000000 + hex ff000000 + hex f0f00000 + hex 0ff00000 + + hex 0000cccc + hex 00cc2222 + hex 0c224444 + hex 0c244222 + hex c2442ccc + hex c242cc00 + hex c242c0c0 + hex c242c00c + + hex ffff0000 + hex ff000000 + hex f0000000 + hex f0000000 + hex 00000000 + hex 000000ff + hex 00000f0f + hex 00000ff0 + +; Tile ID 253 +; From image coordinates 224, 56 + 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 254 +; From image coordinates 232, 56 + 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 255 +; From image coordinates 240, 56 + hex 00000099 + hex 00000999 + hex 00009999 + hex 00099999 + hex 00999999 + hex 09944499 + hex 09444449 + hex 99444449 + + hex ffffff00 + hex fffff000 + hex ffff0000 + hex fff00000 + hex ff000000 + hex f0000000 + hex f0000000 + hex 00000000 + + hex 99000000 + hex 99900000 + hex 99990000 + hex 99999000 + hex 99999900 + hex 99444990 + hex 94444490 + hex 94444499 + + hex 00ffffff + hex 000fffff + hex 0000ffff + hex 00000fff + hex 000000ff + hex 0000000f + hex 0000000f + hex 00000000 + +; Tile ID 256 +; From image coordinates 248, 56 + hex 99000000 + hex 94400000 + hex 44440000 + hex 44444000 + hex 94449900 + hex 99999990 + hex 99999990 + hex 99994499 + + hex 00ffffff + hex 000fffff + hex 0000ffff + hex 00000fff + hex 000000ff + hex 0000000f + hex 0000000f + hex 00000000 + + hex 00000099 + hex 00000449 + hex 00004444 + hex 00044444 + hex 00994449 + hex 09999999 + hex 09999999 + hex 99449999 + + hex ffffff00 + hex fffff000 + hex ffff0000 + hex fff00000 + hex ff000000 + hex f0000000 + hex f0000000 + hex 00000000 + +; Tile ID 257 +; From image coordinates 0, 64 + 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 258 +; From image coordinates 8, 64 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000001 + hex 00000001 + + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex fffffff0 + hex fffffff0 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 10000000 + hex 10000000 + + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 0fffffff + hex 0fffffff + +; Tile ID 259 +; From image coordinates 16, 64 + hex 00000000 + hex 00000000 + hex 00100001 + hex 01f1001f + hex 1fcf11fc + hex 1fcfcfcc + hex fcccfccc + hex fccccccf + + hex ffffffff + hex ffffffff + hex ff0ffff0 + hex f000ff00 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 00000000 + hex 00000000 + hex 10000100 + hex f1001f10 + hex cf11fcf1 + hex ccfcfcf1 + hex cccfcccf + hex fccccccf + + hex ffffffff + hex ffffffff + hex 0ffff0ff + hex 00ff000f + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 260 +; From image coordinates 24, 64 + hex 00000000 + hex 00000000 + hex 00000000 + hex 10000000 + hex f1000000 + hex f1000000 + hex f1000000 + hex c1000000 + + hex ffffffff + hex ffffffff + hex ffffffff + hex 0fffffff + hex 00ffffff + hex 00ffffff + hex 00ffffff + hex 00ffffff + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000001 + hex 0000001f + hex 0000001f + hex 0000001f + hex 0000001c + + hex ffffffff + hex ffffffff + hex ffffffff + hex fffffff0 + hex ffffff00 + hex ffffff00 + hex ffffff00 + hex ffffff00 + +; Tile ID 261 +; From image coordinates 32, 64 + 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 262 +; From image coordinates 40, 64 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000001 + + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex fffffff0 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 10000000 + + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 0fffffff + +; Tile ID 263 +; From image coordinates 48, 64 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00100001 + hex 01f1001f + hex 1fcf11fc + hex 1fcfcfcc + hex fcccfccc + + hex ffffffff + hex ffffffff + hex ffffffff + hex ff0ffff0 + hex f000ff00 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 10000100 + hex f1001f10 + hex cf11fcf1 + hex ccfcfcf1 + hex cccfcccf + + hex ffffffff + hex ffffffff + hex ffffffff + hex 0ffff0ff + hex 00ff000f + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 264 +; From image coordinates 56, 64 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 10000000 + hex f1000000 + hex f1000000 + hex f1000000 + + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex 0fffffff + hex 00ffffff + hex 00ffffff + hex 00ffffff + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000001 + hex 0000001f + hex 0000001f + hex 0000001f + + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex fffffff0 + hex ffffff00 + hex ffffff00 + hex ffffff00 + +; Tile ID 265 +; From image coordinates 64, 64 + 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 266 +; From image coordinates 72, 64 + 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 267 +; From image coordinates 80, 64 + 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 268 +; From image coordinates 88, 64 + 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 269 +; From image coordinates 96, 64 + 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 270 +; From image coordinates 104, 64 + 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 271 +; From image coordinates 112, 64 + 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 272 +; From image coordinates 120, 64 + 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 273 +; From image coordinates 128, 64 + 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 274 +; From image coordinates 136, 64 + 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 275 +; From image coordinates 144, 64 + 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 276 +; From image coordinates 152, 64 + 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 277 +; From image coordinates 160, 64 + 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 278 +; From image coordinates 168, 64 + 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 279 +; From image coordinates 176, 64 + 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 280 +; From image coordinates 184, 64 + 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 281 +; From image coordinates 192, 64 + 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 282 +; From image coordinates 200, 64 + hex c242c00c + hex c242c0c0 + hex c242cc00 + hex c242c000 + hex c242c000 + hex c242cc00 + hex c242c0c0 + hex c242c00c + + hex 00000ff0 + hex 00000f0f + hex 000000ff + hex 00000fff + hex 00000fff + hex 000000ff + hex 00000f0f + hex 00000ff0 + + hex c00c242c + hex 0c0c242c + hex 00cc242c + hex 000c242c + hex 000c242c + hex 00cc242c + hex 0c0c242c + hex c00c242c + + hex 0ff00000 + hex f0f00000 + hex ff000000 + hex fff00000 + hex fff00000 + hex ff000000 + hex f0f00000 + hex 0ff00000 + +; Tile ID 283 +; From image coordinates 208, 64 + hex c000000c + hex 0c0000c0 + hex 00c00c00 + hex 000cc000 + hex 000cc000 + hex 00c00c00 + hex 0c0000c0 + hex c000000c + + hex 0ffffff0 + hex f0ffff0f + hex ff0ff0ff + hex fff00fff + hex fff00fff + hex ff0ff0ff + hex f0ffff0f + hex 0ffffff0 + + hex c000000c + hex 0c0000c0 + hex 00c00c00 + hex 000cc000 + hex 000cc000 + hex 00c00c00 + hex 0c0000c0 + hex c000000c + + hex 0ffffff0 + hex f0ffff0f + hex ff0ff0ff + hex fff00fff + hex fff00fff + hex ff0ff0ff + hex f0ffff0f + hex 0ffffff0 + +; Tile ID 284 +; From image coordinates 216, 64 + hex c00c242c + hex 0c0c242c + hex 00cc242c + hex 000c242c + hex 000c242c + hex 00cc242c + hex 0c0c242c + hex c00c242c + + hex 0ff00000 + hex f0f00000 + hex ff000000 + hex fff00000 + hex fff00000 + hex ff000000 + hex f0f00000 + hex 0ff00000 + + hex c242c00c + hex c242c0c0 + hex c242cc00 + hex c242c000 + hex c242c000 + hex c242cc00 + hex c242c0c0 + hex c242c00c + + hex 00000ff0 + hex 00000f0f + hex 000000ff + hex 00000fff + hex 00000fff + hex 000000ff + hex 00000f0f + hex 00000ff0 + +; Tile ID 285 +; From image coordinates 224, 64 + 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 286 +; From image coordinates 232, 64 + 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 287 +; From image coordinates 240, 64 + hex 99444449 + hex 99944499 + hex 99999999 + hex 09444fff + hex 0000ffff + hex 0000ffff + hex 0000ffff + hex 00000fff + + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex ffff0000 + hex ffff0000 + hex ffff0000 + hex fffff000 + + hex 94444499 + hex 99444999 + hex 99999999 + hex fff44490 + hex ffff0000 + hex ffff0000 + hex ffff0000 + hex fff00000 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 0000ffff + hex 0000ffff + hex 0000ffff + hex 000fffff + +; Tile ID 288 +; From image coordinates 248, 64 + hex 99994449 + hex 99999449 + hex 99999999 + hex fff44490 + hex ffff0000 + hex ff9f0000 + hex ff9f0000 + hex f9f00000 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 0000ffff + hex 0000ffff + hex 0000ffff + hex 000fffff + + hex 94449999 + hex 94499999 + hex 99999999 + hex 09444fff + hex 0000ffff + hex 0000f9ff + hex 0000f9ff + hex 00000f9f + + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex ffff0000 + hex ffff0000 + hex ffff0000 + hex fffff000 + +; Tile ID 289 +; From image coordinates 0, 72 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00111000 + hex 001ff100 + hex 001fcf10 + hex 001fccf1 + + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ff000fff + hex ff0000ff + hex ff00000f + hex ff000000 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00011100 + hex 001ff100 + hex 01fcf100 + hex 1fccf100 + + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex fff000ff + hex ff0000ff + hex f00000ff + hex 000000ff + +; Tile ID 290 +; From image coordinates 8, 72 + hex 00000001 + hex 0000001c + hex 000011ff + hex 0001ffcc + hex 001fcccc + hex 01fccccc + hex 1fcccccc + hex fccccccc + + hex fffffff0 + hex ffffff00 + hex ffff0000 + hex fff00000 + hex ff000000 + hex f0000000 + hex 00000000 + hex 00000000 + + hex 10000000 + hex c1000000 + hex ff110000 + hex ccff1000 + hex ccccf100 + hex cccccf10 + hex ccccccf1 + hex cccccccf + + hex 0fffffff + hex 00ffffff + hex 0000ffff + hex 00000fff + hex 000000ff + hex 0000000f + hex 00000000 + hex 00000000 + +; Tile ID 291 +; From image coordinates 16, 72 + hex fccccccc + hex fcccfcfc + hex cccccccc + hex cccccccc + hex cccccccc + hex ccccfccc + hex cccf2fff + hex cccffccf + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex cccccccf + hex cfcfcccf + hex cccccccc + hex cccccccc + hex cccccccc + hex cccfcccc + hex fff2fccc + hex fccffccc + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 292 +; From image coordinates 24, 72 + hex ff100000 + hex ccf10000 + hex cccf1000 + hex cccf1000 + hex cccf1000 + hex cff10000 + hex f1100000 + hex 10000000 + + hex 000fffff + hex 0000ffff + hex 00000fff + hex 00000fff + hex 00000fff + hex 0000ffff + hex 000fffff + hex 0fffffff + + hex 000001ff + hex 00001fcc + hex 0001fccc + hex 0001fccc + hex 0001fccc + hex 00001ffc + hex 0000011f + hex 00000001 + + hex fffff000 + hex ffff0000 + hex fff00000 + hex fff00000 + hex fff00000 + hex ffff0000 + hex fffff000 + hex fffffff0 + +; Tile ID 293 +; From image coordinates 32, 72 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00111000 + hex 001ff100 + hex 001fcf10 + + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ff000fff + hex ff0000ff + hex ff00000f + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00011100 + hex 001ff100 + hex 01fcf100 + + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex fff000ff + hex ff0000ff + hex f00000ff + +; Tile ID 294 +; From image coordinates 40, 72 + hex 00000001 + hex 00000001 + hex 0000001c + hex 000011ff + hex 0001ffcc + hex 001fcccc + hex 01fccccc + hex 1fcccccc + + hex fffffff0 + hex fffffff0 + hex ffffff00 + hex ffff0000 + hex fff00000 + hex ff000000 + hex f0000000 + hex 00000000 + + hex 10000000 + hex 10000000 + hex c1000000 + hex ff110000 + hex ccff1000 + hex ccccf100 + hex cccccf10 + hex ccccccf1 + + hex 0fffffff + hex 0fffffff + hex 00ffffff + hex 0000ffff + hex 00000fff + hex 000000ff + hex 0000000f + hex 00000000 + +; Tile ID 295 +; From image coordinates 48, 72 + hex fccccccf + hex fccccccc + hex fcccfcfc + hex cccccccc + hex cccccccc + hex cccccccc + hex ccccfccc + hex cccf2fff + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex fccccccf + hex cccccccf + hex cfcfcccf + hex cccccccc + hex cccccccc + hex cccccccc + hex cccfcccc + hex fff2fccc + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 296 +; From image coordinates 56, 72 + hex c1000000 + hex ff100000 + hex ccf10000 + hex cccf1000 + hex cccf1000 + hex cccf1000 + hex cff10000 + hex f1100000 + + hex 00ffffff + hex 000fffff + hex 0000ffff + hex 00000fff + hex 00000fff + hex 00000fff + hex 0000ffff + hex 000fffff + + hex 0000001c + hex 000001ff + hex 00001fcc + hex 0001fccc + hex 0001fccc + hex 0001fccc + hex 00001ffc + hex 0000011f + + hex ffffff00 + hex fffff000 + hex ffff0000 + hex fff00000 + hex fff00000 + hex fff00000 + hex ffff0000 + hex fffff000 + +; Tile ID 297 +; From image coordinates 64, 72 + 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 298 +; From image coordinates 72, 72 + 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 299 +; From image coordinates 80, 72 + 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 300 +; From image coordinates 88, 72 + 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 301 +; From image coordinates 96, 72 + 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 302 +; From image coordinates 104, 72 + 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 303 +; From image coordinates 112, 72 + 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 304 +; From image coordinates 120, 72 + 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 305 +; From image coordinates 128, 72 + 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 306 +; From image coordinates 136, 72 + 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 307 +; From image coordinates 144, 72 + 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 308 +; From image coordinates 152, 72 + 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 309 +; From image coordinates 160, 72 + 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 310 +; From image coordinates 168, 72 + 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 311 +; From image coordinates 176, 72 + 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 312 +; From image coordinates 184, 72 + 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 313 +; From image coordinates 192, 72 + 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 314 +; From image coordinates 200, 72 + hex c242c00c + hex c242c0c0 + hex c242cc00 + hex c2442ccc + hex 0c244222 + hex 0c224444 + hex 00cc2222 + hex 0000cccc + + hex 00000ff0 + hex 00000f0f + hex 000000ff + hex 00000000 + hex f0000000 + hex f0000000 + hex ff000000 + hex ffff0000 + + hex c00c242c + hex 0c0c242c + hex 00cc242c + hex ccc2442c + hex 222442c0 + hex 444422c0 + hex 2222cc00 + hex cccc0000 + + hex 0ff00000 + hex f0f00000 + hex ff000000 + hex 00000000 + hex 0000000f + hex 0000000f + hex 000000ff + hex 0000ffff + +; Tile ID 315 +; From image coordinates 208, 72 + hex c000000c + hex 0c0000c0 + hex 00c00c00 + hex cccccccc + hex 22222222 + hex 44444444 + hex 22222222 + hex cccccccc + + hex 0ffffff0 + hex f0ffff0f + hex ff0ff0ff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex c000000c + hex 0c0000c0 + hex 00c00c00 + hex cccccccc + hex 22222222 + hex 44444444 + hex 22222222 + hex cccccccc + + hex 0ffffff0 + hex f0ffff0f + hex ff0ff0ff + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 316 +; From image coordinates 216, 72 + hex c00c242c + hex 0c0c242c + hex 00cc242c + hex ccc2442c + hex 222442c0 + hex 444422c0 + hex 2222cc00 + hex cccc0000 + + hex 0ff00000 + hex f0f00000 + hex ff000000 + hex 00000000 + hex 0000000f + hex 0000000f + hex 000000ff + hex 0000ffff + + hex c242c00c + hex c242c0c0 + hex c242cc00 + hex c2442ccc + hex 0c244222 + hex 0c224444 + hex 00cc2222 + hex 0000cccc + + hex 00000ff0 + hex 00000f0f + hex 000000ff + hex 00000000 + hex f0000000 + hex f0000000 + hex ff000000 + hex ffff0000 + +; Tile ID 317 +; From image coordinates 224, 72 + 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 318 +; From image coordinates 232, 72 + 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 319 +; From image coordinates 240, 72 + 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 320 +; From image coordinates 248, 72 + 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 321 +; From image coordinates 0, 80 + hex 0001ffff + hex 00001cfc + hex 000001fc + hex 000001fc + hex 000001fc + hex 0000001f + hex 00000001 + hex 00000000 + + hex fff00000 + hex ffff0000 + hex fffff000 + hex fffff000 + hex fffff000 + hex ffffff00 + hex fffffff0 + hex ffffffff + + hex ffff1000 + hex cfc10000 + hex cf100000 + hex cf100000 + hex cf100000 + hex f1000000 + hex 10000000 + hex 00000000 + + hex 00000fff + hex 0000ffff + hex 000fffff + hex 000fffff + hex 000fffff + hex 00ffffff + hex 0fffffff + hex ffffffff + +; Tile ID 322 +; From image coordinates 8, 80 + hex cccccccc + hex cccccccc + hex cccccccc + hex cccccccc + hex cccccccc + hex ffcccfff + hex 11fff111 + hex 001c1000 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex ff000fff + + hex cccccccc + hex cccccccc + hex cccccccc + hex cccccccc + hex cccccccc + hex fffcccff + hex 111fff11 + hex 0001c100 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex fff000ff + +; Tile ID 323 +; From image coordinates 16, 80 + hex cccccccf + hex cccccccf + hex cccccccf + hex ccccccf1 + hex cccccf10 + hex ffcccf10 + hex 11fff100 + hex 001c1000 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 0000000f + hex 000000ff + hex ff000fff + + hex fccccccc + hex fccccccc + hex fccccccc + hex 1fcccccc + hex 01fccccc + hex 01fcccff + hex 001fff11 + hex 0001c100 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex f0000000 + hex ff000000 + hex fff000ff + +; Tile ID 324 +; From image coordinates 24, 80 + hex 10000000 + hex 10000000 + hex 10000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 0fffffff + hex 0fffffff + hex 0fffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + + hex 00000001 + hex 00000001 + hex 00000001 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex fffffff0 + hex fffffff0 + hex fffffff0 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 325 +; From image coordinates 32, 80 + hex 001fccf1 + hex 0001ffff + hex 00001cfc + hex 000001fc + hex 000001fc + hex 000001fc + hex 0000001f + hex 00000001 + + hex ff000000 + hex fff00000 + hex ffff0000 + hex fffff000 + hex fffff000 + hex fffff000 + hex ffffff00 + hex fffffff0 + + hex 1fccf100 + hex ffff1000 + hex cfc10000 + hex cf100000 + hex cf100000 + hex cf100000 + hex f1000000 + hex 10000000 + + hex 000000ff + hex 00000fff + hex 0000ffff + hex 000fffff + hex 000fffff + hex 000fffff + hex 00ffffff + hex 0fffffff + +; Tile ID 326 +; From image coordinates 40, 80 + hex fccccccc + hex cccccccc + hex cccccccc + hex cccccccc + hex cccccccc + hex cccccccc + hex ffcccfff + hex cccccccc + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex cccccccf + hex cccccccc + hex cccccccc + hex cccccccc + hex cccccccc + hex cccccccc + hex fffcccff + hex cccccccc + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +; Tile ID 327 +; From image coordinates 48, 80 + hex cccffccf + hex cccccccf + hex cccccccf + hex cccccccf + hex ccccccf1 + hex cccccf10 + hex ffcccf10 + hex ccccc100 + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000000f + hex 0000000f + hex 000000ff + + hex fccffccc + hex fccccccc + hex fccccccc + hex fccccccc + hex 1fcccccc + hex 01fccccc + hex 01fcccff + hex 001ccccc + + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex f0000000 + hex f0000000 + hex ff000000 + +; Tile ID 328 +; From image coordinates 56, 80 + hex 10000000 + hex 10000000 + hex 10000000 + hex 10000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex 0fffffff + hex 0fffffff + hex 0fffffff + hex 0fffffff + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + + hex 00000001 + hex 00000001 + hex 00000001 + hex 00000001 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + hex fffffff0 + hex fffffff0 + hex fffffff0 + hex fffffff0 + hex ffffffff + hex ffffffff + hex ffffffff + hex ffffffff + +; Tile ID 329 +; From image coordinates 64, 80 + 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 330 +; From image coordinates 72, 80 + 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 331 +; From image coordinates 80, 80 + 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 332 +; From image coordinates 88, 80 + 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 333 +; From image coordinates 96, 80 + 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 334 +; From image coordinates 104, 80 + 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 335 +; From image coordinates 112, 80 + 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 336 +; From image coordinates 120, 80 + 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 337 +; From image coordinates 128, 80 + 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 338 +; From image coordinates 136, 80 + 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 339 +; From image coordinates 144, 80 + 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 340 +; From image coordinates 152, 80 + 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 341 +; From image coordinates 160, 80 + 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 342 +; From image coordinates 168, 80 + 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 343 +; From image coordinates 176, 80 + 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 344 +; From image coordinates 184, 80 + 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 345 +; From image coordinates 192, 80 + 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 346 +; From image coordinates 200, 80 + 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 347 +; From image coordinates 208, 80 + 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 348 +; From image coordinates 216, 80 + 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 349 +; From image coordinates 224, 80 + 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 350 +; From image coordinates 232, 80 + 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 351 +; From image coordinates 240, 80 + 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 352 +; From image coordinates 248, 80 + 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 353 +; From image coordinates 0, 88 + 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 354 +; From image coordinates 8, 88 + 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 355 +; From image coordinates 16, 88 + 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 356 +; From image coordinates 24, 88 + 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 357 +; From image coordinates 32, 88 + 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 358 +; From image coordinates 40, 88 + 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 359 +; From image coordinates 48, 88 + 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 360 +; From image coordinates 56, 88 + 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/lite/_FileInformation.txt b/demos/lite/_FileInformation.txt new file mode 100644 index 0000000..d91afbd --- /dev/null +++ b/demos/lite/_FileInformation.txt @@ -0,0 +1,2 @@ +GTEToolDemo=Type(B3),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000) +GTELiteDemo=Type(B3),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000) diff --git a/demos/lite/build-image.bat b/demos/lite/build-image.bat new file mode 100644 index 0000000..d793d5d --- /dev/null +++ b/demos/lite/build-image.bat @@ -0,0 +1,19 @@ +echo off + +REM Copy all of the assets into the ProDOS image for emulator testing +REM +REM Pass the path of the Cadius tool as the first argument (%1) + +set CADIUS="%1" +set IMAGE="..\\..\\emu\\Target.2mg" +set FOLDER="/GTEDEV/Lite" + +REM Cadius does not overwrite files, so clear the root folder first +%CADIUS% DELETEFOLDER %IMAGE% %FOLDER% +%CADIUS% CREATEFOLDER %IMAGE% %FOLDER% + +REM Now copy files and folders as needed +%CADIUS% ADDFILE %IMAGE% %FOLDER% .\GTELiteDemo +%CADIUS% ADDFILE %IMAGE% %FOLDER% ..\..\src\Tool160 + +REM Copy in the image assets diff --git a/demos/lite/font.s b/demos/lite/font.s new file mode 100644 index 0000000..8c71e10 --- /dev/null +++ b/demos/lite/font.s @@ -0,0 +1,668 @@ +**************************************** +* FONT ENGINE (v3?) * +* * +* Dagen Brock * +* 2013-07-20 * +**************************************** +* A= ptr to string preceded by length * +* X= screen location * +**************************************** +; each char: +; draw char at loc +; update loc +; see if length hit - no? back to draw char + rel + mx %00 +]F_Length ds 2 ;length of string (only one byte currently used) +]F_CharIdx ds 2 ;index of current character +]F_CurrentPos ds 2 ;current top left char position +]F_StrPtr equ $01 ;pointer to string (including length byte) / DP +]F_StrClr equ $03 + +DrawString + pha ; local variable space + pha + tsc + phd + tcd + +; sta ]F_StrPtr ; (done in pha init above) store at dp 0 ($00) for indirect loads + stx ]F_CurrentPos + sty ]F_StrClr + stz ]F_CharIdx + lda (]F_StrPtr) + and #$00ff ;strip off first char (len is only one byte) + sta ]F_Length ;get our length byte + +NextChar lda ]F_CharIdx + cmp ]F_Length + bne :notDone + ldy ]F_StrClr ;restore the color pattern + pld + pla + pla + rts ;DONE! Return to caller + +:notDone inc ]F_CharIdx + ldy ]F_CharIdx + lda (]F_StrPtr),y ;get next char! + and #$00FF ;mask high byte + sec + sbc #' ' ;our table starts with space ' ' + asl ;*2 + tay + ldx ]F_CurrentPos + jsr :drawChar + inc ]F_CurrentPos ;compare to addition time (?) + inc ]F_CurrentPos + inc ]F_CurrentPos + inc ]F_CurrentPos ;update screen pos (2 words=8 pixels) + bra NextChar + +;x = TopLeft screen pos +;y = char table offset +:drawChar lda FontTable,y ;get real address of char data + sec + sbc #FontData ;pivot offset - now a is offset of fontdata + tay ;so we'll index with that + + lda FontData,y + and ]F_StrClr + stal $E12000,x + + lda FontData+2,y + and ]F_StrClr + stal $E12000+2,x + + lda FontData+4,y + and ]F_StrClr + stal $E12000+160,x + + lda FontData+6,y + and ]F_StrClr + stal $E12000+160+2,x + + lda FontData+8,y + and ]F_StrClr + stal {$E12000+160*2},x + + lda FontData+10,y + and ]F_StrClr + stal {$E12000+160*2+2},x + + lda FontData+12,y + and ]F_StrClr + stal {$E12000+160*3},x + + lda FontData+14,y + and ]F_StrClr + stal {$E12000+160*3+2},x + + lda FontData+16,y + and ]F_StrClr + stal {$E12000+160*4},x + + lda FontData+18,y + and ]F_StrClr + stal {$E12000+160*4+2},x + + lda FontData+20,y + and ]F_StrClr + stal {$E12000+160*5},x + + lda FontData+22,y + and ]F_StrClr + stal {$E12000+160*5+2},x + rts + +FontTable dw s_Space + dw s_Exclaim + dw s_Quote + dw s_Number + dw s_Dollar + dw s_Percent + dw s_Amper + dw s_Single + dw s_OpenParen + dw s_CloseParen + dw s_Asterix + dw s_Plus + dw s_Comma + dw s_Minus + dw s_Period + dw s_Slash + dw s_N0 + dw s_N1 + dw s_N2 + dw s_N3 + dw s_N4 + dw s_N5 + dw s_N6 + dw s_N7 + dw s_N8 + dw s_N9 + dw s_Colon + dw s_Semi + dw s_LAngle + dw s_Equal + dw s_RAngle + dw s_Question + dw s_At + dw s_A + dw s_B + dw s_C + dw s_D + dw s_E + dw s_F + dw s_G + dw s_H + dw s_I + dw s_J + dw s_K + dw s_L + dw s_M + dw s_N + dw s_O + dw s_P + dw s_Q + dw s_R + dw s_S + dw s_T + dw s_U + dw s_V + dw s_W + dw s_X + dw s_Y + dw s_Z + dw s_LBracket + dw s_BackSlash + dw s_RBracket + dw s_Carot + dw s_UnderLine + +FontData = * +s_Space hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +s_Exclaim hex 000FF000 + hex 000FF000 + hex 000FF000 + hex 000FF000 + hex 00000000 + hex 000FF000 + +s_Quote hex 0FF00FF0 + hex 00F000F0 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +s_Number hex 00000000 + hex 00F00F00 + hex 0FFFFFF0 + hex 00F00F00 + hex 0FFFFFF0 + hex 00F00F00 + +s_Dollar hex 000F0F00 + hex 00FFFFF0 + hex 0F0F0F00 + hex 00FFFF00 + hex 000F0FF0 + hex 0FFFFF00 + +s_Percent hex 0FF000F0 + hex 00000F00 + hex 0000F000 + hex 000F0000 + hex 00F00000 + hex 0F000FF0 + +s_Amper hex 000FF000 + hex 00F00F00 + hex 0F00F000 + hex 00F000F0 + hex 0F0FFF00 + hex 00F0F000 + +s_Single hex 000FF000 + hex 0000F000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + +s_OpenParen hex 000FF000 + hex 00FF0000 + hex 0FF00000 + hex 0FF00000 + hex 00FF0000 + hex 000FF000 + +s_CloseParen hex 000FF000 + hex 0000FF00 + hex 00000FF0 + hex 00000FF0 + hex 0000FF00 + hex 000FF000 + + +s_Asterix hex 00000000 + hex 00F0F0F0 + hex 000FFF00 + hex 00FFFFF0 + hex 000FFF00 + hex 00F0F0F0 + +s_Plus hex 000F0000 + hex 000F0000 + hex 0FFFFF00 + hex 000F0000 + hex 000F0000 + hex 00000000 + +s_Comma hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000FF00 + hex 0000F000 + +s_Minus hex 00000000 + hex 00000000 + hex 0FFFFF00 + hex 00000000 + hex 00000000 + hex 00000000 + + +s_Period hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 0000FF00 + hex 0000FF00 + +s_Slash hex 000000F0 + hex 00000F00 + hex 0000F000 + hex 000F0000 + hex 00F00000 + hex 0F000000 + +s_N0 hex 00FFFF00 + hex 0F000FF0 + hex 0F00F0F0 + hex 0F0F00F0 + hex 0FF000F0 + hex 00FFFF00 + +s_N1 hex 000F0000 + hex 00FF0000 + hex 000F0000 + hex 000F0000 + hex 000F0000 + hex 00FFF000 + +s_N2 hex 00FFFF00 + hex 0F0000F0 + hex 00000F00 + hex 000FF000 + hex 00F00000 + hex 0FFFFFF0 + +s_N3 hex 00FFFF00 + hex 000000F0 + hex 000FFF00 + hex 000000F0 + hex 000000F0 + hex 00FFFF00 + +s_N4 hex 0000FF00 + hex 000F0F00 + hex 00F00F00 + hex 0FFFFFF0 + hex 00000F00 + hex 00000F00 + +s_N5 hex 0FFFFFF0 + hex 0F000000 + hex 0FFFFF00 + hex 000000F0 + hex 0F0000F0 + hex 00FFFF00 + +s_N6 hex 000FFF00 + hex 00F00000 + hex 0F000000 + hex 0FFFFF00 + hex 0F0000F0 + hex 00FFFFF0 + +s_N7 hex 0FFFFFF0 + hex 000000F0 + hex 00000F00 + hex 0000F000 + hex 000F0000 + hex 000F0000 + +s_N8 hex 00FFFF00 + hex 0F0000F0 + hex 00FFFF00 + hex 0F0000F0 + hex 0F0000F0 + hex 00FFFF00 + +s_N9 hex 00FFFF00 + hex 0F0000F0 + hex 00FFFF00 + hex 0000F000 + hex 000F0000 + hex 00F00000 + +s_Colon hex 000FF000 + hex 000FF000 + hex 00000000 + hex 000FF000 + hex 000FF000 + hex 00000000 + +s_Semi hex 00000000 + hex 000FF000 + hex 000FF000 + hex 00000000 + hex 000FF000 + hex 000F0000 + +s_LAngle hex 0000F000 + hex 000F0000 + hex 00F00000 + hex 000F0000 + hex 0000F000 + hex 00000000 + +s_Equal hex 00000000 + hex 00000000 + hex 0FFFFF00 + hex 00000000 + hex 0FFFFF00 + hex 00000000 + +s_RAngle hex 0000F000 + hex 00000F00 + hex 000000F0 + hex 00000F00 + hex 0000F000 + hex 00000000 + +s_Question hex 00FFF000 + hex 0F000F00 + hex 00000F00 + hex 000FF000 + hex 00000000 + hex 000FF000 + +s_At hex 00FFFF00 + hex 0F0000F0 + hex 0F00F0F0 + hex 0FFFF0F0 + hex 000000F0 + hex 0FFFFF00 + +s_A hex 000FF000 + hex 00F00F00 + hex 0F0000F0 + hex 0FFFFFF0 + hex 0F0000F0 + hex 0F0000F0 + +s_B hex 0FFFFF00 + hex 0F0000F0 + hex 0FFFFF00 + hex 0F0000F0 + hex 0F0000F0 + hex 0FFFFF00 + +s_C hex 00FFFFF0 + hex 0F000000 + hex 0F000000 + hex 0F000000 + hex 0F000000 + hex 00FFFFF0 + +s_D hex 0FFFFF00 + hex 0F0000F0 + hex 0F0000F0 + hex 0F0000F0 + hex 0F0000F0 + hex 0FFFFF00 + +s_E hex 0FFFFFF0 + hex 0F000000 + hex 0FFFF000 + hex 0F000000 + hex 0F000000 + hex 0FFFFFF0 + +s_F hex 0FFFFFF0 + hex 0F000000 + hex 0FFFF000 + hex 0F000000 + hex 0F000000 + hex 0F000000 + +s_G hex 00FFFFF0 + hex 0F000000 + hex 0F000000 + hex 0F00FFF0 + hex 0F0000F0 + hex 00FFFF00 + +s_H hex 0F0000F0 + hex 0F0000F0 + hex 0FFFFFF0 + hex 0F0000F0 + hex 0F0000F0 + hex 0F0000F0 + +s_I hex 0FFFFF00 + hex 000F0000 + hex 000F0000 + hex 000F0000 + hex 000F0000 + hex 0FFFFF00 + +s_J hex 000000F0 + hex 000000F0 + hex 000000F0 + hex 0F0000F0 + hex 0F0000F0 + hex 00FFFF00 + +s_K hex 0F000F00 + hex 0F00F000 + hex 0FFF0000 + hex 0F00F000 + hex 0F000F00 + hex 0F000F00 + +s_L hex 0F000000 + hex 0F000000 + hex 0F000000 + hex 0F000000 + hex 0F000000 + hex 0FFFFFF0 + +s_M hex 0F0000F0 + hex 0FF00FF0 + hex 0F0FF0F0 + hex 0F0000F0 + hex 0F0000F0 + hex 0F0000F0 + +s_N hex 0F0000F0 + hex 0FF000F0 + hex 0F0F00F0 + hex 0F00F0F0 + hex 0F000FF0 + hex 0F0000F0 + +s_O hex 00FFFF00 + hex 0F0000F0 + hex 0F0000F0 + hex 0F0000F0 + hex 0F0000F0 + hex 00FFFF00 + +s_P hex 0FFFFF00 + hex 0F0000F0 + hex 0FFFFF00 + hex 0F000000 + hex 0F000000 + hex 0F000000 + +s_Q hex 00FFFF00 + hex 0F0000F0 + hex 0F0000F0 + hex 0F00F0F0 + hex 0F000FF0 + hex 00FFFFF0 + +s_R hex 0FFFFF00 + hex 0F0000F0 + hex 0FFFFF00 + hex 0F000F00 + hex 0F0000F0 + hex 0F0000F0 + +s_S hex 00FFFFF0 + hex 0F000000 + hex 00FFFF00 + hex 000000F0 + hex 000000F0 + hex 0FFFFF00 + +s_T hex 0FFFFF00 + hex 000F0000 + hex 000F0000 + hex 000F0000 + hex 000F0000 + hex 000F0000 + +s_U hex 0F0000F0 + hex 0F0000F0 + hex 0F0000F0 + hex 0F0000F0 + hex 0F0000F0 + hex 00FFFF00 + +s_V hex 0F0000F0 + hex 0F0000F0 + hex 0F0000F0 + hex 0F0000F0 + hex 00F00F00 + hex 000FF000 + +s_W hex 0F0000F0 + hex 0F0000F0 + hex 0F0000F0 + hex 0F0FF0F0 + hex 0FF00FF0 + hex 0F0000F0 + +s_X hex 0F0000F0 + hex 00F00F00 + hex 000FF000 + hex 000FF000 + hex 00F00F00 + hex 0F0000F0 + +s_Y hex F00000F0 + hex 0F000F00 + hex 00F0F000 + hex 000F0000 + hex 000F0000 + hex 000F0000 + +s_Z hex 0FFFFFF0 + hex 00000F00 + hex 0000F000 + hex 000F0000 + hex 00F00000 + hex 0FFFFFF0 + +s_LBracket hex 000FFF00 + hex 000F0000 + hex 000F0000 + hex 000F0000 + hex 000F0000 + hex 000FFF00 + +s_BackSlash hex 0F000000 + hex 00F00000 + hex 000F0000 + hex 0000F000 + hex 00000F00 + hex 000000F0 + +s_RBracket hex 00FFF000 + hex 0000F000 + hex 0000F000 + hex 0000F000 + hex 0000F000 + hex 00FFF000 + +s_Carot hex 0000F000 + hex 000F0F00 + hex 00F000F0 + hex 00000000 + hex 00000000 + hex 00000000 + +s_UnderLine hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex FFFFFFF0 + +s_Template hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + hex 00000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demos/lite/package.json b/demos/lite/package.json new file mode 100644 index 0000000..0a32d68 --- /dev/null +++ b/demos/lite/package.json @@ -0,0 +1,32 @@ +{ + "name": "gte-lite-demo", + "version": "1.0.0", + "description": "A testbed for testing hte GTE lite rendering mode", + "main": "index.js", + "config": { + "merlin32": "C:\\Programs\\IIgsXDev\\bin\\Merlin32-1.1.10.exe", + "cadius": "C:\\Programs\\IIgsXDev\\bin\\Cadius.exe", + "gsport": "C:\\Programs\\gsport\\gsport_0.31\\GSPort.exe", + "macros": "../../macros", + "crossrunner": "C:\\Programs\\Crossrunner\\Crossrunner.exe" + }, + "scripts": { + "test": "npm run build && build-image.bat %npm_package_config_cadius% && %npm_package_config_gsport%", + "debug": "%npm_package_config_crossrunner% GTELiteDemo -Source MAINSEG_Output.txt -Debug -CompatibilityLayer -Map App.s", + "build": "npm run build:tool && npm run build:sys16", + "build:sys16": "%npm_package_config_merlin32% -V %npm_package_config_macros% App.s", + "build:tool": "%npm_package_config_merlin32% -V %npm_package_config_macros% ../../src/Master.s" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/lscharen/iigs-game-engine.git" + }, + "author": "Lucas Scharenbroich", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/lscharen/iigs-game-engine/issues" + }, + "homepage": "https://github.com/lscharen/iigs-game-engine#readme", + "devDependencies": { + } +} diff --git a/macros/GTE.Macs.s b/macros/GTE.Macs.s index 4c7a967..2f67766 100644 --- a/macros/GTE.Macs.s +++ b/macros/GTE.Macs.s @@ -190,6 +190,7 @@ extSpriteRenderer equ $0005 rawDrawTile equ $0006 extBG0TileUpdate equ $0007 userTileCallback equ $0008 +liteBlitter equ $0009 ; CopyPicToBG1 flags COPY_PIC_NORMAL equ $0000 ; Copy into BG1 buffer in "normal mode" diff --git a/package.json b/package.json index 76fc27f..314877d 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "test": "npm run build && build-image.bat %npm_package_config_cadius% && %npm_package_config_gsport%", "build": "%npm_package_config_merlin32% -V %npm_package_config_macros% ./src/Master.s", "build:debug": "%npm_package_config_merlin32% -V %npm_package_config_macros% ./src/Debug.s", - "debug": "%npm_package_config_crossrunner% ./src/Debug160 -Source ./src/Debug160_S02__Output.txt -Debug -CompatibilityLayer" + "debug": "%npm_package_config_crossrunner% ./src/Debug160 -Source ./src/Debug160_S02__Output.txt -Debug -CompatibilityLayer", + "install:header": "copy .\\ORCACDefs\\gte.h C:\\ProgramData\\GoldenGate\\Libraries\\ORCACDefs\\gte.h" }, "repository": { "type": "git", diff --git a/src/CoreImpl.s b/src/CoreImpl.s index dd01219..e1a8b27 100644 --- a/src/CoreImpl.s +++ b/src/CoreImpl.s @@ -238,6 +238,16 @@ EngineReset stz OneSecondCounter +; Fill in the state register values + + sep #$20 + ldal STATE_REG + and #$CF + sta STATE_REG_OFF ; Put this value in to return to "normal" blitter + ora #$10 + sta STATE_REG_BLIT ; Running the blitter, this is the mode to put us into + rep #$20 + lda #13 sta tmp15 stz tmp14 diff --git a/src/Defs.s b/src/Defs.s index a9e63bb..eafb2b5 100644 --- a/src/Defs.s +++ b/src/Defs.s @@ -105,6 +105,9 @@ BG1Scaling equ 126 activeSpriteList equ 128 ; 32 bytes for the active sprite list (can persist across frames) ; Free space from 160 to 192 +STATE_REG_OFF equ 160 +STATE_REG_BLIT equ 161 +STK_SAVE equ 162 ; Only used by the lite renderer blttmp equ 192 ; 32 bytes of local cache/scratch space for blitter @@ -206,6 +209,7 @@ extSpriteRenderer equ $0005 rawDrawTile equ $0006 extBG0TileUpdate equ $0007 userTileCallback equ $0008 +liteBlitter equ $0009 ; CopyPicToBG1 flags COPY_PIC_NORMAL equ $0000 ; Copy into BG1 buffer in "normal mode" treating the buffer as a 164x208 pixmap with stride of 256 @@ -329,3 +333,16 @@ ExtUpdateBG0Tiles EXT ; Tool error codes NO_TIMERS_AVAILABLE equ 10 + +; Offsets for the Lite blitter +_ENTRY_1 equ 0 +_ENTRY_JMP equ 4 +_ENTRY_ODD equ 11 +_LOOP equ 38 +_EXIT_ODD equ 290 +_EXIT_EVEN equ 293 +_LOW_SAVE equ 296 + +_LINE_BASE equ 4 ; header size +_LINE_SIZE equ 298 ; number of bytes for each blitter line + diff --git a/src/Master.s b/src/Master.s index 2ff9943..636bcae 100644 --- a/src/Master.s +++ b/src/Master.s @@ -2,7 +2,7 @@ TYP $BA ; Tool set file DSK Tool160 - XPL + XPL ; Main toolbox interface and code @@ -44,6 +44,12 @@ ALI BANK SNA ROTDATA +; GTE "Lite" blitter. One bank of static code, no relocation needed. + + ASM blitter/TemplateLite.s + ALI BANK + SNA BLTLITE + ; Additional code ; ASM FastCopies.s diff --git a/src/Memory.s b/src/Memory.s index 721bb83..65d4214 100644 --- a/src/Memory.s +++ b/src/Memory.s @@ -74,6 +74,15 @@ InitMemory lda EngineMode sta CompileBank stz CompileBank0 +; If ENGINE_MODE_TWO_LAYER and ENGINE_MODE_DYN_TILES are turned off, then +; we are in "GTE lite" mode and use a blitter template that only requires +; one bank of memory + lda EngineMode + bit #ENGINE_MODE_DYN_TILES+ENGINE_MODE_TWO_LAYER + bne InitFullBlitter + brl InitLiteBlitter + +InitFullBlitter ; Allocate the 13 banks of memory we need and store in double-length array ]step equ 0 lup 13 @@ -155,6 +164,70 @@ InitMemory lda EngineMode :exit rts +InitLiteBlitter +lite_base EXT + +; Overwrite the Col2CodeOffset tables. This array needs to hold the offset from the start of the line (BTableLow), +; to each of the PEA words *in logical order*. This means the actual addresses are reversed. + + lda #_LOOP + sta Col2CodeOffset-2 + + ldx #0 + lda #_LOOP+{81*PER_TILE_SIZE} + sta Col2CodeOffset+{4*82} ; Store a copy one off the end + +:loop0 sta Col2CodeOffset,x + sta Col2CodeOffset+{2*82},x + sec + sbc #PER_TILE_SIZE + inx + inx + cpx #82*2 + bcc :loop0 + +; Fill in the BTable and BRowTable values + + ldx #0 + ldy #lite_base + +:loop1 + tya + sta BTableLow,x + sta BTableLow+{208*2},x + clc + adc #_LINE_SIZE + tay + + lda #^lite_base + sta BTableHigh,x + sta BTableHigh+{208*2},x + + inx + inx + cpx #208*2 + bcc :loop1 + + ldx #0 + ldy #lite_base +:loop2 + lda BTableHigh ; This is the same value for the lite blitter + sta BRowTableHigh+2,x + sta BRowTableHigh+{26*2}+2,x + + tya + sta BRowTableLow,x + sta BRowTableLow+{26*2},x + clc + adc #{8*_LINE_SIZE} + tay + + inx + inx + cpx #26*2 + bcc :loop2 + rts + ; Bank allocator (for one full, fixed bank of memory. Can be immediately deferenced) AllocOneBank PushLong #0 diff --git a/src/Render.s b/src/Render.s index 129005c..6099d61 100644 --- a/src/Render.s +++ b/src/Render.s @@ -626,6 +626,64 @@ _RenderWithShadowing :no_removal rts +; Specail mode for rendering in GTE-lite mode. No secondary background is possible +_RenderLite + sta RenderFlags + jsr _DoTimers ; Run any pending timer tasks + +; brk $65 + jsr _ApplyBG0YPosLite ; Set stack addresses for the virtual lines to the physical screen +; brk $66 + jsr _ApplyBG0XPosPre ; Lock in certain rendering variables (not lite/non-lite specific) +; brk $67 + + + jsr _UpdateBG0TileMap ; and the tile maps. These subroutines build up a list of tiles + jsr _ApplyTiles ; This function actually draws the new tiles into the code field + + jsr _ApplyBG0XPosLite ; Patch the code field instructions with exit BRA opcode + +; At this point, everything in the background has been rendered into the code field. Next, we need +; to create priority lists of scanline ranges. + +; jsr _FilterObjectList ; Walk the sorted list and create an array of objects that need to be rendered +; +; jsr _ShadowOff ; Turn off shadowing and draw all the scanlines with sprites on them +; jsr _DrawObjShadow ; Draw the background +; jsr _DrawDirectSprites ; Draw the sprites directly to the Bank $01 graphics buffer (skipping the render-to-tile step) +; +; jsr _ShadowOn ; Turn shadowing back on +; +; jsr _DrawFinalPass + + ldx #0 + lda ScreenHeight + jsr _BltRange + + lda StartYMod208 ; Restore the fields back to their original state + ldx ScreenHeight + jsr _RestoreBG0OpcodesLite + + lda StartY + sta OldStartY + lda StartX + sta OldStartX + + lda BG1StartY + sta OldBG1StartY + lda BG1StartX + sta OldBG1StartX + + stz DirtyBits + stz LastRender ; Mark that a full render was just performed + + lda SpriteRemovedFlag ; If any sprite was removed, set the rebuild flag + beq :no_removal + lda #DIRTY_BIT_SPRITE_ARRAY + sta DirtyBits +:no_removal + rts + ; Run through the list of sprites that are not OFFSCREEN and not OVERLAYS and draw them directly to the graphics screen. We can use ; compiled sprites here, with limitations. _DrawDirectSprites diff --git a/src/Tool.s b/src/Tool.s index 9ef55b1..b69c171 100644 --- a/src/Tool.s +++ b/src/Tool.s @@ -305,6 +305,8 @@ _TSRender lda :flags,s cmp #$FFFF ; Hack! Special mode... beq :nes + cmp #$FFFE ; Experimental gte-lite mode + beq :lite bit #RENDER_WITH_SHADOWING beq :no_shadowing @@ -323,6 +325,10 @@ _TSRender :nes jsr _RenderNES + bra :done + +:lite + jsr _RenderLite :done _TSExit #0;#2 @@ -945,7 +951,17 @@ _TSGetAddress lda #^_DrawTileToScreen sta :output+2,s bra :out -:next_3 + +:next_3 cmp #liteBlitter + bne :next_4 + + lda #lite_base + sta :output,s + lda #^lite_base + sta :output+2,s + bra :out + +:next_4 :out _TSExit #0;#2 @@ -1114,11 +1130,14 @@ _TSEnableBackground put tiles/DirtyTileQueue.s put blitter/SCB.s put blitter/Horz.s + put blitter/HorzLite.s put blitter/Vert.s + put blitter/VertLite.s put blitter/BG0.s put blitter/BG1.s put blitter/Rotation.s put blitter/Template.s put blitter/TemplateUtils.s put blitter/Blitter.s + put blitter/BlitterLite.s put blitter/PEISlammer.s diff --git a/src/blitter/Blitter.s b/src/blitter/Blitter.s index fbf0371..6b71fe7 100644 --- a/src/blitter/Blitter.s +++ b/src/blitter/Blitter.s @@ -26,8 +26,15 @@ _BltRange brl DisabledBG :normal +; If we are in "lite" mode, defer to that implementation + lda EngineMode + bit #ENGINE_MODE_TWO_LAYER+ENGINE_MODE_DYN_TILES + bne :dark + jmp _BltRangeLite + +:dark phb ; preserve the bank register - clc` + clc dey tya ; Get the address of the line that we want to return from @@ -98,6 +105,9 @@ stk_save lda #0000 ; load the stack plp ; re-enable interrupts (maybe, if interrupts disabled when we are called, they are not re-endabled) pld ; restore the direct page +:exit_ptr equ tmp0 +:jmp_low_save equ tmp2 + sep #$20 ldy #CODE_EXIT+1 lda :jmp_low_save @@ -164,15 +174,13 @@ DisabledBG lda tmp15 ; restore the stack tcs + sep #$30 ; 8-bit mode - ldal STATE_REG - tax ; Save the value - and #$CF ; Read Bank 0 / Write Bank 0 + lda STATE_REG_OFF ; Could be on the direct page.... stal STATE_REG cli - nop ; Give a couple of cycles sei - txa ; Restore the state + lda STATE_REG_BLIT ; External values stal STATE_REG rep #$30 bra :next diff --git a/src/blitter/BlitterLite.s b/src/blitter/BlitterLite.s new file mode 100644 index 0000000..09ae3df --- /dev/null +++ b/src/blitter/BlitterLite.s @@ -0,0 +1,75 @@ +; This is the method that is most useful from the high-level code. We want the +; freedom to blit a range of lines. This subroutine can assume that all of the +; data in the code fields is set up properly. +; +; X = first line (inclusive), valid range of 0 to 199 +; Y = last line (exclusive), valid range >X up to 200 +; +; The lines are based on the appearance of lines in the play field, so blitting lines 0 through +; 19 will draw the first 20 lines on the play field, regardless of where the playfield is physically +; on the SHR screen or the current value of StartY +lite_base EXT +lite_full_return EXT + +; This should only be called from _Render when it is determined to be safe +_BltRangeLite + +:exit_ptr equ tmp0 +:jmp_low_save equ tmp2 + + clc + dey + tya ; Get the address of the line that we want to return from + adc StartYMod208 ; and create a pointer to it + asl + tay + lda BTableLow,y + sta :exit_ptr + lda BTableHigh,y + sta :exit_ptr+2 + + txa ; get the first line (0 - 199) + adc StartYMod208 ; add in the virtual offset (0, 207) -- max value of 406 + asl + tax ; this is the offset into the blitter table + + lda BTableLow,x ; patch in the address + sta blt_entry_lite+1 + +; The way we patch the exit code is subtle, but very fast. The CODE_EXIT offset points to +; an JMP/JML instruction that transitions to the next line after all of the code has been +; executed. +; +; The trick we use is to patch the low byte to force the code to jump to a special return +; function (jml blt_return) in the *next* code field line. + + ldy #_EXIT_EVEN+1 ; this is a JMP instruction that points to the next line. + lda [:exit_ptr],y ; we have to save because not every line points to the same + sta :jmp_low_save ; position in the next code line + + lda #lite_full_return ; this is the address of the return code + sta [:exit_ptr],y ; patch out the address of the JMP + + php ; save the current processor flags + sep #$20 ; run the lite blitter in 8-bit accumulator mode + brk $99 + sei ; disable interrupts + _R0W1 + tsx ; save the stack pointer in Y + txy +blt_entry_lite jml lite_base ; Jump into the blitter code $ZZ/YYXX (Does not modify Y or X) + +blt_return_lite ENT + _R0W0 + tyx + txs ; restore the stack + plp ; re-enable interrupts (maybe, if interrupts disabled when we are called, they are not re-endabled) + +:exit_ptr equ tmp0 +:jmp_low_save equ tmp2 + mx %00 + + ldy #_EXIT_EVEN+1 + lda :jmp_low_save + sta [:exit_ptr],y + rts diff --git a/src/blitter/HorzLite.s b/src/blitter/HorzLite.s new file mode 100644 index 0000000..179d397 --- /dev/null +++ b/src/blitter/HorzLite.s @@ -0,0 +1,651 @@ +; Subroutines that deal with the horizontal scrolling in the "lite" blitter. The +; advantage of the lite blitter is that the entire code field is in one bank, so +; there is no need to chunk up the updates into 16-line pieces. The entire height +; of the playfield can be done with a single unrolled loop. +; +; A = starting virtual line in the code field (0 - 207) +; X = number of lines to render (0 - 200) + +_RestoreBG0OpcodesLite +:virt_line_x2 equ tmp1 +:lines_left_x2 equ tmp2 +:exit_offset equ tmp4 + + asl + sta :virt_line_x2 ; Keep track of it + + txa + asl + sta :lines_left_x2 + + lda LastPatchOffset ; If zero, there are no saved opcodes + sta :exit_offset + + +_RestoreBG0OpcodesAltLite +:virt_line_x2 equ tmp1 +:lines_left_x2 equ tmp2 +:draw_count_x2 equ tmp3 +:exit_offset equ tmp4 +:base_address equ tmp5 +:exit_address equ tmp6 +:draw_count_x6 equ blttmp+10 + +; We do need to split the update into two parts so that we can handle the wrap-around portion + + ldx :lines_left_x2 + lda #208*2 + sec + sbc :virt_line_x2 ; calculate number of lines to the end of the buffer + cmp :lines_left_x2 + bcs :one_pass ; if there's room, do it in one shot + +; If the virtual screen wraps around the bank, then we need to split the update up +; into two pieces to efficiently restore the values without having to do the +; virtual_line -> physical_line conversion each time. + + tax + jsr :one_pass ; Go through with this draw count + + stz :virt_line_x2 + + lda :lines_left_x2 + sec + sbc :draw_count_x2 ; this many left to draw. Fall through to finish up + tax + +:one_pass + txa + sta :draw_count_x2 ; this is the number of lines we will do right now + asl + adc :draw_count_x2 + sta :draw_count_x6 + + phb + + sep #$20 ; Set the data bank to the code field + lda BTableHigh + pha + plb + rep #$21 ; clear the carry while we're here... + + ldx :virt_line_x2 + ldal BTableLow,x ; Get the address of the first code field line + sta :base_address + + adc #_LOW_SAVE + sta :low_save_addr + + lda :base_address + adc :exit_offset ; Add some offsets to get the base address in the code field line + sta :exit_address + + sec + CopyXToYPrep :do_restore + + ldx :low_save_addr + ldy :exit_address +:do_restore jsr $0000 ; Jump in to do SCREEN_HEIGHT lines + + stz LastPatchOffset ; Clear the value once completed + plb + rts + +; Based on the current value of StartX in the direct page, patch up the code fields +; to render the correct data. Note that we do *not* do the OpcodeRestore in this +; routine. The reason is that the restore *must* be applied using the (StartX, StartY) +; values from the previous frame, which requires logic that is not relevant to setting +; up the code field. +; +; This function is where the reverse-mapping aspect of the code field is compensated +; for. In the initialize case where X = 0, the exit point is at the *end* of +; the code buffer line +; +; +----+----+ ... +----+----+----+ +; | 82 | 80 | | 04 | 02 | 00 | +; +----+----+ ... +----+----+----+ +; ^ x=0 +; +; As the screen scrolls right-to-left, the exit position moves to earlier memory +; locations until wrapping around from 163 to 0. +; +; The net calculation are +; +; x_exit = (164 - x) % 164 +; x_enter = (164 - x - width) % 164 +; + +_ApplyBG0XPosLite +:virt_line_x2 equ tmp1 +:lines_left_x2 equ tmp2 + +; If there are saved opcodes that have not been restored, do not run this routine + lda LastPatchOffset + beq *+3 + rts + +; This code is fairly succinct. See the corresponding code in Vert.s for more detailed comments. + + lda StartYMod208 ; This is the base line of the virtual screen + asl + sta :virt_line_x2 ; Keep track of it + + lda ScreenHeight + asl + sta :lines_left_x2 + +; Calculate the exit and entry offsets into the code fields. This is a bit tricky, because odd-aligned +; rendering causes the left and right edges to move in a staggered fashion. +; +; ... +----+----+----+----+----+- ... -+----+----+----+----+----+ +; | 04 | 06 | 08 | 0A | 0C | | 44 | 46 | 48 | 4A | +; ... +----+----+----+----+----+- ... -+----+----+----+----+----+ +; | | +; +---- screen width --------------+ +; entry | | exit +; +; Here is an example of a screen 64 bytes wide. When everything is aligned to an even offset +; then the entry point is column $08 and the exit point is column $48 +; +; If we move the screen forward one byte (which means the pointers move backwards) then the low-byte +; of column $06 will be on the right edge of the screen and the high-byte of column $46 will left-edge +; of the screen. Since the one-byte edges are handled specially, the exit point shifts one column, but +; the entry point does not. +; +; ... +----+----+----+----+----+- ... -+----+----+----+----+----+ +; | 04 | 06 | 08 | 0A | 0C | | 44 | 46 | 48 | 4A | +; ... +----+----+----+----+----+- ... -+----+----+----+----+----+ +; | | | | +; +--|------ screen width -------|--+ +; entry | | exit +; +; When the screen is moved one more byte forward, then the entry point will move to the +; next column. +; +; ... +----+----+----+----+----+- ... -+----+----+----+----+----+ +; | 04 | 06 | 08 | 0A | 0C | | 44 | 46 | 48 | 4A | +; ... +----+----+----+----+----+- ... -+----+----+----+----+----+ +; | | +; +------ screen width ------------+ +; entry | | exit +; +; So, in short, the entry tile position is rounded up from the x-position and the exit +; tile position is rounded down. +; +; Now, the left edge of the screen is pushed last, so we need to exit one instruction *after* +; the location (163 - StartX % 164) +; +; x = 0 +; +; | PEA $0000 | +; +-----------+ +; | PEA $0000 | +; +-----------+ +; | JMP loop | <-- Exit here +; +-----------+ +; +; x = 1 and 2 +; +; | PEA $0000 | +; +-----------+ +; | PEA $0000 | <-- Exit Here +; +-----------+ +; | JMP loop | +; +-----------+ + + lda StartXMod164 + +; Alternate entry point if the virt_line_x2 and lines_left_x2 and XMod164 values are passed in externally + +_ApplyBG0XPosAltLite +;:stk_save equ tmp0 +:virt_line_x2 equ tmp1 +:lines_left_x2 equ tmp2 +:draw_count_x2 equ tmp3 +:exit_offset equ tmp4 +:entry_offset equ tmp5 +:exit_bra equ tmp6 +:exit_address equ tmp7 +:base_address equ tmp8 +:opcode equ tmp9 +:odd_entry_offset equ tmp10 +:draw_count_x3 equ blttmp ; steal even mode direct page temp space... +:draw_count_x6 equ blttmp+2 +:entry_jmp_addr equ blttmp+4 +:low_save_addr equ blttmp+6 +:draw_count_x3 equ blttmp+8 +:draw_count_x6 equ blttmp+10 +:entry_odd_addr equ blttmp+12 +:exit_odd_addr equ blttmp+14 + + bit #$0001 + jne :odd_case ; Specialized routines for even/odd cases + +; If the exit byte is even, then the left edge is odd-aligned and we exit at this word. + + tax + lda CodeFieldEvenBRA-2,x + sta :exit_bra + + lda Col2CodeOffset-2,x ; offset from :base that is the exit location + sta :exit_offset + sta LastPatchOffset ; Cache as a flag for later + +; Calculate the entry point into the code field by calculating the right edge + + txa ; lda StartXMod164 + clc + adc ScreenWidth ; move to the right edge + + cmp #164 ; Keep the value in range + bcc *+5 + sbc #164 + +; Lookup the relative offset that we will be entering the code field. Need to adjust the Col2CodeOffset +; to account for the position of the BRL instruction + + tax + lda Col2CodeOffset-2,x ; offset from _LOOP (0 to 249 step 3) + clc + adc #-_ENTRY_JMP+3 + sta :opcode + +; Now update the code field to get ready to execute. We set the bank register to the code +; field to make updates faster. The primary actions to do are. +; +; 1. Saves the low operand byte in the code field (opcode is always $F4) +; 2. Writes the BRA instruction to exit the code field +; 3. Writes the JMP entry point to enter the code field +; +; We do need to split the update into two parts so that we can handle the wrap-around portion + + ldx :lines_left_x2 + lda #208*2 + sec + sbc :virt_line_x2 ; calculate number of lines to the end of the buffer + cmp :lines_left_x2 + bcs :one_pass_even ; if there's room, do it in one shot + +; Since the screen height can be up to 200 lines and the virtual buffer size is 208, the common +; case will be that the blit will wrap around the end of the code field + + tax + jsr :one_pass_even ; Go through with this draw count + + stz :virt_line_x2 + + lda :lines_left_x2 + sec + sbc :draw_count_x2 ; this many left to draw. Fall through to finish up + tax + +:one_pass_even + txa + sta :draw_count_x2 ; this is the number of lines we will do right now + asl + adc :draw_count_x2 + sta :draw_count_x6 + lsr + sta :draw_count_x3 + + phb ; Save the existing bank + + sep #$20 ; Set the data bank to the code field + lda BTableHigh + pha + plb + rep #$21 ; clear the carry while we're here... + + ldx :virt_line_x2 + ldal BTableLow,x ; Get the address of the code field line + sta :base_address ; Will use this address a few times + + adc #_ENTRY_JMP ; Add the offsets in order to get absolaute addresses + sta :entry_jmp_addr + adc #{_LOW_SAVE-_ENTRY_JMP} + sta :low_save_addr + + lda :base_address + adc :exit_offset ; Add the offset to get the absolute address in the code field line + sta :exit_address + +; First step is to set the BRA instruction to exit the code field at the proper location. There +; are two sub-steps to do here; we need to save the 8-bit value that exists at the location+1 and +; then overwrite it with the branch instruction. + + sec ; These macros preform subtractions that do not underflow + CopyXToYPrep :do_save_entry_e + LiteSetConstPrep :do_set_bra_e + stal :do_setopcode_e+1 + stal :do_set_rel_e+1 + + sep #$20 + ldy :entry_jmp_addr + lda #$82 +:do_setopcode_e jsr $0000 ; Copy in the BRL opcode into the entry point + rep #$20 + + ldx :exit_address + ldy :low_save_addr +:do_save_entry_e jsr $0000 ; Copy a word from offset x to y + + ldy :exit_address + lda :exit_bra +:do_set_bra_e jsr $0000 ; Set the BRA instruction in the code field to exit + + ldy :entry_jmp_addr + iny + lda :opcode +:do_set_rel_e jsr $0000 ; Set the relative offset for all BRL instructions + + plb + rts + +; Odd case if very close to the even case, except that the code is entered a word later. It is still +; exited at the same word. There is extra work done because we have to save the third byte of the +; exit location to fill in the left edge and we have to patch a different BRL to enter the code field +; afte the right-edge byte is pushed onto the screen +:odd_case + dec + tax + lda CodeFieldOddBRA,x + sta :exit_bra + + lda Col2CodeOffset,x + sta :exit_offset + sta LastPatchOffset ; Cache as a flag for later + + txa ; StartXMod164 - 1 + clc + adc ScreenWidth + cmp #164 ; Keep the value in range + bcc *+5 + sbc #164 + + tax + lda Col2CodeOffset,x + clc + adc #-_ENTRY_JMP+3 ; In this case it gets loaded in the X-register + sta :opcode + + lda Col2CodeOffset-2,x + clc + adc #-_ENTRY_ODD+3 + sta :odd_entry_offset + +; Main loop + + ldx :lines_left_x2 + lda #208*2 + sec + sbc :virt_line_x2 ; calculate number of lines to the end of the buffer + cmp :lines_left_x2 + bcs :one_pass_odd ; if there's room, do it in one shot + + tax + jsr :one_pass_odd + + stz :virt_line_x2 + + lda :lines_left_x2 + sec + sbc :draw_count_x2 ; this many left to draw. Fall through to finish up + tax + +:one_pass_odd + txa + sta :draw_count_x2 ; this is the number of lines we will do right now + asl + adc :draw_count_x2 + sta :draw_count_x6 + lsr + sta :draw_count_x3 + + phb ; Save the existing bank + + sep #$20 + lda BTableHigh ; Get the bank + pha + plb + rep #$21 + + ldx :virt_line_x2 + ldal BTableLow,x ; Get the address of the first code field line + sta :base_address ; Save it to use as the base address + + adc #_ENTRY_JMP ; Add the offsets in order to get absolute addresses + sta :entry_jmp_addr + adc #{_ENTRY_ODD-_ENTRY_JMP} + sta :entry_odd_addr + adc #{_EXIT_ODD-_ENTRY_ODD} + sta :exit_odd_addr + adc #{_LOW_SAVE-_EXIT_ODD} + sta :low_save_addr + + lda :base_address + adc :exit_offset ; Add some offsets to get the base address in the code field line + sta :exit_address + +; Setup the jumps into the unrolled loops + + sec + CopyXToYPrep :do_save_entry_o + stal :do_save_high_byte+1 + LiteSetConstPrep :do_set_bra_o + stal :do_setopcode_o+1 + stal :do_set_rel_o+1 + stal :do_odd_code_entry+1 + + sep #$20 + ldy :entry_jmp_addr + lda #$A2 +:do_setopcode_o jsr $0000 ; Copy in the LDX opcode into the entry point + + ldx :exit_address + inx + inx + ldy :exit_odd_addr + iny +:do_save_high_byte jsr $0000 ; Copy high byte of the exit location into the odd handling path + rep #$20 + + ldx :exit_address + ldy :low_save_addr +:do_save_entry_o jsr $0000 ; Save the low word of the exit into a save location for restore later + + ldx :exit_address + lda :exit_bra +:do_set_bra_o jsr $0000 ; Insert a BRA instruction over the saved word + + ldy :entry_jmp_addr + iny + lda :opcode ; Store the same relative address to use for loading the entry word data +:do_set_rel_o jsr $0000 + +; The odd case need to do a bit of extra work + + ldy :entry_odd_addr + iny + lda :odd_entry_offset +:do_odd_code_entry jsr $0000 ; Fill in the BRL argument for the odd entry + + plb + rts + +_RestoreScanlineBG0OpcodesLite +:virt_line_x2 equ tmp1 +:lines_left_x2 equ tmp2 +:exit_offset equ tmp4 + +; Avoid local var collisions +:virt_line_pos_x2 equ tmp11 +:total_left_x2 equ tmp12 +:current_count_x2 equ tmp13 +:ptr equ tmp14 + + asl + sta :virt_line_pos_x2 + tay + + txa + asl + sta :total_left_x2 + + lda StartXMod164Tbl + sta :ptr + lda StartXMod164Tbl+2 + sta :ptr+2 + +; Patch our the ranges from the StartXMod164Tbl array starting at the first virtual line +:loop + lda [:ptr],y + and #$FF00 ; Determine how many sequential lines to restore + xba + inc + asl + min :total_left_x2 ; Don't draw more than the number of lines that are left to process + sta :current_count_x2 ; Save a copy for later + + sta :lines_left_x2 ; Set the parameter + sty :virt_line_x2 ; Set the parameter + lda LastOffsetTbl,y + sta :exit_offset + jsr _RestoreBG0OpcodesAltLite + + clc + lda :virt_line_pos_x2 + adc :current_count_x2 + cmp #208*2 ; Do the modulo check in this loop + bcc *+5 + sbc #208*2 + sta :virt_line_pos_x2 + tay + + lda :total_left_x2 + sec + sbc :current_count_x2 + sta :total_left_x2 + bne :loop + + rts + +; This is a variant of the above routine that allows each x-position to be set independently from a table of value. This is +; quite a bit slower than the other routine since we cannot store constant values for each line. +; +; This routine operates at a higher level and does not try to be super optimized for the case where every line has a different +; set of parameters. Instead, we optimize for the case where there are a few large ranges of the screen moving at different +; rates, e.g. a fixed status bar area on top, a slow-scrolling area in the middle and a fast are in the foreground. +; +; The table that drives this is dense and has the following format for each word +; +; Bits 0 - 7: X mod 164 value +; Bits 8 - 15: Number of scanline to persist this mod value +; +; So, if the first 10 entries has a mod value of 5, they would look like: $0905, $0805, $0705, ... $0105, $0005 +; +; This allows the code to start an an arbitrary location and immeditely sync up with the modulo list. It also allows +; the code to easily skip ranges of constant values using the existing _ApplyBG0XPos function as a subroutine. +; +; NOTE: This function is *exactly* the same as _ApplyScanlineBG0XPos with the exception that it calls +; _ApplyBG0XPosAltLite instead of _ApplyBG0XPosAlt. Should unify with an subroutine selector +_ApplyScanlineBG0XPosLite + +; Copies of the local variables in _ApplyBG0XPos +:virt_line_x2 equ tmp1 +:lines_left_x2 equ tmp2 +:exit_offset equ tmp4 + +; Avoid local var collision with _ApplyBG0XPos +:virt_line_pos_x2 equ tmp11 +:total_left_x2 equ tmp12 +:current_count_x2 equ tmp13 +:ptr equ tmp14 + + lda StartXMod164Tbl + sta :ptr + lda StartXMod164Tbl+2 + sta :ptr+2 + ora :ptr + bne *+3 ; null pointer check + rts + + lda StartYMod208 ; This is the base line of the virtual screen + asl + sta :virt_line_pos_x2 + tay + + lda ScreenHeight + asl + sta :total_left_x2 + +; Patch our the ranges from the StartXMod164Tbl array starting at the first virtual line +:loop + lda [:ptr],y + tax + + and #$FF00 ; Determine how many sequential lines have this mod value + xba + inc + asl + min :total_left_x2 ; Don't draw more than the number of lines that are left to process + sta :current_count_x2 ; Save a copy for later + + sta :lines_left_x2 ; Set the parameter + sty :virt_line_x2 ; Set the parameter + txa ; Put the X mod 164 value in the accumulator + and #$00FF + jsr _ApplyBG0XPosAltLite + + lda :exit_offset ; Get the direct address in the code field that was overwritten + ldy :virt_line_pos_x2 + sta LastOffsetTbl,y ; Stash it for use by the per-scanline resotre function + + tya + clc + adc :current_count_x2 + cmp #208*2 ; Do the modulo check in this loop + bcc *+5 + sbc #208*2 + sta :virt_line_pos_x2 + tay + + lda :total_left_x2 + sec + sbc :current_count_x2 + sta :total_left_x2 + bne :loop + + rts + +; Copy from the offset at X to the offset at Y +; +; Y = code field offset +; X = value +CopyXToYPrep mac + lda #x2y_bottom + sbc blttmp+10 ; Copy from above, :draw_count_x6 equ blttmp+10 + stal ]1+1 ; A jmp/jsr instruction + <<< +]line equ 199 + lup 200 + lda {]line*_LINE_SIZE},x + sta {]line*_LINE_SIZE},y +]line equ ]line-1 + --^ +x2y_bottom rts + +; Set a constant 8-bit value across the code field +; +; Y = code field offset +LiteSetConstPrep mac + lda #lsc_bottom + sbc blttmp+8 ; Copy from above, :draw_count_x3 equ blttmp+8 + stal ]1+1 ; A jmp/jsr instruction + <<< + +]line equ 199 + lup 200 + sta {]line*_LINE_SIZE},y +]line equ ]line-1 + --^ +lsc_bottom rts diff --git a/src/blitter/Template.s b/src/blitter/Template.s index efd33be..c3afb17 100644 --- a/src/blitter/Template.s +++ b/src/blitter/Template.s @@ -38,7 +38,7 @@ PagePatches da {long_0-base+2} da {long_2-base+2} da {long_3-base+2} ; da {long_4-base+2} - da {long_5-base+2} +; da {long_5-base+2} da {long_6-base+2} da {odd_entry-base+2} da {loop_exit_1-base+2} @@ -63,7 +63,7 @@ BankPatches da {long_0-base+3} da {long_2-base+3} da {long_3-base+3} ; da {long_4-base+3} - da {long_5-base+3} +; da {long_5-base+3} da {long_6-base+3} BankPatchNum equ *-BankPatches @@ -94,13 +94,13 @@ entry_jmp jmp $0100 ; update the low-byte of the address, the means it takes only ; an amortized 4-cycles per line to set the entry point break - bit #$000B ; Check the bottom nibble to quickly identify a PEA instruction - bne r_is_not_pea ; This costs 5 cycles in the fast-path +; bit #$000B ; Check the bottom nibble to quickly identify a PEA instruction +; bne r_is_not_pea ; This costs 5 cycles in the fast-path xba ; fast code for PEA r_jmp_rtn sep #$20 ; shared return code path by all methods two_byte_rtn pha - rep #$61 ; Clear Carry, Overflow and M bits #$20 +; rep #$61 ; Clear Carry, Overflow and M bits #$20 odd_entry jmp $0100 ; unconditionally jump into the "next" instruction in the ; code field. This is OK, even if the entry point was the ; last instruction, because there is a JMP at the end of @@ -179,9 +179,9 @@ loop_back jmp loop-base ; +252 Ensure execution cont loop_exit_3 jmp even_exit-base ; +255 odd_exit sep #$21 ; 8-bit mode and set the carry just in case we get to a snippet JMP -long_5 ldal OPCODE_SAVE ; Load the opcode that was saved - bit #$0B - bne :chk_jmp +;long_5 ldal OPCODE_SAVE ; Load the opcode that was saved +; bit #$0B +; bne :chk_jmp long_6 ldal OPCODE_HIGH_SAVE+1 ; 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. Optimized diff --git a/src/blitter/TemplateLite.s b/src/blitter/TemplateLite.s new file mode 100644 index 0000000..31e542b --- /dev/null +++ b/src/blitter/TemplateLite.s @@ -0,0 +1,239 @@ +; Template and equates for GTE blitter +blt_return_lite EXT + + use ../Defs.s ; this causes merlin32 to terminate early with no error output + + mx %00 + +LITE_STK_ADDR equ lite_entry_1-lite_base+1 ; offset to patch in the stack (SHR) right edge address +LITE_LYR_ENTRY equ lite_entry_1-lite_base + +LITE_CODE_ENTRY_OPCODE equ lite_entry_jmp-lite_base +LITE_CODE_ENTRY equ lite_entry_jmp-lite_base+1 ; low byte of the page-aligned jump address +LITE_ODD_ENTRY equ lite_odd_entry-lite_base+1 +LITE_CODE_LEN equ lite_top-lite_base +LITE_CODE_EXIT equ lite_even_exit-lite_base +LITE_OPCODE_SAVE equ lite_odd_low_save-lite_base ; spot to save the code field opcode when patching exit BRA +LITE_OPCODE_HIGH_SAVE equ lite_odd_high_save-lite_base ; save the third byte only + +LITE_ENABLE_INT equ lite_enable_int-lite_base ; offset that re-enable interrupts and continues + +; Return to caller -- this is the target address to patch in the JMP instruction on the last rendered line. We +; put it at the beginning so the rest of the bank can be replicated line templates. +lite_full_return ENT + jml blt_return_lite ; Full exit + +; Start of the template code. This code is replicated 208 times in the code field +; bank, which is what is required to render 26 tiles to cover the full screen vertical +; scrolling. The lite blitter is crafted to allow the accumulator to be in 8-bit +; mode and avoid any need for rep/sep instructions to handle the odd-aligned case +lite_base ENT +lite_entry_1 ldx #0000 ; Sets screen address (right edge) + txs + +lite_entry_jmp brl $0000 ; If the screen is odd-aligned, then the opcode is set to + ; $A2 to convert to a LDX #imm instruction. This puts the + ; relative offset of the instruction field in the register + ; and falls through to the next instruction. + + lda: $0001,x ; Get the low byte and push onto the stack + pha +lite_odd_entry brl $0000 ; unconditionally jump into the "next" instruction in the + ; code field. This is OK, even if the entry point was the + ; last instruction, because there is a JMP at the end of + ; the code field, so the code will simply jump to that + ; instruction directly. + ; + ; As with the original entry point, because all of the + ; code field is page-aligned, only the low byte needs to + ; be updated when the scroll position changes + + + +; Re-enable interrupts and continue -- the even_exit JMP from the previous line will jump here every +; 8 or 16 lines in order to give the system time to handle interrupts. +lite_enable_int tyx + txs ; restore the stack. No 2-layer support, so B and D are set to GTE data bank + lda STATE_REG_OFF ; we are in 8-bit mode the whole time... + stal STATE_REG + cli + sei + lda STATE_REG_BLIT ; External values + stal STATE_REG + bra lite_entry_1 + +lite_loop_exit_1 jmp lite_odd_exit ; +0 Alternate exit point depending on whether the left edge is +lite_loop_exit_2 jmp lite_even_exit ; +3 odd-aligned + +lite_loop lup 82 ; +6 Set up 82 PEA instructions, which is 328 pixels and consumes 246 bytes + pea $0000 ; This is 41 8x8 tiles in width. Need to have N+1 tiles for screen overlap + --^ +lite_loop_back jmp lite_loop ; +252 Ensure execution continues to loop around +lite_loop_exit_3 jmp lite_even_exit ; +255 + + mx %10 +lite_odd_exit lda #0 ; get the high byte of the saved PEA operand (odd-case is already in 8-bit mode) + pha +lite_even_exit jmp $0000 ; Jump to the next line. + dfb $F4,$00 ; low-word of the saved PEA instruction + +; Now repeat the code above 207 more times. Loop 206 times and then manually do the last one +]line equ 1 ; start at line 1 (line zero was just done above) + lup 206 + ldx #0000 + txs + dfb $82,$00,$00 + lda: 1,x + pha + dfb $82,$00,$00 + + tyx + txs + lda STATE_REG_OFF + stal STATE_REG + cli + sei + lda STATE_REG_BLIT + stal STATE_REG +; bra *-34 + dfb $80,$E0 + + jmp _LINE_BASE+{_LINE_SIZE*]line}+_EXIT_EVEN + jmp _LINE_BASE+{_LINE_SIZE*]line}+_EXIT_ODD + + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + pea $0000 + + pea $0000 + pea $0000 + + jmp _LINE_BASE+{_LINE_SIZE*]line}+_LOOP + jmp _LINE_BASE+{_LINE_SIZE*]line}+_EXIT_EVEN + + mx %10 + lda #0 + pha + jmp $0000 + dfb $F4,$00 +]line equ ]line+1 + --^ + +:entry_207 ldx #0000 + txs + dfb $82,$00,$00 ; brl $0000 starts at the next instruction + lda: 1,x + sep #$20 + pha + dfb $82,$00,$00 + + tyx + txs + lda STATE_REG_OFF + stal STATE_REG + cli + sei + lda STATE_REG_BLIT + stal STATE_REG + bra :entry_207 + + jmp :odd_out_207 + jmp :exit_207 +:loop_207 + lup 82 + pea $0000 + --^ + jmp :loop_207 + jmp :exit_207 + + mx %10 +:odd_out_207 lda #0 + pha +:exit_207 jmp lite_entry_1 + dfb $F4,$00 + + ds 3546 ; pad to the end of the bank to make sure we start at address $0000 diff --git a/src/blitter/Vert.s b/src/blitter/Vert.s index b31f2f6..9c54622 100644 --- a/src/blitter/Vert.s +++ b/src/blitter/Vert.s @@ -5,92 +5,6 @@ ; Based on the current value of StartY in the direct page. Set up the dispatch ; information so that the BltRange driver will render the correct code field ; lines in the correct order -_ApplyBG0YPosOld - -:rtbl_idx_x2 equ tmp0 -:virt_line_x2 equ tmp1 -:lines_left_x2 equ tmp2 -:draw_count_x2 equ tmp3 -:stk_save equ tmp4 - -; First task is to fill in the STK_ADDR values by copying them from the RTable array. We -; copy from RTable[i] into BlitField[StartY+i]. As with all of this code, the difficult part -; is decomposing the update across banks - - stz :rtbl_idx_x2 ; Start copying from the first entry in the table - - lda StartY ; This is the base line of the virtual screen - jsr Mod208 - sta StartYMod208 - - asl - sta :virt_line_x2 ; Keep track of it - - phb ; Save the current bank - tsc ; we intentionally leak one byte of stack in each loop - sta :stk_save ; iteration, so save the stack to repair at the end - -; copy a range of address from the table into the destination bank. If we restrict ourselves to -; rectangular playfields, this can be optimized to just subtracting a constant value. See the -; Templates::SetScreenAddrs subroutine. - - lda ScreenHeight - asl - sta :lines_left_x2 - -; This is the verbose part -- figure out how many lines to draw. We don't want to artificially limit -; the height of the visible screen (for example, doing an animated wipe while scrolling), so the screen -; height could be anything from 1 to 200. -; -; For larger values, we want to break things up on 16-line boundaries based on the virt_line value. So, -; -; draw_count = min(lines_left, (16 - (virt_line % 16)) - -:loop - ldx :virt_line_x2 - ldal BTableLow,x ; Get the address of the first code field line - tay - - ldal BTableHigh,x ; Target bank in low byte - pha - - txa - and #$001E - eor #$FFFF - sec - adc #32 - min :lines_left_x2 - - sta :draw_count_x2 ; Do this many lines - tax - - clc ; pre-advance virt_line_2 because we have the value - adc :virt_line_x2 - sta :virt_line_x2 - - plb - jsr _CopyRTableToStkAddr -; CopyRTableToStkAddr :rtbl_idx_x2 ; X = rtbl_idx_x2 on return - - txa ; carry flag is unchanged - adc :draw_count_x2 ; advance the index into the RTable - sta :rtbl_idx_x2 - - lda :lines_left_x2 ; subtract the number of lines we just completed - sec - sbc :draw_count_x2 - sta :lines_left_x2 - - jne :loop - - lda :stk_save - tcs - plb - rts - -; This is an optimized version of _ApplyBG0YPos. We pre-compute the breakdown across the bank -; boundries in order to eliminate the the minimum calculation and some loop variable updates -; from the inner loop. _ApplyBG0YPos diff --git a/src/blitter/VertLite.s b/src/blitter/VertLite.s new file mode 100644 index 0000000..cb8701d --- /dev/null +++ b/src/blitter/VertLite.s @@ -0,0 +1,93 @@ +; Subroutines that deal with the vertical scrolling and rendering. The primary function +; of these routines are to adjust tables and patch in new values into the code field +; when the virtual Y-position of the play field changes. + +_ApplyBG0YPosLite + +:rtbl_idx_x2 equ tmp0 +:virt_line_x2 equ tmp1 +:lines_left_x2 equ tmp2 +:draw_count_x2 equ tmp3 +:stk_save equ tmp4 +:line_count equ tmp5 + +; First task is to fill in the STK_ADDR values by copying them from the RTable array. We +; copy from RTable[i] into BlitField[StartY+i]. + + stz :rtbl_idx_x2 ; Start copying from the first entry in the table + + lda StartY ; This is the base line of the virtual screen + jsr Mod208 + sta StartYMod208 + + asl + sta :virt_line_x2 ; Keep track of it + +; copy a range of address from the table into the destination bank. If we restrict ourselves to +; rectangular playfields, this can be optimized to just subtracting a constant value. See the +; Templates::SetScreenAddrs subroutine. + + lda ScreenHeight + asl + sta :lines_left_x2 + +; Check to see if we need to split the update into two parts, e.g. do we wrap around the end +; of the code field? + + ldx :lines_left_x2 + lda #208*2 + sec + sbc :virt_line_x2 ; calculate number of lines to the end of the buffer + cmp :lines_left_x2 + bcs :one_pass ; if there's room, do it in one shot + + tax ; Only do this many lines right now (saved to draw_count_x2) + jsr :one_pass ; Go through with this draw count + + stz :virt_line_x2 ; virtual line is at the top (by construction) + + lda :lines_left_x2 + sec + sbc :draw_count_x2 ; this many left to draw. Fall through to finish up + tax + +; Set up the addresses for filling in the code field +:one_pass + stx :draw_count_x2 + + phb ; Save the current bank + + ldx :virt_line_x2 + lda BTableLow,x ; Get the address of the first code field line + tay + iny ; Fill in the first byte (_ENTRY_1 = 0) + + sep #$20 ; Set the data bank to the code field + lda BTableHigh + pha + plb + rep #$21 ; clear the carry while we're here... + + lda :draw_count_x2 ; Do this many lines + asl ; x4 + asl ; x8 + asl ; x16 + sec + sbc :draw_count_x2 ; x14 + lsr ; x7 + eor #$FFFF + sec + adc #:bottom + stal :entry+1 ; patch in the dispatch address + +; This is an inline, unrolled version of CopyRTableToStkAddr +:entry jmp $0000 +]line equ 199 + lup 200 + ldal RTable+{]line*2},x + sta {]line*_LINE_SIZE},y +]line equ ]line-1 + --^ +:bottom + plb + rts diff --git a/src/static/TileStore.s b/src/static/TileStore.s index 7196cd0..54bc4c1 100644 --- a/src/static/TileStore.s +++ b/src/static/TileStore.s @@ -102,9 +102,11 @@ TileStoreLookup ENT ; ; Remember, because the data is pushed on to the stack, the last instruction, which is ; in the highest memory location, pushed data that apepars on the left edge of the screen. - +; +; This table is overwritten by the "Lite" engine intialization code to provide a different set +; of offsets since the lite blitter has a different offset than the normal one. ]step equ 0 - dw CODE_TOP ; There is a spot where we load Col2CodeOffet-2,x + dw CODE_TOP ; There is a spot where we load Col2CodeOffset-2,x Col2CodeOffset ENT lup 82 dw CODE_TOP+{{81-]step}*PER_TILE_SIZE}