From 14238166cd5df32a17fc3713b9abdfb4baab2a4d Mon Sep 17 00:00:00 2001 From: Lucas Scharenbroich Date: Wed, 13 Jul 2022 15:07:02 -0500 Subject: [PATCH] More demos --- demos/kfest-2022/demo-2/App.Main.s | 245 ++++++++++++ demos/kfest-2022/demo-2/App.s | 15 + .../demo-2/assets/tiled/Overworld.tsx | 37 ++ .../demo-2/assets/tiled/world_1-1.json | 32 ++ .../demo-2/assets/tiled/world_1-1.tmx | 41 ++ .../assets/tilesets/smb-256-128-4bpp.png | Bin 0 -> 3112 bytes demos/kfest-2022/demo-2/build-image.bat | 17 + demos/kfest-2022/demo-2/package.json | 44 +++ demos/kfest-2022/demo-3/App.Main.s | 368 ++++++++++++++++++ demos/kfest-2022/demo-3/App.s | 15 + .../demo-3/assets/tiled/MetalStore.tsx | 84 ++++ .../demo-3/assets/tiled/level-1.json | 32 ++ .../demo-3/assets/tiled/level-1.tmx | 41 ++ .../demo-3/assets/tilesets/tile-sheet.png | Bin 0 -> 2603 bytes demos/kfest-2022/demo-3/build-image.bat | 17 + demos/kfest-2022/demo-3/package.json | 43 ++ tools/tiled2iigs.js | 25 +- 17 files changed, 1046 insertions(+), 10 deletions(-) create mode 100644 demos/kfest-2022/demo-2/App.Main.s create mode 100644 demos/kfest-2022/demo-2/App.s create mode 100644 demos/kfest-2022/demo-2/assets/tiled/Overworld.tsx create mode 100644 demos/kfest-2022/demo-2/assets/tiled/world_1-1.json create mode 100644 demos/kfest-2022/demo-2/assets/tiled/world_1-1.tmx create mode 100644 demos/kfest-2022/demo-2/assets/tilesets/smb-256-128-4bpp.png create mode 100644 demos/kfest-2022/demo-2/build-image.bat create mode 100644 demos/kfest-2022/demo-2/package.json create mode 100644 demos/kfest-2022/demo-3/App.Main.s create mode 100644 demos/kfest-2022/demo-3/App.s create mode 100644 demos/kfest-2022/demo-3/assets/tiled/MetalStore.tsx create mode 100644 demos/kfest-2022/demo-3/assets/tiled/level-1.json create mode 100644 demos/kfest-2022/demo-3/assets/tiled/level-1.tmx create mode 100644 demos/kfest-2022/demo-3/assets/tilesets/tile-sheet.png create mode 100644 demos/kfest-2022/demo-3/build-image.bat create mode 100644 demos/kfest-2022/demo-3/package.json diff --git a/demos/kfest-2022/demo-2/App.Main.s b/demos/kfest-2022/demo-2/App.Main.s new file mode 100644 index 0000000..90a9d38 --- /dev/null +++ b/demos/kfest-2022/demo-2/App.Main.s @@ -0,0 +1,245 @@ +; Test driver to exercise graphics routines. + + 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 + +tiledata EXT ; tileset buffer +TileSetPalette EXT + +; Keycodes +LEFT_ARROW equ $08 +RIGHT_ARROW equ $15 +UP_ARROW equ $0B +DOWN_ARROW equ $0A + +; Direct page space +MyUserId equ 0 +BankLoad equ 2 +StartX equ 4 +StartY equ 6 +TileMapWidth equ 8 +TileMapHeight equ 10 +ScreenWidth equ 12 +ScreenHeight equ 14 +MaxGlobalX equ 16 +MaxGlobalY equ 18 +MaxBG0X equ 20 +MaxBG0Y equ 22 +OldOneSecondCounter equ 26 +appTmp0 equ 28 + + 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_DYN_TILES ; Engine in Fast Mode + jsr GTEStartUp ; Load and install the GTE User Tool + +; Initialize local variables + + stz StartX + stz StartY + stz frameCount + +; Initialize the graphics screen playfield + + pea #320 + pea #200 + _GTESetScreenMode + +; Load a tileset + + pea #^tiledata + pea #tiledata + _GTELoadTileSet + + pea $0000 + pea #^TileSetPalette + pea #TileSetPalette + _GTESetPalette + +; Set up our level data + + jsr BG0SetUp + jsr TileAnimInit + jsr SetLimits + + jsr InitOverlay ; Initialize the status bar + pha + _GTEGetSeconds + pla + sta OldOneSecondCounter + jsr UdtOverlay + +; Set up a very specific test. First, we draw a sprite into the sprite plane, and then +; leave it alone. We are just testing the ability to merge sprite plane data into +; the play field tiles. +EvtLoop + pha + _GTEReadControl + pla + + jsr HandleKeys ; Do the generic key handlers + bcs :do_more + brl :do_render + +:do_more + cmp #'d' + bne :not_d + lda StartX + cmp MaxBG0X + bcc *+5 + brl :do_render + inc StartX + pei StartX + pei StartY + _GTESetBG0Origin + brl :do_render +:not_d + + cmp #'a' + bne :not_a + lda StartX + bne *+5 + brl :do_render + dec StartX + pei StartX + pei StartY + _GTESetBG0Origin + brl :do_render +:not_a + + cmp #'s' + bne :not_s + lda StartY + cmp MaxBG0Y + bcs :do_render + inc StartY + pei StartX + pei StartY + _GTESetBG0Origin + bra :do_render +:not_s + + cmp #'w' + bne :not_w + lda StartY + beq :do_render + dec StartY + pei StartX + pei StartY + _GTESetBG0Origin + bra :do_render +:not_w + +:do_render + _GTERender + +; Update the performance counters + + inc frameCount + pha + _GTEGetSeconds + pla + cmp OldOneSecondCounter + beq :noudt + sta OldOneSecondCounter + jsr UdtOverlay + stz frameCount +:noudt + brl EvtLoop + +; Exit code +Exit + _GTEShutDown +Quit + _QuitGS qtRec + + bcs Fatal +Fatal brk $00 + +qtRec adrl $0000 + da $00 + +; Color palette +MyDirectPage ds 2 + +SetLimits + pha ; Allocate space for width (in tiles), height (in tiles), pointer + pha + pha + pha + _GTEGetBG0TileMapInfo + pla + sta TileMapWidth + pla + sta TileMapHeight + pla + pla ; discard the pointer + + pha ; Allocate space for x, y, width, height + pha + pha + pha + _GTEGetScreenInfo + pla + pla ; Discard screen corner + pla + sta ScreenWidth + pla + sta ScreenHeight + + lda TileMapWidth + asl + asl + sta MaxGlobalX + sec + sbc ScreenWidth + sta MaxBG0X + + lda TileMapHeight + asl + asl + asl + sta MaxGlobalY + sec + sbc ScreenHeight + sta MaxBG0Y + +; Check if the current StartX and StartY are out of bounds + lda StartX + cmp MaxBG0X + bcc :x_ok + lda MaxBG0X +:x_ok pha + + lda StartY + cmp MaxBG0Y + bcc :y_ok + lda MaxBG0Y +:y_ok pha + _GTESetBG0Origin + + rts + +frameCount equ 24 + + PUT ../StartUp.s + PUT ../../shell/Overlay.s + PUT gen/App.TileMapBG0.s + PUT gen/App.TileSetAnim.s diff --git a/demos/kfest-2022/demo-2/App.s b/demos/kfest-2022/demo-2/App.s new file mode 100644 index 0000000..86058e2 --- /dev/null +++ b/demos/kfest-2022/demo-2/App.s @@ -0,0 +1,15 @@ +; KFest 2022: Demo #1 + + TYP $B3 ; S16 file + DSK GTEDemo2 + XPL + +; Segment #1 -- Main execution block + + ASM App.Main.s + SNA Main + +; Segment #2 -- Tileset + + ASM gen\App.TileSet.s + SNA TSET \ No newline at end of file diff --git a/demos/kfest-2022/demo-2/assets/tiled/Overworld.tsx b/demos/kfest-2022/demo-2/assets/tiled/Overworld.tsx new file mode 100644 index 0000000..4753af2 --- /dev/null +++ b/demos/kfest-2022/demo-2/assets/tiled/Overworld.tsx @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demos/kfest-2022/demo-2/assets/tiled/world_1-1.json b/demos/kfest-2022/demo-2/assets/tiled/world_1-1.json new file mode 100644 index 0000000..b4f1a51 --- /dev/null +++ b/demos/kfest-2022/demo-2/assets/tiled/world_1-1.json @@ -0,0 +1,32 @@ +{ "compressionlevel":-1, + "height":30, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 153, 154, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 153, 154, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 153, 154, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 153, 154, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, 10, 0, 0, 0, 0, 0, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 186, 186, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 186, 186, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 186, 186, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 186, 186, 186, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 10, 0, 0, 0, 0, 185, 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 156, 157, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 156, 157, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 156, 157, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, 156, 157, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 155, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 0, 0, 0, 0, 0, 0, 188, 188, 188, 188, 188, 188, 159, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 188, 188, 188, 188, 188, 0, 0, 0, 0, 0, 0, 0, 0, 188, 188, 159, 160, 159, 160, 188, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, 26, 26, 191, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 191, 192, 191, 192, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 5, 6, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 7, 8, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 138, 0, 0, 0, 0, 0, 137, 138, 137, 138, 137, 138, 137, 138, 137, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 170, 0, 0, 0, 0, 0, 169, 170, 169, 170, 169, 170, 169, 170, 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 31, 32, 31, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 160, 0, 0, 0, 0, 0, 188, 188, 159, 160, 188, 188, 159, 160, 188, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 138, 137, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 188, 159, 160, 188, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 188, 188, 188, 0, 0, 0, 0, 0, 0, 0, 0, 159, 160, 0, 0, 0, 0, 159, 160, 0, 0, 0, 0, 159, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 188, 188, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 0, 0, 0, 0, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 5, 6, 0, 0, 0, 0, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 188, 188, 188, 159, 160, 188, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 0, 0, 0, 0, 0, 26, 26, 191, 192, 26, 26, 191, 192, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 170, 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 191, 192, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 0, 0, 0, 0, 191, 192, 0, 0, 0, 0, 191, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 7, 8, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, 191, 192, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 26, 64, 26, 26, 64, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 138, 137, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 5, 6, 0, 0, 0, 0, 5, 6, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 5, 6, 5, 6, 0, 0, 0, 0, 5, 6, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 26, 64, 26, 26, 64, 26, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 170, 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 7, 8, 0, 0, 0, 0, 7, 8, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 0, 7, 8, 7, 8, 7, 8, 0, 0, 0, 0, 7, 8, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 31, 32, 24, 25, 24, 25, 24, 25, 31, 32, 0, 0, 0, 0, 0, 48, 21, 54, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, 0, 0, 0, 48, 21, 54, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 21, 54, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 5, 6, 5, 6, 0, 0, 0, 0, 5, 6, 5, 6, 5, 6, 0, 0, 0, 0, 0, 48, 21, 54, 51, 0, 0, 0, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 0, 0, 5, 6, 5, 6, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, 0, 0, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 0, 0, 0, 0, 0, 48, 21, 54, 51, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, 57, 58, 26, 26, 26, 26, 0, 0, 0, 0, 48, 21, 21, 21, 21, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 2147483697, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, 0, 0, 48, 21, 21, 21, 21, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 2147483697, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 21, 21, 21, 21, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 2147483697, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 7, 8, 7, 8, 0, 0, 0, 0, 7, 8, 7, 8, 7, 8, 0, 0, 0, 0, 48, 21, 21, 21, 21, 51, 0, 0, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 0, 0, 7, 8, 7, 8, 7, 8, 0, 0, 0, 0, 0, 0, 49, 2147483697, 0, 0, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 17, 18, 0, 0, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 0, 0, 0, 0, 48, 21, 21, 21, 21, 51, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, 64, 64, 26, 26, 26, 26, 0, 0, 0, 48, 21, 54, 21, 21, 54, 21, 51, 0, 137, 138, 137, 138, 137, 138, 137, 138, 137, 138, 137, 138, 0, 0, 34, 35, 34, 35, 34, 35, 0, 0, 0, 48, 21, 54, 2147483696, 0, 137, 138, 137, 138, 137, 138, 137, 138, 0, 0, 34, 35, 0, 0, 137, 138, 137, 138, 19, 20, 21, 22, 137, 138, 137, 138, 137, 138, 137, 138, 137, 138, 137, 138, 137, 138, 137, 138, 19, 20, 21, 22, 137, 138, 0, 0, 34, 35, 34, 35, 0, 0, 0, 0, 19, 20, 21, 22, 0, 48, 21, 54, 21, 21, 54, 21, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, 0, 0, 34, 35, 34, 35, 34, 35, 0, 0, 0, 48, 21, 54, 2147483696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 34, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 21, 54, 21, 21, 54, 21, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 34, 35, 34, 35, 0, 0, 0, 48, 21, 54, 2147483696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 5, 6, 5, 6, 5, 6, 34, 35, 34, 35, 5, 6, 5, 6, 5, 6, 5, 6, 0, 48, 21, 54, 21, 21, 54, 21, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 0, 0, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 0, 48, 21, 54, 2147483696, 0, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 34, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 0, 0, 0, 48, 21, 54, 21, 21, 54, 21, 51, 0, 0, 0, 5, 6, 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, 64, 64, 26, 26, 26, 26, 0, 0, 48, 21, 21, 21, 21, 21, 21, 21, 21, 51, 169, 170, 169, 170, 169, 170, 169, 170, 169, 170, 169, 170, 0, 36, 37, 37, 37, 37, 37, 37, 38, 0, 48, 21, 21, 21, 21, 2147483696, 169, 170, 169, 170, 169, 170, 169, 170, 0, 36, 37, 37, 38, 0, 169, 170, 169, 170, 19, 20, 21, 22, 169, 170, 169, 170, 169, 170, 169, 170, 169, 170, 169, 170, 169, 170, 169, 170, 19, 20, 21, 22, 169, 170, 0, 36, 37, 37, 37, 37, 38, 0, 0, 0, 19, 20, 21, 22, 48, 21, 21, 21, 21, 21, 21, 21, 21, 51, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, 0, 36, 37, 37, 37, 37, 37, 37, 38, 0, 48, 21, 21, 21, 21, 2147483696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 37, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 37, 37, 37, 37, 38, 0, 0, 0, 0, 0, 0, 0, 48, 21, 21, 21, 21, 21, 21, 21, 21, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 37, 37, 37, 37, 37, 37, 38, 0, 48, 21, 21, 21, 21, 2147483696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 37, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 7, 8, 7, 8, 7, 8, 37, 37, 37, 37, 7, 8, 7, 8, 7, 8, 7, 8, 48, 21, 21, 21, 21, 21, 21, 21, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 0, 0, 7, 8, 7, 8, 7, 8, 7, 8, 38, 0, 48, 21, 21, 21, 21, 2147483696, 19, 20, 21, 22, 0, 0, 0, 0, 0, 36, 37, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 0, 0, 48, 21, 21, 21, 21, 21, 21, 21, 21, 51, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, 64, 64, 26, 26, 26, 26, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4], + "height":30, + "id":1, + "name":"App.TileMapBG0", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":416, + "x":0, + "y":0 + }], + "nextlayerid":4, + "nextobjectid":2, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.7.2", + "tileheight":8, + "tilesets":[ + { + "firstgid":1, + "source":"Overworld.tsx" + }], + "tilewidth":8, + "type":"map", + "version":"1.6", + "width":416 +} \ No newline at end of file diff --git a/demos/kfest-2022/demo-2/assets/tiled/world_1-1.tmx b/demos/kfest-2022/demo-2/assets/tiled/world_1-1.tmx new file mode 100644 index 0000000..8b0a90f --- /dev/null +++ b/demos/kfest-2022/demo-2/assets/tiled/world_1-1.tmx @@ -0,0 +1,41 @@ + + + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,153,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,153,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,153,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,153,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,153,154,153,154,0,0,0,0,0,0,0,0,0,0,0,155,156,157,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,153,154,153,154,0,0,0,0,0,0,0,0,0,0,0,155,156,157,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,153,154,153,154,0,0,0,0,0,0,0,0,0,0,0,155,156,157,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,153,154,153,154,153,154,0,0,0,0,0,0,0,0,0,0,0,155,156,157,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,56,10,0,0,0,0,0,153,154,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,186,186,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,186,186,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,186,186,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,186,186,186,186,186,186,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,10,0,0,0,0,185,186,186,187,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,138,0,0,0,0,0,0,0,0,0,155,156,157,156,157,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,156,157,156,157,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,156,157,156,157,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,156,157,156,157,156,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,155,156,157,158,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,0,0,0,0,0,0,188,188,188,188,188,188,159,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,188,188,188,188,188,0,0,0,0,0,0,0,0,188,188,159,160,159,160,188,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,0,0,0,0,0,0,26,26,26,26,26,26,191,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,26,26,26,26,26,0,0,0,0,0,0,0,0,26,26,191,192,191,192,26,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,5,6,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,7,8,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,5,6,5,6,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,7,8,7,8,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,138,0,0,0,0,0,137,138,137,138,137,138,137,138,137,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,5,6,5,6,5,6,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,170,0,0,0,0,0,169,170,169,170,169,170,169,170,169,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,7,8,7,8,7,8,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,0,31,32,31,32,31,32,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,160,0,0,0,0,0,188,188,159,160,188,188,159,160,188,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,138,137,138,0,0,0,0,0,0,0,0,0,0,0,0,11,12,13,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,12,13,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,188,159,160,188,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,188,0,0,0,0,0,0,0,0,0,0,188,188,188,188,0,0,0,0,0,0,0,0,159,160,0,0,0,0,159,160,0,0,0,0,159,160,0,0,0,0,0,0,0,0,0,0,188,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,188,188,188,0,0,0,0,0,0,0,0,0,0,0,0,5,6,0,0,0,0,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,5,6,0,0,0,0,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,188,188,188,159,160,188,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,5,6,5,6,5,6,5,6,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,0,26,26,26,26,26,26,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,192,0,0,0,0,0,26,26,191,192,26,26,191,192,26,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,170,169,170,0,0,0,0,0,0,0,0,0,0,0,0,15,16,17,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,16,17,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,26,191,192,26,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,26,0,0,0,0,0,0,0,0,0,0,26,26,26,26,0,0,0,0,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,0,0,0,0,0,0,26,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,26,26,26,0,0,0,0,0,0,0,0,0,0,0,0,7,8,0,0,0,0,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,7,8,0,0,0,0,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,26,26,26,191,192,26,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,7,8,7,8,7,8,7,8,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,0,26,64,26,26,64,26,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,138,137,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,12,13,14,0,0,0,0,0,0,0,0,0,0,0,0,19,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,5,6,0,0,0,0,5,6,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,5,6,5,6,0,0,0,0,5,6,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,5,6,5,6,5,6,5,6,5,6,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,0,26,64,26,26,64,26,0,0,0,0, +0,0,0,0,49,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,170,169,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,16,17,18,0,0,0,0,0,0,0,0,0,0,0,0,19,20,21,22,0,0,0,0,49,50,0,0,0,0,0,0,0,0,0,0,0,0,19,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,7,8,0,0,0,0,7,8,7,8,0,0,0,0,0,0,0,0,49,50,0,0,0,0,0,0,7,8,7,8,7,8,0,0,0,0,7,8,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,7,8,7,8,7,8,7,8,7,8,7,8,0,0,0,0,0,0,0,0,49,50,0,0,0,0,0,0,9,10,0,0,0,0,0,0,31,32,24,25,24,25,24,25,31,32,0,0, +0,0,0,48,21,54,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,12,13,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0,19,20,21,22,0,0,0,48,21,54,51,0,0,0,0,0,0,0,0,0,0,0,19,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,21,54,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,5,6,5,6,0,0,0,0,5,6,5,6,5,6,0,0,0,0,0,48,21,54,51,0,0,0,5,6,5,6,5,6,5,6,0,0,0,0,5,6,5,6,5,6,0,0,0,0,0,0,0,0,0,0,11,12,13,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,12,13,14,0,0,5,6,5,6,5,6,5,6,5,6,5,6,5,6,5,6,0,0,0,0,0,0,0,48,21,54,51,0,0,0,0,0,9,10,0,0,0,0,0,0,26,26,26,26,57,58,26,26,26,26,0,0, +0,0,48,21,21,21,21,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,2147483697,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,16,17,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0,19,20,21,22,0,0,48,21,21,21,21,51,0,0,0,0,0,0,0,0,0,0,19,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0,49,2147483697,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,21,21,21,21,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,2147483697,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,7,8,7,8,0,0,0,0,7,8,7,8,7,8,0,0,0,0,48,21,21,21,21,51,0,0,7,8,7,8,7,8,7,8,0,0,0,0,7,8,7,8,7,8,0,0,0,0,0,0,49,2147483697,0,0,15,16,17,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,16,17,18,0,0,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,0,0,0,0,0,0,48,21,21,21,21,51,0,0,0,0,9,10,0,0,0,0,0,0,26,26,26,26,64,64,26,26,26,26,0,0, +0,48,21,54,21,21,54,21,51,0,137,138,137,138,137,138,137,138,137,138,137,138,0,0,34,35,34,35,34,35,0,0,0,48,21,54,2147483696,0,137,138,137,138,137,138,137,138,0,0,34,35,0,0,137,138,137,138,19,20,21,22,137,138,137,138,137,138,137,138,137,138,137,138,137,138,137,138,19,20,21,22,137,138,0,0,34,35,34,35,0,0,0,0,19,20,21,22,0,48,21,54,21,21,54,21,51,0,0,0,0,0,0,0,0,0,19,20,21,22,0,0,34,35,34,35,34,35,0,0,0,48,21,54,2147483696,0,0,0,0,0,0,0,0,0,0,0,34,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,35,34,35,0,0,0,0,0,0,0,0,0,48,21,54,21,21,54,21,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,35,34,35,34,35,0,0,0,48,21,54,2147483696,0,0,0,0,0,0,0,0,0,0,0,34,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,5,6,5,6,5,6,34,35,34,35,5,6,5,6,5,6,5,6,0,48,21,54,21,21,54,21,5,6,5,6,5,6,5,6,5,6,0,0,0,0,5,6,5,6,5,6,5,6,0,0,0,48,21,54,2147483696,0,19,20,21,22,0,0,0,0,0,0,34,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,20,21,22,5,6,5,6,5,6,5,6,5,6,5,6,5,6,5,6,5,6,0,0,0,0,0,48,21,54,21,21,54,21,51,0,0,0,5,6,0,0,0,0,0,0,26,26,26,26,64,64,26,26,26,26,0,0, +48,21,21,21,21,21,21,21,21,51,169,170,169,170,169,170,169,170,169,170,169,170,0,36,37,37,37,37,37,37,38,0,48,21,21,21,21,2147483696,169,170,169,170,169,170,169,170,0,36,37,37,38,0,169,170,169,170,19,20,21,22,169,170,169,170,169,170,169,170,169,170,169,170,169,170,169,170,19,20,21,22,169,170,0,36,37,37,37,37,38,0,0,0,19,20,21,22,48,21,21,21,21,21,21,21,21,51,0,0,0,0,0,0,0,0,19,20,21,22,0,36,37,37,37,37,37,37,38,0,48,21,21,21,21,2147483696,0,0,0,0,0,0,0,0,0,36,37,37,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,37,37,37,37,38,0,0,0,0,0,0,0,48,21,21,21,21,21,21,21,21,51,0,0,0,0,0,0,0,0,0,0,0,0,0,36,37,37,37,37,37,37,38,0,48,21,21,21,21,2147483696,0,0,0,0,0,0,0,0,0,36,37,37,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,7,8,7,8,7,8,37,37,37,37,7,8,7,8,7,8,7,8,48,21,21,21,21,21,21,21,7,8,7,8,7,8,7,8,7,8,0,0,0,0,7,8,7,8,7,8,7,8,38,0,48,21,21,21,21,2147483696,19,20,21,22,0,0,0,0,0,36,37,37,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,20,21,22,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,0,0,0,0,48,21,21,21,21,21,21,21,21,51,0,0,7,8,0,0,0,0,0,0,26,26,26,26,64,64,26,26,26,26,0,0, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,0,0,0,0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,0,0,0,0,0,0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,0,0,0,0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,0,0,0,0,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,0,0,0,0,0,0,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,0,0,0,0,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,0,0,0,0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,0,0,0,0,0,0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,0,0,0,0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,0,0,0,0,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,0,0,0,0,0,0,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,0,0,0,0,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4 + + + diff --git a/demos/kfest-2022/demo-2/assets/tilesets/smb-256-128-4bpp.png b/demos/kfest-2022/demo-2/assets/tilesets/smb-256-128-4bpp.png new file mode 100644 index 0000000000000000000000000000000000000000..82de53555a31066d76383999540a351bbc17a496 GIT binary patch literal 3112 zcmZveX*ksT8^*uC*_g4+ShBAfvJ+X)ObtfJlBOA@!blEB)L4?S^&1=%nsKrfY7|GZ z%PH-HM5T@`NgLT4YlIO0&int1`+n}vi|4wYSI>2y_w;a*z$xJX01__FR2l%#uLxii z@|VjM-m>{Mph%jNJ*auDGW82kL3ZwT0Mv8EHvG}Q*woXF?l^H&>igSz2tsUutw&o5 zpc+gs&AQQow#w|cyo=^dM6o^JcFdZlv%p4y_38kNG`Vl`*DjXj>>UY!E?(HKa%s6r;kv;Dy zMLl(#quZ-1n~ovxVxe-+>}Ni#;*Vuw8dg&XD!P6Qy1%m1K~m5A^+#`)8}(De6AwRc zOgyr37(7xJ_Mnj|pOF{1?SdD?UC0S*#kz{>jg9yXaXWHDdQV#x7Uyxx-h?{ac87d* zh*uiaSjTG@w+C4J&%1jD!|+LgE&(RO_5H=;!ebEgyG=HZK00oQ@9+@Sj`K& zEJGEjFs(oo_Ib$QBn2LrlkX_9P~~g9aC~VT2s(mZY&}3&K{rb}5Cfqqcc^R9abd$c z=x+xWw)8xyQdGsvJPTNVtWdV2txRPF3NCBeJh28#IwidN>sZJ8(k0Zhf)N+RY4qXc zZ^I&1K7y;JYAtd8^B|h%TFtKM2Jyte~qaiWhp~m65!wc z5CtL8RRaO%x{l%tjs7_imXXhq^FeG1M;w?g5 z^f6X&@{a8*54j=c9C)dAKPdOE((E2BP)iSY27b8E!vLNu1*L9aB2#ldzIA^CVAOf| z@|4wM35g}#2BQ@2x}}R(#Sj5j^_w3h#w5J}e3Ttd;BSrT+P-4da!{mVdopp!II^z$XZUrMUHbF3{$uI$a!&3@V3?erZ-t1&u- zW4f_2ss1Q!aqehkI@iiqZL9G~c$9b^Kgt~BA*}u3Ue!(~BLdcKJc?E*QB^7kZVGCHVbU zP=pB8O{LT{lh%2E9N;$u^*7yeZ)lZ&KRmL~*oDn!aQ!r$ zWPi#@cNU@qfw1v|7_9})XMCa)+^ZY=5|B}RO+sbhk=w>cs*fl+>A<$rL{PiE@dDw= zPS+ENCLiGGKV1Nh)^>~BxU?*}>yRt7FYs`@9K^pQjPM{-3krEo!$+YDj%W?7F25JI z2PMx`h5rtrj~EKRc%FrVJz(~Wb& zPy*7t#BSg*8Hi0$ld1-twm$hfS{4gez&E2df4n^?;$vL(Is|pszqrLbz%v!b$3xnG zJprg`Hl{D~G(zB&0_v{bY;HU9+zw{^{DQ=}sVCif_)n-~_fuQF&e7fF;juLh%lkL3 zHx#T1p3N?jv`2puSvM;C^=B6|R+`(;=27__wHGg*IwVjg`?uyA+#;__3t#+n#SCoP zZrE;+d|%Eq&nwN)E{+ywWMoXF6Hx!=wK%+7(?NgT3ej&h;HrFSx)0xPXy`cv-nI&d zV~lF={cSk)MMA!vR0nIF&94_0S=L2#d}?bmh@blrr*H-V&ax<& z;pRvzCCFCbN8oeS@I8KBvoph&&uJ@DiK<=){wby%k2E=zKY#6eqHD?9* zKX%^2r40Mq@eoG(Y*;ckS`5;EGch>9RH$t&0WkBlp6m3!Mk6BUDZLKtcZwqeHSd-KmuIM_TzMcr{%EvK(8 z%7fLSPWnftIM}gmo)g`FJg>Z8`W(@Lg)KfiiZcNF;+tAVhVyk}t>|o#z2{DXAQo!( z0kywQt_5U`OjhhOsH5U0SCWblA!gG#n*t^9a2+eyhCEhH07_~R7#%B;It};9L#CvM zpJ8GU;J|ucc%b6qXN)m{e{Sm*{yXCuO-dY;mrjNnT$fB1Meb|P!C<--lZeY44dgr_ z4bZ|XZDz(AU21E%#%ocH5#Q|!+7GuDB-eB4;qTPMS$@U$r6~LNuDWv_qI!hvO6}7I z!C?Y|($J0ikuspD-j!BWDV z9rm_8J?ySVqFRk4swykmBq@#ToxG}Gw39-C!aLF_ysdM*=4`tg*BKh{=IM_;1tb6I8 zd==_c*O{+ng1sc|dl<@d3xV^?%DC#^O!vtO?nnbKQ?a2EvfWbs4%(EnW;3pCRG{%i zAyBxTq12UoA1 z(R~Tw&#;X24&vscUAR80mQdMAQ@0i~wxxV3ZG8LlRe9v2JuHR4@w8VasuwTkk+hQL z8dFw70?T@||JiwUbf!LU_SDSjl(Y;{Ubu!QV)F#pd!~6a;Vtk_H+R6m=3a*GAWAK| zBRjHu*^0o-PNO)&4$U_%(K5+ttjd7sOx3wrG<@h1VH@8%+S(&);BAHVxEn_0?AH`! zrs|9OHt&cWMMPEo+v}40!Hn4ftd-%(^Pn$3UZmCi7Ozjat-f{3yh&&(juqgHek5N& z99|0tqsTOj;PJ7o8gPpUgb%*8J!ZFOaxAO%pqoEeji849jO+SnaY_Mse=$i&??};u z4cuT-mmAp3MpT`3v=ZT=*Catp0?$_!d4Ih@ZsVu790j$mL%{_9?ueYW%g8DbyS?+Iu1?7G%YQdaL;be_n?EPYKX&S;6GU{;5ZM(8erzWg zi^r=CJrJb;p-A&A6uNdyGI$vbon3zz?j3}F++ ./gen/App.TileSet.s", + "build:sys16": "%npm_package_config_merlin32% -V %npm_package_config_macros% App.s", + "build": "npm run build:tool && npm run build:sys16", + "build:tool": "%npm_package_config_merlin32% -V %npm_package_config_macros% ../../../src/Master.s", + "build:image": "build-image.bat %npm_package_config_cadius%" + }, + "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": { + "pngjs": "^6.0.0", + "string-builder": "^0.1.8", + "watch": "latest", + "xml2json": "^0.12.0" + } +} diff --git a/demos/kfest-2022/demo-3/App.Main.s b/demos/kfest-2022/demo-3/App.Main.s new file mode 100644 index 0000000..a26dacd --- /dev/null +++ b/demos/kfest-2022/demo-3/App.Main.s @@ -0,0 +1,368 @@ +; Test driver to exercise graphics routines. + + 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 + +tiledata EXT ; tileset buffer +TileSetPalette EXT + +; Keycodes +LEFT_ARROW equ $08 +RIGHT_ARROW equ $15 +UP_ARROW equ $0B +DOWN_ARROW equ $0A + +; Dynamic Tile Animations. Add 4 for each offset +; +; Tile IDs = 128,129,130,131 +; 160,161,162,163 +; 192,193,194,195 +; 224,225,226,227 +; +; Direct page space +MyUserId equ 0 +BankLoad equ 2 +StartX equ 4 +StartY equ 6 +TileMapWidth equ 8 +TileMapHeight equ 10 +ScreenWidth equ 12 +ScreenHeight equ 14 +MaxGlobalX equ 16 +MaxGlobalY equ 18 +MaxBG0X equ 20 +MaxBG0Y equ 22 +OldOneSecondCounter equ 26 +appTmp0 equ 28 +appTmp1 equ 30 +appTmp2 equ 32 + + 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_DYN_TILES ; Engine in Fast Mode + jsr GTEStartUp ; Load and install the GTE User Tool + +; Initialize local variables + + stz StartX + stz StartY + stz frameCount + +; Initialize the graphics screen playfield + + pea #320 + pea #200 + _GTESetScreenMode + +; Load a tileset + + pea #^tiledata + pea #tiledata + _GTELoadTileSet + + pea $0000 + pea #^TileSetPalette + pea #TileSetPalette + _GTESetPalette + +; Set up our level data + + jsr BG0SetUp + jsr SetLimits + + jsr InitOverlay ; Initialize the status bar + pha + _GTEGetSeconds + pla + sta OldOneSecondCounter + jsr UdtOverlay + +; Set up a very specific test. First, we draw a sprite into the sprite plane, and then +; leave it alone. We are just testing the ability to merge sprite plane data into +; the play field tiles. +EvtLoop + pha + _GTEReadControl + pla + + jsr HandleKeys ; Do the generic key handlers + bcs :do_more + brl :do_render + +:do_more + cmp #'d' + bne :not_d + lda StartX + cmp MaxBG0X + bcc *+5 + brl :do_render + inc StartX + pei StartX + pei StartY + _GTESetBG0Origin + brl :do_render +:not_d + + cmp #'a' + bne :not_a + lda StartX + bne *+5 + brl :do_render + dec StartX + pei StartX + pei StartY + _GTESetBG0Origin + brl :do_render +:not_a + + cmp #'s' + bne :not_s + lda StartY + cmp MaxBG0Y + bcs :do_render + inc StartY + pei StartX + pei StartY + _GTESetBG0Origin + bra :do_render +:not_s + + cmp #'w' + bne :not_w + lda StartY + beq :do_render + dec StartY + pei StartX + pei StartY + _GTESetBG0Origin + bra :do_render +:not_w + +:do_render + jsr SetDynTiles + + _GTERender + +; Update the performance counters + + inc frameCount + pha + _GTEGetSeconds + pla + cmp OldOneSecondCounter + beq :noudt + sta OldOneSecondCounter + jsr UdtOverlay + stz frameCount +:noudt + brl EvtLoop + +; Exit code +Exit + _GTEShutDown +Quit + _QuitGS qtRec + + bcs Fatal +Fatal brk $00 + +qtRec adrl $0000 + da $00 + +; Color palette +MyDirectPage ds 2 + +; Pick the correct shift for each of the 16 background tiles over 32 horizontal positions + +SetDynTiles + lda StartX + and #$001F + asl + sta appTmp0 + stz appTmp1 + stz appTmp2 + + jsr setDynRow + + lda appTmp1 + clc + adc #4 + sta appTmp1 + + lda appTmp2 + clc + adc #32 + sta appTmp2 + + jsr setDynRow + + lda appTmp1 + clc + adc #4 + sta appTmp1 + + lda appTmp2 + clc + adc #32 + sta appTmp2 + + jsr setDynRow + + lda appTmp1 + clc + adc #4 + sta appTmp1 + + lda appTmp2 + clc + adc #32 + sta appTmp2 + + jmp setDynRow + +setDynRow + ldx appTmp0 + lda tile128,x + clc + adc appTmp2 + inc + pha + lda appTmp1 + clc + adc #0 + pha + _GTECopyTileToDynamic + + ldx appTmp0 + lda tile129,x + clc + adc appTmp2 + inc + pha + lda appTmp1 + clc + adc #1 + pha + _GTECopyTileToDynamic + + ldx appTmp0 + lda tile130,x + clc + adc appTmp2 + inc + pha + lda appTmp1 + clc + adc #2 + pha + _GTECopyTileToDynamic + + ldx appTmp0 + lda tile131,x + clc + adc appTmp2 + inc + pha + lda appTmp1 + clc + adc #3 + pha + _GTECopyTileToDynamic + + rts + +tile128 dw 128,132,136,140,144,148,152,156 +tile131 dw 131,135,139,143,147,151,155,159 +tile130 dw 130,134,138,142,146,150,154,158 +tile129 dw 129,133,137,141,145,149,153,157 + dw 128,132,136,140,144,148,152,156 + dw 131,135,139,143,147,151,155,159 + dw 130,134,138,142,146,150,154,158 + +;tile129 dw 129,133,137,141,145,149,153,157 +; dw 128,132,136,140,144,148,152,156 +; dw 131,135,138,143,147,151,155,159 +; dw 130,134,138,142,146,150,154,158 + + + +SetLimits + pha ; Allocate space for width (in tiles), height (in tiles), pointer + pha + pha + pha + _GTEGetBG0TileMapInfo + pla + sta TileMapWidth + pla + sta TileMapHeight + pla + pla ; discard the pointer + + pha ; Allocate space for x, y, width, height + pha + pha + pha + _GTEGetScreenInfo + pla + pla ; Discard screen corner + pla + sta ScreenWidth + pla + sta ScreenHeight + + lda TileMapWidth + asl + asl + sta MaxGlobalX + sec + sbc ScreenWidth + sta MaxBG0X + + lda TileMapHeight + asl + asl + asl + sta MaxGlobalY + sec + sbc ScreenHeight + sta MaxBG0Y + +; Check if the current StartX and StartY are out of bounds + lda StartX + cmp MaxBG0X + bcc :x_ok + lda MaxBG0X +:x_ok pha + + lda StartY + cmp MaxBG0Y + bcc :y_ok + lda MaxBG0Y +:y_ok pha + _GTESetBG0Origin + + rts + +frameCount equ 24 + + PUT ../StartUp.s + PUT ../../shell/Overlay.s + PUT gen/App.TileMapBG0.s diff --git a/demos/kfest-2022/demo-3/App.s b/demos/kfest-2022/demo-3/App.s new file mode 100644 index 0000000..c6a6d62 --- /dev/null +++ b/demos/kfest-2022/demo-3/App.s @@ -0,0 +1,15 @@ +; KFest 2022: Demo #1 + + TYP $B3 ; S16 file + DSK GTEDemo3 + XPL + +; Segment #1 -- Main execution block + + ASM App.Main.s + SNA Main + +; Segment #2 -- Tileset + + ASM gen\App.TileSet.s + SNA TSET \ No newline at end of file diff --git a/demos/kfest-2022/demo-3/assets/tiled/MetalStore.tsx b/demos/kfest-2022/demo-3/assets/tiled/MetalStore.tsx new file mode 100644 index 0000000..6030838 --- /dev/null +++ b/demos/kfest-2022/demo-3/assets/tiled/MetalStore.tsx @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demos/kfest-2022/demo-3/assets/tiled/level-1.json b/demos/kfest-2022/demo-3/assets/tiled/level-1.json new file mode 100644 index 0000000..093b1fc --- /dev/null +++ b/demos/kfest-2022/demo-3/assets/tiled/level-1.json @@ -0,0 +1,32 @@ +{ "compressionlevel":-1, + "height":30, + "infinite":false, + "layers":[ + { + "data":[1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741929, 1073741930, 1073741931, 1073741932, 1073741869, 1073741870, 1073741871, 1073741872, 1073741869, 1073741870, 1073741871, 1073741872, 1073741929, 1073741930, 1073741931, 1073741932, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741929, 1073741930, 1073741931, 1073741932, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741929, 1073741930, 1073741931, 1073741932, 1073741869, 1073741870, 1073741871, 1073741872, 1073741869, 1073741870, 1073741871, 1073741872, 1073741929, 1073741930, 1073741931, 1073741932, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741929, 1073741930, 1073741931, 1073741932, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741929, 1073741930, 1073741931, 1073741932, 1073741925, 1073741926, 1073741927, 1073741928, 1073741869, 1073741870, 1073741871, 1073741872, 1073741929, 1073741930, 1073741931, 1073741932, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741929, 1073741930, 1073741931, 1073741932, 1073741925, 1073741926, 1073741927, 1073741928, 1073741929, 1073741930, 1073741931, 1073741932, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741929, 1073741930, 1073741931, 1073741932, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741869, 1073741870, 1073741871, 1073741872, 1073741869, 1073741870, 1073741871, 1073741872, 1073741929, 1073741930, 1073741931, 1073741932, 1073741869, 1073741870, 1073741871, 1073741872, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741897, 1073741898, 1073741899, 1073741900, 1073741837, 1073741838, 1073741839, 1073741840, 1073741837, 1073741838, 1073741839, 1073741840, 1073741897, 1073741898, 1073741899, 1073741900, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741897, 1073741898, 1073741899, 1073741900, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741897, 1073741898, 1073741899, 1073741900, 1073741837, 1073741838, 1073741839, 1073741840, 1073741837, 1073741838, 1073741839, 1073741840, 1073741897, 1073741898, 1073741899, 1073741900, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741897, 1073741898, 1073741899, 1073741900, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741897, 1073741898, 1073741899, 1073741900, 1073741893, 1073741894, 1073741895, 1073741896, 1073741837, 1073741838, 1073741839, 1073741840, 1073741897, 1073741898, 1073741899, 1073741900, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741897, 1073741898, 1073741899, 1073741900, 1073741893, 1073741894, 1073741895, 1073741896, 1073741897, 1073741898, 1073741899, 1073741900, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741897, 1073741898, 1073741899, 1073741900, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741837, 1073741838, 1073741839, 1073741840, 1073741837, 1073741838, 1073741839, 1073741840, 1073741897, 1073741898, 1073741899, 1073741900, 1073741837, 1073741838, 1073741839, 1073741840, 1073741869, 1073741870, 1073741871, 1073741872, 1073741869, 1073741870, 1073741871, 1073741872, 1073741929, 1073741930, 1073741931, 1073741932, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741929, 1073741930, 1073741931, 1073741932, 1073741861, 1073741862, 1073741863, 1073741864, 1073741861, 1073741862, 1073741863, 1073741864, 1073741865, 1073741866, 1073741867, 1073741868, 1073741861, 1073741862, 1073741863, 1073741864, 1073741861, 1073741862, 1073741863, 1073741864, 1073741865, 1073741866, 1073741867, 1073741868, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741929, 1073741930, 1073741931, 1073741932, 1073741869, 1073741870, 1073741871, 1073741872, 1073741869, 1073741870, 1073741871, 1073741872, 1073741865, 1073741866, 1073741867, 1073741868, 1073741861, 1073741862, 1073741863, 1073741864, 1073741861, 1073741862, 1073741863, 1073741864, 1073741865, 1073741866, 1073741867, 1073741868, 1073741861, 1073741862, 1073741863, 1073741864, 1073741925, 1073741926, 1073741927, 1073741928, 1073741929, 1073741930, 1073741931, 1073741932, 1073741861, 1073741862, 1073741863, 1073741864, 1073741861, 1073741862, 1073741863, 1073741864, 1073741865, 1073741866, 1073741867, 1073741868, 1073741861, 1073741862, 1073741863, 1073741864, 1073741865, 1073741866, 1073741867, 1073741868, 1073741861, 1073741862, 1073741863, 1073741864, 1073741869, 1073741870, 1073741871, 1073741872, 1073741869, 1073741870, 1073741871, 1073741872, 1073741929, 1073741930, 1073741931, 1073741932, 1073741869, 1073741870, 1073741871, 1073741872, 1073741869, 1073741870, 1073741871, 1073741872, 1073741869, 1073741870, 1073741871, 1073741872, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741929, 1073741930, 1073741931, 1073741932, 1073741925, 1073741926, 1073741927, 1073741928, 1073741837, 1073741838, 1073741839, 1073741840, 1073741837, 1073741838, 1073741839, 1073741840, 1073741897, 1073741898, 1073741899, 1073741900, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741897, 1073741898, 1073741899, 1073741900, 1073741829, 1073741830, 1073741831, 1073741832, 1073741829, 1073741830, 1073741831, 1073741832, 1073741833, 1073741834, 1073741835, 1073741836, 1073741829, 1073741830, 1073741831, 1073741832, 1073741829, 1073741830, 1073741831, 1073741832, 1073741833, 1073741834, 1073741835, 1073741836, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741897, 1073741898, 1073741899, 1073741900, 1073741837, 1073741838, 1073741839, 1073741840, 1073741837, 1073741838, 1073741839, 1073741840, 1073741833, 1073741834, 1073741835, 1073741836, 1073741829, 1073741830, 1073741831, 1073741832, 1073741829, 1073741830, 1073741831, 1073741832, 1073741833, 1073741834, 1073741835, 1073741836, 1073741829, 1073741830, 1073741831, 1073741832, 1073741893, 1073741894, 1073741895, 1073741896, 1073741897, 1073741898, 1073741899, 1073741900, 1073741829, 1073741830, 1073741831, 1073741832, 1073741829, 1073741830, 1073741831, 1073741832, 1073741833, 1073741834, 1073741835, 1073741836, 1073741829, 1073741830, 1073741831, 1073741832, 1073741833, 1073741834, 1073741835, 1073741836, 1073741829, 1073741830, 1073741831, 1073741832, 1073741837, 1073741838, 1073741839, 1073741840, 1073741837, 1073741838, 1073741839, 1073741840, 1073741897, 1073741898, 1073741899, 1073741900, 1073741837, 1073741838, 1073741839, 1073741840, 1073741837, 1073741838, 1073741839, 1073741840, 1073741837, 1073741838, 1073741839, 1073741840, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741897, 1073741898, 1073741899, 1073741900, 1073741893, 1073741894, 1073741895, 1073741896, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741929, 1073741930, 1073741931, 1073741932, 1073741861, 1073741862, 1073741863, 1073741864, 1073741861, 1073741862, 1073741863, 1073741864, 1073741865, 1073741866, 1073741867, 1073741868, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 1073741861, 1073741862, 1073741863, 1073741864, 1073741861, 1073741862, 1073741863, 1073741864, 1073741865, 1073741866, 1073741867, 1073741868, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 17, 18, 19, 20, 1073741861, 1073741862, 1073741863, 1073741864, 1073741865, 1073741866, 1073741867, 1073741868, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 193, 194, 195, 196, 109, 109, 109, 109, 109, 109, 109, 109, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741929, 1073741930, 1073741931, 1073741932, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741925, 1073741926, 1073741927, 1073741928, 1073741861, 1073741862, 1073741863, 1073741864, 1073741861, 1073741862, 1073741863, 1073741864, 1073741865, 1073741866, 1073741867, 1073741868, 1073741861, 1073741862, 1073741863, 1073741864, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741897, 1073741898, 1073741899, 1073741900, 1073741829, 1073741830, 1073741831, 1073741832, 1073741829, 1073741830, 1073741831, 1073741832, 1073741833, 1073741834, 1073741835, 1073741836, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 1073741829, 1073741830, 1073741831, 1073741832, 1073741829, 1073741830, 1073741831, 1073741832, 1073741833, 1073741834, 1073741835, 1073741836, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 49, 50, 51, 52, 1073741829, 1073741830, 1073741831, 1073741832, 1073741833, 1073741834, 1073741835, 1073741836, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 225, 226, 227, 228, 77, 77, 55, 56, 53, 54, 55, 56, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741897, 1073741898, 1073741899, 1073741900, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741893, 1073741894, 1073741895, 1073741896, 1073741829, 1073741830, 1073741831, 1073741832, 1073741829, 1073741830, 1073741831, 1073741832, 1073741833, 1073741834, 1073741835, 1073741836, 1073741829, 1073741830, 1073741831, 1073741832, 1073741861, 1073741862, 1073741863, 1073741864, 1073741861, 1073741862, 1073741863, 1073741864, 1073741865, 1073741866, 1073741867, 1073741868, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 1073741862, 1073741863, 1073741864, 1073741861, 1073741862, 1073741863, 1073741864, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 81, 82, 83, 84, 109, 109, 109, 109, 109, 109, 109, 109, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 129, 130, 131, 132, 77, 77, 87, 88, 85, 86, 87, 88, 1073741861, 1073741862, 1073741863, 1073741864, 1073741869, 1073741870, 1073741871, 1073741872, 1073741929, 1073741930, 1073741931, 1073741932, 1073741861, 1073741862, 1073741863, 1073741864, 1073741861, 1073741862, 1073741863, 1073741864, 1073741861, 1073741862, 1073741863, 1073741864, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 1073741829, 1073741830, 1073741831, 1073741832, 1073741829, 1073741830, 1073741831, 1073741832, 1073741833, 1073741834, 1073741835, 1073741836, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 1073741829, 1073741830, 1073741831, 1073741832, 1073741829, 1073741830, 1073741831, 1073741832, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 113, 114, 115, 116, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 161, 162, 163, 164, 77, 77, 119, 120, 117, 118, 119, 120, 1073741829, 1073741830, 1073741831, 1073741832, 1073741837, 1073741838, 1073741839, 1073741840, 1073741897, 1073741898, 1073741899, 1073741900, 1073741829, 1073741830, 1073741831, 1073741832, 1073741829, 1073741830, 1073741831, 1073741832, 1073741829, 1073741830, 1073741831, 1073741832, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 109, 109, 109, 109, 109, 109, 109, 109, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 109, 109, 109, 109, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 193, 194, 195, 196, 77, 77, 23, 24, 21, 22, 23, 24, 17, 18, 19, 20, 1073741925, 1073741926, 1073741927, 1073741928, 1073741929, 1073741930, 1073741931, 1073741932, 17, 18, 19, 20, 109, 109, 109, 109, 109, 109, 109, 109, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 225, 226, 227, 228, 77, 77, 55, 56, 53, 54, 55, 56, 49, 50, 51, 52, 1073741893, 1073741894, 1073741895, 1073741896, 1073741897, 1073741898, 1073741899, 1073741900, 49, 50, 51, 52, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 129, 130, 131, 132, 77, 77, 87, 88, 85, 86, 87, 88, 81, 82, 83, 84, 1073741861, 1073741862, 1073741863, 1073741864, 1073741865, 1073741866, 1073741867, 1073741868, 81, 82, 83, 84, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 161, 162, 163, 164, 77, 77, 119, 120, 117, 118, 119, 120, 113, 114, 115, 116, 1073741829, 1073741830, 1073741831, 1073741832, 1073741833, 1073741834, 1073741835, 1073741836, 113, 114, 115, 116, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 193, 194, 195, 196, 77, 77, 23, 24, 21, 22, 23, 24, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 17, 18, 19, 20, 17, 18, 19, 20, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 225, 226, 227, 228, 77, 77, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 49, 50, 51, 52, 49, 50, 51, 52, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 85, 86, 77, 77, 129, 130, 131, 132, 77, 77, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 81, 82, 83, 84, 81, 82, 83, 84, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 33, 34, 35, 36, 33, 34, 35, 36, 33, 34, 35, 36, 33, 34, 35, 36, 117, 118, 77, 77, 161, 162, 163, 164, 77, 77, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 113, 114, 115, 116, 113, 114, 115, 116, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 21, 22, 77, 77, 193, 194, 195, 196, 77, 77, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 109, 109, 109, 109, 109, 109, 109, 109, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 225, 226, 227, 228, 77, 77, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 5, 6, 7, 8, 5, 6, 7, 8, 9, 10, 11, 12, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 129, 130, 131, 132, 9, 10, 11, 12, 5, 6, 7, 8, 5, 6, 7, 8, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 37, 38, 39, 40, 37, 38, 39, 40, 41, 42, 43, 44, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 161, 162, 163, 164, 41, 42, 43, 44, 37, 38, 39, 40, 37, 38, 39, 40, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 17, 18, 19, 20, 9, 10, 11, 12, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 5, 6, 7, 8, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 193, 194, 195, 196, 73, 74, 75, 76, 69, 70, 71, 72, 69, 70, 71, 72, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 49, 50, 51, 52, 41, 42, 43, 44, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 37, 38, 39, 40, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 225, 226, 227, 228, 105, 106, 107, 108, 101, 102, 103, 104, 101, 102, 103, 104, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 5, 6, 7, 8, 5, 6, 7, 8, 9, 10, 11, 12, 5, 6, 7, 8, 5, 6, 7, 8, 9, 10, 11, 12, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 81, 82, 83, 84, 73, 74, 75, 76, 13, 14, 15, 16, 13, 14, 15, 16, 73, 74, 75, 76, 69, 70, 71, 72, 5, 6, 7, 8, 9, 10, 11, 12, 5, 6, 7, 8, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 85, 86, 87, 88, 9, 10, 11, 12, 5, 6, 7, 8, 5, 6, 7, 8, 9, 10, 11, 12, 5, 6, 7, 8, 73, 74, 75, 76, 13, 14, 15, 16, 13, 14, 15, 16, 5, 6, 7, 8, 9, 10, 11, 12, 5, 6, 7, 8, 5, 6, 7, 8, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 87, 88, 85, 86, 77, 77, 85, 86, 87, 88, 37, 38, 39, 40, 37, 38, 39, 40, 41, 42, 43, 44, 37, 38, 39, 40, 37, 38, 39, 40, 41, 42, 43, 44, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 113, 114, 115, 116, 105, 106, 107, 108, 45, 46, 47, 48, 45, 46, 47, 48, 105, 106, 107, 108, 101, 102, 103, 104, 37, 38, 39, 40, 41, 42, 43, 44, 37, 38, 39, 40, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 117, 118, 119, 120, 41, 42, 43, 44, 37, 38, 39, 40, 37, 38, 39, 40, 41, 42, 43, 44, 37, 38, 39, 40, 105, 106, 107, 108, 45, 46, 47, 48, 45, 46, 47, 48, 37, 38, 39, 40, 41, 42, 43, 44, 37, 38, 39, 40, 37, 38, 39, 40, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 119, 120, 117, 118, 77, 77, 117, 118, 119, 120, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 5, 6, 7, 8, 5, 6, 7, 8, 9, 10, 11, 12, 5, 6, 7, 8, 5, 6, 7, 8, 73, 74, 75, 76, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 13, 14, 15, 16, 69, 70, 71, 72, 73, 74, 75, 76, 69, 70, 71, 72, 21, 22, 23, 24, 21, 22, 77, 77, 21, 22, 23, 24, 21, 22, 23, 24, 73, 74, 75, 76, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 69, 70, 71, 72, 73, 74, 75, 76, 69, 70, 71, 72, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 69, 70, 71, 72, 69, 70, 71, 72, 21, 22, 23, 24, 21, 22, 23, 24, 21, 22, 23, 24, 9, 10, 11, 12, 5, 6, 7, 8, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 37, 38, 39, 40, 37, 38, 39, 40, 41, 42, 43, 44, 37, 38, 39, 40, 37, 38, 39, 40, 105, 106, 107, 108, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 45, 46, 47, 48, 101, 102, 103, 104, 105, 106, 107, 108, 101, 102, 103, 104, 53, 54, 55, 56, 53, 54, 77, 77, 53, 54, 55, 56, 53, 54, 55, 56, 105, 106, 107, 108, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 101, 102, 103, 104, 105, 106, 107, 108, 101, 102, 103, 104, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 101, 102, 103, 104, 101, 102, 103, 104, 53, 54, 55, 56, 53, 54, 55, 56, 53, 54, 55, 56, 41, 42, 43, 44, 37, 38, 39, 40, 13, 14, 15, 16, 13, 14, 15, 16, 73, 74, 75, 76, 13, 14, 15, 16, 13, 14, 15, 16, 73, 74, 75, 76, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 13, 14, 15, 16, 13, 14, 15, 16, 73, 74, 75, 76, 69, 70, 71, 72, 13, 14, 15, 16, 73, 74, 75, 76, 13, 14, 15, 16, 5, 6, 7, 8, 9, 10, 11, 12, 5, 6, 7, 8, 5, 6, 7, 8, 73, 74, 75, 76, 13, 14, 15, 16, 13, 14, 15, 16, 73, 74, 75, 76, 13, 14, 15, 16, 73, 74, 75, 76, 13, 14, 15, 16, 13, 14, 15, 16, 13, 14, 15, 16, 73, 74, 75, 76, 13, 14, 15, 16, 13, 14, 15, 16, 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 73, 74, 75, 76, 69, 70, 71, 72, 45, 46, 47, 48, 45, 46, 47, 48, 105, 106, 107, 108, 45, 46, 47, 48, 45, 46, 47, 48, 105, 106, 107, 108, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 45, 46, 47, 48, 45, 46, 47, 48, 105, 106, 107, 108, 101, 102, 103, 104, 45, 46, 47, 48, 105, 106, 107, 108, 45, 46, 47, 48, 37, 38, 39, 40, 41, 42, 43, 44, 37, 38, 39, 40, 37, 38, 39, 40, 105, 106, 107, 108, 45, 46, 47, 48, 45, 46, 47, 48, 105, 106, 107, 108, 45, 46, 47, 48, 105, 106, 107, 108, 45, 46, 47, 48, 45, 46, 47, 48, 45, 46, 47, 48, 105, 106, 107, 108, 45, 46, 47, 48, 45, 46, 47, 48, 37, 38, 39, 40, 37, 38, 39, 40, 37, 38, 39, 40, 105, 106, 107, 108, 101, 102, 103, 104, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 13, 14, 15, 16, 13, 14, 15, 16, 73, 74, 75, 76, 13, 14, 15, 16, 13, 14, 15, 16, 73, 74, 75, 76, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 13, 14, 15, 16, 69, 70, 71, 72, 73, 74, 75, 76, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 69, 70, 71, 72, 73, 74, 75, 76, 69, 70, 71, 72, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 69, 70, 71, 72, 69, 70, 71, 72, 69, 70, 71, 72, 69, 70, 71, 72, 69, 70, 71, 72, 73, 74, 75, 76, 13, 14, 15, 16, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 45, 46, 47, 48, 45, 46, 47, 48, 105, 106, 107, 108, 45, 46, 47, 48, 45, 46, 47, 48, 105, 106, 107, 108, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 45, 46, 47, 48, 101, 102, 103, 104, 105, 106, 107, 108, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 101, 102, 103, 104, 105, 106, 107, 108, 101, 102, 103, 104, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 101, 102, 103, 104, 101, 102, 103, 104, 101, 102, 103, 104, 101, 102, 103, 104, 101, 102, 103, 104, 105, 106, 107, 108, 45, 46, 47, 48], + "height":30, + "id":1, + "name":"App.TileMapBG0", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":160, + "x":0, + "y":0 + }], + "nextlayerid":2, + "nextobjectid":1, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.7.2", + "tileheight":8, + "tilesets":[ + { + "firstgid":1, + "source":"MetalStore.tsx" + }], + "tilewidth":8, + "type":"map", + "version":"1.6", + "width":160 +} \ No newline at end of file diff --git a/demos/kfest-2022/demo-3/assets/tiled/level-1.tmx b/demos/kfest-2022/demo-3/assets/tiled/level-1.tmx new file mode 100644 index 0000000..db2ca2c --- /dev/null +++ b/demos/kfest-2022/demo-3/assets/tiled/level-1.tmx @@ -0,0 +1,41 @@ + + + + + + + + +1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741929,1073741930,1073741931,1073741932,1073741869,1073741870,1073741871,1073741872,1073741869,1073741870,1073741871,1073741872,1073741929,1073741930,1073741931,1073741932,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741929,1073741930,1073741931,1073741932,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741929,1073741930,1073741931,1073741932,1073741869,1073741870,1073741871,1073741872,1073741869,1073741870,1073741871,1073741872,1073741929,1073741930,1073741931,1073741932,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741929,1073741930,1073741931,1073741932,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741929,1073741930,1073741931,1073741932,1073741925,1073741926,1073741927,1073741928,1073741869,1073741870,1073741871,1073741872,1073741929,1073741930,1073741931,1073741932,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741929,1073741930,1073741931,1073741932,1073741925,1073741926,1073741927,1073741928,1073741929,1073741930,1073741931,1073741932,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741929,1073741930,1073741931,1073741932,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741869,1073741870,1073741871,1073741872,1073741869,1073741870,1073741871,1073741872,1073741929,1073741930,1073741931,1073741932,1073741869,1073741870,1073741871,1073741872, +1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741897,1073741898,1073741899,1073741900,1073741837,1073741838,1073741839,1073741840,1073741837,1073741838,1073741839,1073741840,1073741897,1073741898,1073741899,1073741900,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741897,1073741898,1073741899,1073741900,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741897,1073741898,1073741899,1073741900,1073741837,1073741838,1073741839,1073741840,1073741837,1073741838,1073741839,1073741840,1073741897,1073741898,1073741899,1073741900,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741897,1073741898,1073741899,1073741900,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741897,1073741898,1073741899,1073741900,1073741893,1073741894,1073741895,1073741896,1073741837,1073741838,1073741839,1073741840,1073741897,1073741898,1073741899,1073741900,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741897,1073741898,1073741899,1073741900,1073741893,1073741894,1073741895,1073741896,1073741897,1073741898,1073741899,1073741900,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741897,1073741898,1073741899,1073741900,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741837,1073741838,1073741839,1073741840,1073741837,1073741838,1073741839,1073741840,1073741897,1073741898,1073741899,1073741900,1073741837,1073741838,1073741839,1073741840, +1073741869,1073741870,1073741871,1073741872,1073741869,1073741870,1073741871,1073741872,1073741929,1073741930,1073741931,1073741932,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741929,1073741930,1073741931,1073741932,1073741861,1073741862,1073741863,1073741864,1073741861,1073741862,1073741863,1073741864,1073741865,1073741866,1073741867,1073741868,1073741861,1073741862,1073741863,1073741864,1073741861,1073741862,1073741863,1073741864,1073741865,1073741866,1073741867,1073741868,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741929,1073741930,1073741931,1073741932,1073741869,1073741870,1073741871,1073741872,1073741869,1073741870,1073741871,1073741872,1073741865,1073741866,1073741867,1073741868,1073741861,1073741862,1073741863,1073741864,1073741861,1073741862,1073741863,1073741864,1073741865,1073741866,1073741867,1073741868,1073741861,1073741862,1073741863,1073741864,1073741925,1073741926,1073741927,1073741928,1073741929,1073741930,1073741931,1073741932,1073741861,1073741862,1073741863,1073741864,1073741861,1073741862,1073741863,1073741864,1073741865,1073741866,1073741867,1073741868,1073741861,1073741862,1073741863,1073741864,1073741865,1073741866,1073741867,1073741868,1073741861,1073741862,1073741863,1073741864,1073741869,1073741870,1073741871,1073741872,1073741869,1073741870,1073741871,1073741872,1073741929,1073741930,1073741931,1073741932,1073741869,1073741870,1073741871,1073741872,1073741869,1073741870,1073741871,1073741872,1073741869,1073741870,1073741871,1073741872,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741929,1073741930,1073741931,1073741932,1073741925,1073741926,1073741927,1073741928, +1073741837,1073741838,1073741839,1073741840,1073741837,1073741838,1073741839,1073741840,1073741897,1073741898,1073741899,1073741900,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741897,1073741898,1073741899,1073741900,1073741829,1073741830,1073741831,1073741832,1073741829,1073741830,1073741831,1073741832,1073741833,1073741834,1073741835,1073741836,1073741829,1073741830,1073741831,1073741832,1073741829,1073741830,1073741831,1073741832,1073741833,1073741834,1073741835,1073741836,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741897,1073741898,1073741899,1073741900,1073741837,1073741838,1073741839,1073741840,1073741837,1073741838,1073741839,1073741840,1073741833,1073741834,1073741835,1073741836,1073741829,1073741830,1073741831,1073741832,1073741829,1073741830,1073741831,1073741832,1073741833,1073741834,1073741835,1073741836,1073741829,1073741830,1073741831,1073741832,1073741893,1073741894,1073741895,1073741896,1073741897,1073741898,1073741899,1073741900,1073741829,1073741830,1073741831,1073741832,1073741829,1073741830,1073741831,1073741832,1073741833,1073741834,1073741835,1073741836,1073741829,1073741830,1073741831,1073741832,1073741833,1073741834,1073741835,1073741836,1073741829,1073741830,1073741831,1073741832,1073741837,1073741838,1073741839,1073741840,1073741837,1073741838,1073741839,1073741840,1073741897,1073741898,1073741899,1073741900,1073741837,1073741838,1073741839,1073741840,1073741837,1073741838,1073741839,1073741840,1073741837,1073741838,1073741839,1073741840,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741897,1073741898,1073741899,1073741900,1073741893,1073741894,1073741895,1073741896, +1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741929,1073741930,1073741931,1073741932,1073741861,1073741862,1073741863,1073741864,1073741861,1073741862,1073741863,1073741864,1073741865,1073741866,1073741867,1073741868,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,1073741861,1073741862,1073741863,1073741864,1073741861,1073741862,1073741863,1073741864,1073741865,1073741866,1073741867,1073741868,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,17,18,19,20,1073741861,1073741862,1073741863,1073741864,1073741865,1073741866,1073741867,1073741868,109,109,109,109,109,109,109,109,109,109,109,109,193,194,195,196,109,109,109,109,109,109,109,109,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741929,1073741930,1073741931,1073741932,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741925,1073741926,1073741927,1073741928,1073741861,1073741862,1073741863,1073741864,1073741861,1073741862,1073741863,1073741864,1073741865,1073741866,1073741867,1073741868,1073741861,1073741862,1073741863,1073741864, +1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741897,1073741898,1073741899,1073741900,1073741829,1073741830,1073741831,1073741832,1073741829,1073741830,1073741831,1073741832,1073741833,1073741834,1073741835,1073741836,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,1073741829,1073741830,1073741831,1073741832,1073741829,1073741830,1073741831,1073741832,1073741833,1073741834,1073741835,1073741836,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,49,50,51,52,1073741829,1073741830,1073741831,1073741832,1073741833,1073741834,1073741835,1073741836,53,54,55,56,53,54,55,56,53,54,77,77,225,226,227,228,77,77,55,56,53,54,55,56,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741897,1073741898,1073741899,1073741900,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741893,1073741894,1073741895,1073741896,1073741829,1073741830,1073741831,1073741832,1073741829,1073741830,1073741831,1073741832,1073741833,1073741834,1073741835,1073741836,1073741829,1073741830,1073741831,1073741832, +1073741861,1073741862,1073741863,1073741864,1073741861,1073741862,1073741863,1073741864,1073741865,1073741866,1073741867,1073741868,109,109,109,109,109,109,109,109,109,109,109,109,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,109,109,109,109,109,109,109,109,109,109,109,109,109,1073741862,1073741863,1073741864,1073741861,1073741862,1073741863,1073741864,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,81,82,83,84,109,109,109,109,109,109,109,109,85,86,87,88,85,86,87,88,85,86,77,77,129,130,131,132,77,77,87,88,85,86,87,88,1073741861,1073741862,1073741863,1073741864,1073741869,1073741870,1073741871,1073741872,1073741929,1073741930,1073741931,1073741932,1073741861,1073741862,1073741863,1073741864,1073741861,1073741862,1073741863,1073741864,1073741861,1073741862,1073741863,1073741864,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +1073741829,1073741830,1073741831,1073741832,1073741829,1073741830,1073741831,1073741832,1073741833,1073741834,1073741835,1073741836,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,1073741829,1073741830,1073741831,1073741832,1073741829,1073741830,1073741831,1073741832,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,113,114,115,116,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,161,162,163,164,77,77,119,120,117,118,119,120,1073741829,1073741830,1073741831,1073741832,1073741837,1073741838,1073741839,1073741840,1073741897,1073741898,1073741899,1073741900,1073741829,1073741830,1073741831,1073741832,1073741829,1073741830,1073741831,1073741832,1073741829,1073741830,1073741831,1073741832,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120, +109,109,109,109,109,109,109,109,109,109,109,109,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,109,109,109,109,109,109,109,109,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,109,109,109,109,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,193,194,195,196,77,77,23,24,21,22,23,24,17,18,19,20,1073741925,1073741926,1073741927,1073741928,1073741929,1073741930,1073741931,1073741932,17,18,19,20,109,109,109,109,109,109,109,109,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24, +53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,225,226,227,228,77,77,55,56,53,54,55,56,49,50,51,52,1073741893,1073741894,1073741895,1073741896,1073741897,1073741898,1073741899,1073741900,49,50,51,52,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56, +85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,129,130,131,132,77,77,87,88,85,86,87,88,81,82,83,84,1073741861,1073741862,1073741863,1073741864,1073741865,1073741866,1073741867,1073741868,81,82,83,84,85,86,87,88,85,86,87,88,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88, +117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,161,162,163,164,77,77,119,120,117,118,119,120,113,114,115,116,1073741829,1073741830,1073741831,1073741832,1073741833,1073741834,1073741835,1073741836,113,114,115,116,117,118,119,120,117,118,119,120,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120, +21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,193,194,195,196,77,77,23,24,21,22,23,24,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,21,22,23,24,21,22,23,24,21,22,23,24,21,22,23,24,17,18,19,20,17,18,19,20, +53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,225,226,227,228,77,77,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,49,50,51,52,49,50,51,52, +85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4,85,86,77,77,129,130,131,132,77,77,87,88,85,86,87,88,85,86,87,88,85,86,87,88,85,86,87,88,85,86,87,88,85,86,87,88,85,86,87,88,85,86,87,88,85,86,87,88,81,82,83,84,81,82,83,84, +117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,33,34,35,36,33,34,35,36,33,34,35,36,33,34,35,36,117,118,77,77,161,162,163,164,77,77,119,120,117,118,119,120,117,118,119,120,117,118,119,120,117,118,119,120,117,118,119,120,117,118,119,120,117,118,119,120,117,118,119,120,117,118,119,120,113,114,115,116,113,114,115,116, +21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,21,22,77,77,193,194,195,196,77,77,23,24,21,22,23,24,21,22,23,24,21,22,23,24,21,22,23,24,21,22,23,24,21,22,23,24,21,22,23,24,21,22,23,24,21,22,23,24,109,109,109,109,109,109,109,109, +53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,225,226,227,228,77,77,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56, +85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,5,6,7,8,5,6,7,8,9,10,11,12,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,85,86,77,77,129,130,131,132,9,10,11,12,5,6,7,8,5,6,7,8,85,86,87,88,85,86,87,88,85,86,87,88,85,86,87,88,85,86,87,88,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88, +117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,37,38,39,40,37,38,39,40,41,42,43,44,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,117,118,77,77,161,162,163,164,41,42,43,44,37,38,39,40,37,38,39,40,117,118,119,120,117,118,119,120,117,118,119,120,117,118,119,120,117,118,119,120,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120, +21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,17,18,19,20,9,10,11,12,69,70,71,72,69,70,71,72,73,74,75,76,5,6,7,8,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,21,22,77,77,193,194,195,196,73,74,75,76,69,70,71,72,69,70,71,72,21,22,23,24,21,22,23,24,21,22,23,24,21,22,23,24,21,22,23,24,21,22,23,24,21,22,23,24,21,22,77,77,21,22,23,24, +53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,49,50,51,52,41,42,43,44,101,102,103,104,101,102,103,104,105,106,107,108,37,38,39,40,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,53,54,77,77,225,226,227,228,105,106,107,108,101,102,103,104,101,102,103,104,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,55,56,53,54,77,77,53,54,55,56, +5,6,7,8,5,6,7,8,9,10,11,12,5,6,7,8,5,6,7,8,9,10,11,12,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88,81,82,83,84,73,74,75,76,13,14,15,16,13,14,15,16,73,74,75,76,69,70,71,72,5,6,7,8,9,10,11,12,5,6,7,8,85,86,87,88,85,86,77,77,85,86,87,88,85,86,87,88,9,10,11,12,5,6,7,8,5,6,7,8,9,10,11,12,5,6,7,8,73,74,75,76,13,14,15,16,13,14,15,16,5,6,7,8,9,10,11,12,5,6,7,8,5,6,7,8,85,86,87,88,85,86,87,88,85,86,87,88,85,86,77,77,85,86,87,88, +37,38,39,40,37,38,39,40,41,42,43,44,37,38,39,40,37,38,39,40,41,42,43,44,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120,113,114,115,116,105,106,107,108,45,46,47,48,45,46,47,48,105,106,107,108,101,102,103,104,37,38,39,40,41,42,43,44,37,38,39,40,117,118,119,120,117,118,77,77,117,118,119,120,117,118,119,120,41,42,43,44,37,38,39,40,37,38,39,40,41,42,43,44,37,38,39,40,105,106,107,108,45,46,47,48,45,46,47,48,37,38,39,40,41,42,43,44,37,38,39,40,37,38,39,40,117,118,119,120,117,118,119,120,117,118,119,120,117,118,77,77,117,118,119,120, +69,70,71,72,69,70,71,72,73,74,75,76,69,70,71,72,69,70,71,72,73,74,75,76,5,6,7,8,5,6,7,8,9,10,11,12,5,6,7,8,5,6,7,8,73,74,75,76,69,70,71,72,69,70,71,72,73,74,75,76,13,14,15,16,69,70,71,72,73,74,75,76,69,70,71,72,21,22,23,24,21,22,77,77,21,22,23,24,21,22,23,24,73,74,75,76,69,70,71,72,69,70,71,72,73,74,75,76,69,70,71,72,73,74,75,76,69,70,71,72,69,70,71,72,69,70,71,72,73,74,75,76,69,70,71,72,69,70,71,72,21,22,23,24,21,22,23,24,21,22,23,24,9,10,11,12,5,6,7,8, +101,102,103,104,101,102,103,104,105,106,107,108,101,102,103,104,101,102,103,104,105,106,107,108,37,38,39,40,37,38,39,40,41,42,43,44,37,38,39,40,37,38,39,40,105,106,107,108,101,102,103,104,101,102,103,104,105,106,107,108,45,46,47,48,101,102,103,104,105,106,107,108,101,102,103,104,53,54,55,56,53,54,77,77,53,54,55,56,53,54,55,56,105,106,107,108,101,102,103,104,101,102,103,104,105,106,107,108,101,102,103,104,105,106,107,108,101,102,103,104,101,102,103,104,101,102,103,104,105,106,107,108,101,102,103,104,101,102,103,104,53,54,55,56,53,54,55,56,53,54,55,56,41,42,43,44,37,38,39,40, +13,14,15,16,13,14,15,16,73,74,75,76,13,14,15,16,13,14,15,16,73,74,75,76,69,70,71,72,69,70,71,72,73,74,75,76,69,70,71,72,69,70,71,72,73,74,75,76,13,14,15,16,13,14,15,16,73,74,75,76,69,70,71,72,13,14,15,16,73,74,75,76,13,14,15,16,5,6,7,8,9,10,11,12,5,6,7,8,5,6,7,8,73,74,75,76,13,14,15,16,13,14,15,16,73,74,75,76,13,14,15,16,73,74,75,76,13,14,15,16,13,14,15,16,13,14,15,16,73,74,75,76,13,14,15,16,13,14,15,16,5,6,7,8,5,6,7,8,5,6,7,8,73,74,75,76,69,70,71,72, +45,46,47,48,45,46,47,48,105,106,107,108,45,46,47,48,45,46,47,48,105,106,107,108,101,102,103,104,101,102,103,104,105,106,107,108,101,102,103,104,101,102,103,104,105,106,107,108,45,46,47,48,45,46,47,48,105,106,107,108,101,102,103,104,45,46,47,48,105,106,107,108,45,46,47,48,37,38,39,40,41,42,43,44,37,38,39,40,37,38,39,40,105,106,107,108,45,46,47,48,45,46,47,48,105,106,107,108,45,46,47,48,105,106,107,108,45,46,47,48,45,46,47,48,45,46,47,48,105,106,107,108,45,46,47,48,45,46,47,48,37,38,39,40,37,38,39,40,37,38,39,40,105,106,107,108,101,102,103,104, +69,70,71,72,69,70,71,72,73,74,75,76,69,70,71,72,69,70,71,72,73,74,75,76,13,14,15,16,13,14,15,16,73,74,75,76,13,14,15,16,13,14,15,16,73,74,75,76,69,70,71,72,69,70,71,72,73,74,75,76,13,14,15,16,69,70,71,72,73,74,75,76,69,70,71,72,69,70,71,72,73,74,75,76,69,70,71,72,69,70,71,72,73,74,75,76,69,70,71,72,69,70,71,72,73,74,75,76,69,70,71,72,73,74,75,76,69,70,71,72,69,70,71,72,69,70,71,72,73,74,75,76,69,70,71,72,69,70,71,72,69,70,71,72,69,70,71,72,69,70,71,72,73,74,75,76,13,14,15,16, +101,102,103,104,101,102,103,104,105,106,107,108,101,102,103,104,101,102,103,104,105,106,107,108,45,46,47,48,45,46,47,48,105,106,107,108,45,46,47,48,45,46,47,48,105,106,107,108,101,102,103,104,101,102,103,104,105,106,107,108,45,46,47,48,101,102,103,104,105,106,107,108,101,102,103,104,101,102,103,104,105,106,107,108,101,102,103,104,101,102,103,104,105,106,107,108,101,102,103,104,101,102,103,104,105,106,107,108,101,102,103,104,105,106,107,108,101,102,103,104,101,102,103,104,101,102,103,104,105,106,107,108,101,102,103,104,101,102,103,104,101,102,103,104,101,102,103,104,101,102,103,104,105,106,107,108,45,46,47,48 + + + diff --git a/demos/kfest-2022/demo-3/assets/tilesets/tile-sheet.png b/demos/kfest-2022/demo-3/assets/tilesets/tile-sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..dcab087d0ce182af366a26d0cad5cf110587d024 GIT binary patch literal 2603 zcmc&$`#;nBAOC!2Tbt`l7!jLGp|D(X>9V;T+ejmmOzxp{nadH8Gs_7jcZxWMqKjL( zM{J5w*p3`Js3t@wid-7Ge0R=2@qIrYulM`)dOlw7*Yo*$yxu>&Q>e}kGLov200794 zNp`LP0E%6JiI5QQZ$cd`#0MDR>R2hd>RF(LpwNtfF2gNfrkR3|rk&l$Yf zMdbhucx*sGKvh-Mws<8*Y!7rdU}LwtX8;=tCScg}obN$#9+E*i6#)RUo&OrBxR=5d zW4Fk5M7L<~dC$LDW#%Z;i1Xcx8{0q14gHMEgC&A~5OZW)FDtY3kqdzlf8WH;OJ09H zHhlr}Uf`cD#P5C|9F6#pl&*3_<70Zdk2UuTXL{$DT(W>hon}mUi0oEOr|hLn&Km?to;JOA7=NXhZ3@>Z!|RTU5~iwDy6QqG?Y z?g0;#6v#X7m@9~*{|X#zSgYHgPo+EucA_`L)V6xY3y~O#1Tv$DLw)ei1ca=N&H6ygw zJr+J}!R|c-OE2c(0m?jKIbc12Lo1%$eG)($+VO%!yH^68IMCBVG=CbB2h(;w8#T3a zU&Wtz?0`S1!k>~Wk-vQ$PD(f6$kr=zL^L?5YW0LMxAIN%+dZU*y|2K@DroKKy+^&+ z?6>f7bzhAyAFiq}p8JE;$I|RLeuupJU97~RA;^yn6RD?x&F(1QhY>9S7WZS0yOc}& zC-GH&)tJN>hcTCq?+BN|mdX*y+VZa)N4bV*i*>Y^=ZO0 z6N%cb7^%K*%n=OXfyqBjpc}WtJ1!v9Mvwem&GuX@-1Kul{LCUMP-?&B2Z%RV79Y0w zo$oJFfFtm}>(ZQ6qa(BQtPe?FJ0*An3pcCPP^Wy9m!XM|3NL|_k^YODOGmGNg&#Tu z`(@MU3Y=7)b8LAG*zC;If4Z0aE#}>J(3NVs=H^g!rT4YD%|ODN*w!gj@ z40Nf|0Uw(=%x7Xb|{T%jS*zw4h_p-jPD&QE04doK+ z?#K7z``bUAFitnVH+tt89H|O~@cXtl0bJu~sppaMk9=gQM6XeufKLVc< zlqLf?^BbQT_D_t_RFuFb`Xb>-jVEXk+TiD)@;+LjZ!!$lobV|y>o1g@c&=Uk!#erd zHMET6*w4F(5+Yz@L)7+YX_PKhsmzZ(kLH=l^or%t z&DNu*%*D)v-ElH<6B?qKFt4!-&F|VT9b8SESl#U3I(X!n=!WJm#0AtBXq=->YqA+6 zs}-RfnL)GHBSbEG{7pucX+|f{Cq~KBk;=^r7i7nF4&q)rlYMJ&A;~OZM5TftFEJ`N z6#7RQZb6Blej1hQlJI_(6h&cSU|icuh43^Q#7ZY2%%19nik8YKapFLBbf_eKE*}k~&-($PXzU=sSR8+1d~SBF63d37unESFd?l)+qEWZ)e3 zB{0SchU)KI!>ETDC!`*RD(OSkbtc*&L$&Pcb)>A0@u)4suSnQuRieU7D4e|8Pc0JH zG;l!oJV2W94IO4DVjOu6H`=ao7;<1y7RSb3 zU@6%-#LTSBVy%_%5tX~iVm%q1`a~C^phK#b_36qnJyN^wUaJf-Sfbd7u7{upcirxR z8Ej_xMl>m4=CIAR&dI4X))q`keG2j>7iG|5#!?wW&h7b;!;T--Lfjske|3{di@e^q z5TL%Q1HPEU)wU)vJ;~x*kc$bAy)*SqUZA@bbMrM2m{?`7rGvr*^~>(b68XMa>26h; z&5cFO@e(Lp(Ju&)#$pDoE8_pfIL`Lev<5}-%dwtdT{kTG_&Zj!tFY%N%46J?@Jw5T z8%DOg>Q8jsI+}1XOf{pCUI@Q8uT%k^ZS6Ws82!IP_A~H}^%V{J^2|u#*~6{k-x@%+ Lcebmx@n!uFCxfAS literal 0 HcmV?d00001 diff --git a/demos/kfest-2022/demo-3/build-image.bat b/demos/kfest-2022/demo-3/build-image.bat new file mode 100644 index 0000000..45da371 --- /dev/null +++ b/demos/kfest-2022/demo-3/build-image.bat @@ -0,0 +1,17 @@ +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/KFestDemo03" + +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% .\GTEDemo3 +%CADIUS% ADDFILE %IMAGE% %FOLDER% ..\..\..\src\Tool160 diff --git a/demos/kfest-2022/demo-3/package.json b/demos/kfest-2022/demo-3/package.json new file mode 100644 index 0000000..72ed8d4 --- /dev/null +++ b/demos/kfest-2022/demo-3/package.json @@ -0,0 +1,43 @@ +{ + "name": "kfest-demo-3", + "version": "1.0.0", + "description": "", + "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", + "png2iigs": "../../../tools/png2iigs.js", + "tiled2iigs": "../../../tools/tiled2iigs.js" + }, + "scripts": { + "test": "npm run build && npm run build:image && npm run gsport", + "gsport": "%npm_package_config_gsport%", + "debug": "%npm_package_config_crossrunner% GTETestSprites -Source GTETestSprites_S02_MAINSEG_Output.txt -Debug -CompatibilityLayer", + "build:all": "npm run build:tiles && npm run build:map && npm run build:tool && npm run build:sys16 && npm run build:image", + "build:map": "node %npm_package_config_tiled2iigs% ./assets/tiled/level-1.json --no-gen-tiles --output-dir ./gen", + "build:tiles": "node %npm_package_config_png2iigs% ./assets/tilesets/tile-sheet.png --max-tiles 360 --as-tile-data --verbose > ./gen/App.TileSet.s", + "build:sys16": "%npm_package_config_merlin32% -V %npm_package_config_macros% App.s", + "build": "npm run build:tool && npm run build:sys16", + "build:tool": "%npm_package_config_merlin32% -V %npm_package_config_macros% ../../../src/Master.s", + "build:image": "build-image.bat %npm_package_config_cadius%" + }, + "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": { + "pngjs": "^6.0.0", + "string-builder": "^0.1.8", + "watch": "latest", + "xml2json": "^0.12.0" + } +} diff --git a/tools/tiled2iigs.js b/tools/tiled2iigs.js index 393d43d..3a63e76 100644 --- a/tools/tiled2iigs.js +++ b/tools/tiled2iigs.js @@ -99,16 +99,16 @@ function writeTileAnimations(filename, animations) { // First step is some initialization code that copies the first animated // tile data into the dynamic tile space const initLabel = 'TileAnimInit'; - init.appendLine(`${initLabel} ENT`); + init.appendLine(`${initLabel}`); init.appendLine(); for (const animation of animations) { // Get the first tile of the animation const firstTileId = animation.frames[0].tileId; // Create code to copy it into the dynamic tile index location - init.appendLine(' ldx #' + firstTileId); - init.appendLine(' ldy #' + animation.dynTileId); - init.appendLine(' jsl CopyTileToDyn'); + init.appendLine(' pea ' + firstTileId); + init.appendLine(' pea ' + animation.dynTileId); + init.appendLine(' _GTECopyTileToDynamic'); } // Next, create the scripts to change the tile data based on the configured ticks delays. @@ -123,10 +123,10 @@ function writeTileAnimations(filename, animations) { } const label = `TileAnim_${animation.tileId}`; - init.appendLine(` lda #${label}`); - init.appendLine(` ldx #^${label}`); - init.appendLine(` ldy #${numTicks}`); - init.appendLine(` jsl StartScript`); + init.appendLine(` pea ${numTicks}`); + init.appendLine(` pea ^${label}`); + init.appendLine(` pea ${label}`); + init.appendLine(` _GTEStartScript`); // bit 15 = 1 if the end of a sequence // bit 14 = 0 proceed to next action, 1 jump @@ -175,8 +175,13 @@ function findAnimatedTiles(tileset) { continue; } + console.log(tile); const tileId = parseInt(tile.id, 10); - const frames = tile.animation.frame.map(f => { + let frame = tile.animation.frame; + if (!frame.length) { + frame = [frame]; + } + const frames = frame.map(f => { const millis = parseInt(f.duration, 10); const ticksPerMillis = 60. / 1000.; return { @@ -474,7 +479,7 @@ function convertTileID(tileId, tileset) { // the tile ID if (tileset[tileIndex - 1].animation) { const animation = tileset[tileIndex - 1].animation; - tileId = animation.dynTileId; + tileId = animation.dynTileId * 4; // pre-map the ID -> byte offset control_bits = GTE_DYN_BIT; console.warn('Dyanmic animation tile found!');