More demos

This commit is contained in:
Lucas Scharenbroich 2022-07-13 15:07:02 -05:00
parent d2b91cfde6
commit 14238166cd
17 changed files with 1046 additions and 10 deletions

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<tileset version="1.5" tiledversion="1.7.2" name="App.TileSet" tilewidth="8" tileheight="8" tilecount="512" columns="32">
<transformations hflip="1" vflip="1" rotate="0" preferuntransformed="0"/>
<image source="../tilesets/smb-256-128-4bpp.png" trans="ff00ff" width="256" height="128"/>
<tile id="136">
<animation>
<frame tileid="136" duration="256"/>
<frame tileid="138" duration="256"/>
<frame tileid="140" duration="256"/>
<frame tileid="142" duration="256"/>
</animation>
</tile>
<tile id="137">
<animation>
<frame tileid="137" duration="256"/>
<frame tileid="139" duration="256"/>
<frame tileid="141" duration="256"/>
<frame tileid="143" duration="256"/>
</animation>
</tile>
<tile id="168">
<animation>
<frame tileid="168" duration="256"/>
<frame tileid="170" duration="256"/>
<frame tileid="172" duration="256"/>
<frame tileid="174" duration="256"/>
</animation>
</tile>
<tile id="169">
<animation>
<frame tileid="169" duration="256"/>
<frame tileid="171" duration="256"/>
<frame tileid="173" duration="256"/>
<frame tileid="175" duration="256"/>
</animation>
</tile>
</tileset>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.5" tiledversion="1.7.2" orientation="orthogonal" renderorder="right-down" width="416" height="30" tilewidth="8" tileheight="8" infinite="0" nextlayerid="4" nextobjectid="2">
<editorsettings>
<export target="world_1-1.json" format="json"/>
</editorsettings>
<tileset firstgid="1" source="Overworld.tsx"/>
<layer id="1" name="App.TileMapBG0" width="416" height="30">
<data encoding="csv">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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
</data>
</layer>
</map>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -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/KFestDemo02"
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% .\GTEDemo2
%CADIUS% ADDFILE %IMAGE% %FOLDER% ..\..\..\src\Tool160

View File

@ -0,0 +1,44 @@
{
"name": "kfest-demo-2",
"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/world_1-1.json --empty-tile 33 --no-gen-tiles --output-dir ./gen",
"build:map:masked": "node %npm_package_config_tiled2iigs% ./assets/tiled/world_1-1.json --force-masked --empty-tile 33 --no-gen-tiles --output-dir ./gen",
"build:tiles": "node %npm_package_config_png2iigs% ./assets/tilesets/smb-256-128-4bpp.png --max-tiles 360 --as-tile-data --transparent-color FF00FF --background-color 6B8CFF --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"
}
}

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<tileset version="1.5" tiledversion="1.7.2" name="MetalStore" tilewidth="8" tileheight="8" tilecount="512" columns="32">
<image source="../tilesets/tile-sheet.png" trans="ff00ff" width="256" height="128"/>
<tile id="128">
<animation>
<frame tileid="128" duration="256"/>
</animation>
</tile>
<tile id="129">
<animation>
<frame tileid="129" duration="256"/>
</animation>
</tile>
<tile id="130">
<animation>
<frame tileid="130" duration="256"/>
</animation>
</tile>
<tile id="131">
<animation>
<frame tileid="131" duration="256"/>
</animation>
</tile>
<tile id="160">
<animation>
<frame tileid="160" duration="256"/>
</animation>
</tile>
<tile id="161">
<animation>
<frame tileid="161" duration="256"/>
</animation>
</tile>
<tile id="162">
<animation>
<frame tileid="162" duration="256"/>
</animation>
</tile>
<tile id="163">
<animation>
<frame tileid="163" duration="256"/>
</animation>
</tile>
<tile id="192">
<animation>
<frame tileid="192" duration="256"/>
</animation>
</tile>
<tile id="193">
<animation>
<frame tileid="193" duration="256"/>
</animation>
</tile>
<tile id="194">
<animation>
<frame tileid="194" duration="256"/>
</animation>
</tile>
<tile id="195">
<animation>
<frame tileid="195" duration="256"/>
</animation>
</tile>
<tile id="224">
<animation>
<frame tileid="224" duration="256"/>
</animation>
</tile>
<tile id="225">
<animation>
<frame tileid="225" duration="256"/>
</animation>
</tile>
<tile id="226">
<animation>
<frame tileid="226" duration="256"/>
</animation>
</tile>
<tile id="227">
<animation>
<frame tileid="227" duration="256"/>
</animation>
</tile>
</tileset>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.5" tiledversion="1.7.2" orientation="orthogonal" renderorder="right-down" width="160" height="30" tilewidth="8" tileheight="8" infinite="0" nextlayerid="2" nextobjectid="1">
<editorsettings>
<export target="level-1.json" format="json"/>
</editorsettings>
<tileset firstgid="1" source="MetalStore.tsx"/>
<layer id="1" name="App.TileMapBG0" width="160" height="30">
<data encoding="csv">
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
</data>
</layer>
</map>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -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

View File

@ -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"
}
}

View File

@ -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!');