Add zelda demo that utilized dirty rectangle updates

This commit is contained in:
Lucas Scharenbroich 2022-02-03 23:46:32 -06:00
parent 8b852485ac
commit 4d7ff46250
15 changed files with 14449 additions and 0 deletions

311
demos/zelda/App.Main.s Normal file
View File

@ -0,0 +1,311 @@
; Test driver to exercise graphics routines.
REL
DSK MAINSEG
use Load.Macs.s
use Locator.Macs.s
use Misc.Macs.s
use EDS.GSOS.MACS.s
use Tool222.Macs.s
use Util.Macs.s
use CORE.MACS.s
use ../../src/GTE.s
use ../../src/Defs.s
mx %00
; Feature flags
NO_INTERRUPTS equ 0 ; turn off for crossrunner debugging
NO_MUSIC equ 1 ; turn music + tool loading off
; Keycodes
LEFT_ARROW equ $08
RIGHT_ARROW equ $15
UP_ARROW equ $0B
DOWN_ARROW equ $0A
; Typical init
phk
plb
jsl EngineStartUp
lda #^MyPalette ; Fill Palette #0 with our colors
ldx #MyPalette
ldy #0
jsl SetPalette
ldx #256
ldy #176
jsl SetScreenMode
; Set up our level data
jsr BG0SetUp
; Initialize the sprite's global position (this is tracked outside of the tile engine)
stz PlayerX
stz PlayerY
stz MapScreenX
stz MapScreenY
; Add a sprite to the engine and save it's sprite ID
SPRITE_ID equ {SPRITE_16X16+1}
OKTOROK equ {SPRITE_16X16+79}
lda #SPRITE_ID ; 16x16 sprite
ldx PlayerX
ldy PlayerY
jsl AddSprite
bcc :sprite_ok
brl Exit ; If we could not allocate a sprite, exit
:sprite_ok
sta PlayerID
; Add 4 octoroks
lda #OKTOROK
ldx #32
ldy #48
jsl AddSprite
lda #OKTOROK
ldx #96
ldy #32
jsl AddSprite
lda #OKTOROK
ldx #56
ldy #96
jsl AddSprite
lda #OKTOROK
ldx #72
ldy #96
jsl AddSprite
; Draw the initial screen
lda #DIRTY_BIT_BG0_REFRESH ; Redraw all of the tiles on the next Render
tsb DirtyBits
jsl Render
; 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
jsl ReadControl
; Check the buttons first
pha
bit #$0100
beq :no_sword
:no_sword
; Enable/disable v-sync
lda 1,s
bit #$0400
beq :no_key_down
and #$007F
cmp #'v'
bne :not_v
lda #$0001
eor vsync
sta vsync
:not_v
:no_key_down
pla
and #$007F ; Ignore the buttons for now
cmp #'q'
bne :not_q
brl Exit
:not_q
cmp #'d'
bne :not_d
inc PlayerX
lda PlayerX
cmp #128-8
bcc *+5
jsr TransitionRight
lda PlayerID
ldx #SPRITE_16X16+5
jsl UpdateSprite
bra :do_render
:not_d
cmp #'a'
bne :not_a
dec PlayerX
bpl *+5
jsr TransitionLeft
lda PlayerID
ldx #SPRITE_16X16+SPRITE_HFLIP+5
jsl UpdateSprite
bra :do_render
:not_a
cmp #'s'
bne :not_s
inc PlayerY
lda PlayerID
ldx #SPRITE_16X16+1
jsl UpdateSprite
bra :do_render
:not_s
cmp #'w'
bne :not_w
dec PlayerY
lda PlayerID
ldx #SPRITE_16X16+9
jsl UpdateSprite
bra :do_render
:not_w
:do_render
lda PlayerID
ldx PlayerX
ldy PlayerY
jsl MoveSprite ; Move the sprite to the current position
; Let's see what it looks like!
lda vsync
beq :no_vsync
:vsyncloop jsl GetVerticalCounter ; 8-bit value
cmp ScreenY1
bcc :vsyncloop
sec
sbc ScreenY1
cmp #8
bcs :vsyncloop
lda #1
jsl SetBorderColor
:no_vsync
jsl RenderDirty
lda vsync
beq :no_vsync2
lda #0
jsl SetBorderColor
:no_vsync2
brl EvtLoop
; Exit code
Exit
jsl EngineShutDown
_QuitGS qtRec
bcs Fatal
Fatal brk $00
TransitionRight
lda MapScreenX ; Only two screens
cmp #1
bcs :done
lda StartX ; Scroll 128 bytes to the right
clc
adc #128
sta TransitionX
:loop lda StartX
cmp TransitionX
bcs :out
clc
adc #4
jsl SetBG0XPos
lda PlayerX
sec
sbc #4
bmi :nosprite
sta PlayerX
lda PlayerID
ldx PlayerX
ldy PlayerY
jsl MoveSprite
:nosprite
jsl Render ; Do full renders since the playfield is scrolling
bra :loop
:out
lda #0 ; Move the player back to the left edge
sta PlayerX
inc MapScreenX ; Move the index to the next screen
:done
rts
TransitionLeft
lda MapScreenX
cmp #0
beq :done
lda StartX ; Scroll 128 bytes to the left
sec
sbc #128
sta TransitionX
:loop lda StartX
cmp TransitionX
beq :out
sec
sbc #4
jsl SetBG0XPos
lda PlayerX
clc
adc #4
cmp #128-8+1
bcs :nosprite
sta PlayerX
lda PlayerID
ldx PlayerX
ldy PlayerY
jsl MoveSprite
:nosprite
jsl Render
bra :loop
:out
; lda #128-8 ; Move the player back to the right edge
; sta PlayerX
dec MapScreenX ; Move the index to the next screen
:done
rts
; Color palette
;MyPalette dw $068F,$0EDA,$0000,$0000,$0BF1,$00A0,$0EEE,$0456,$0FA4,$0F59,$0E30,$01CE,$02E3,$0870,$0F93,$0FD7
MyPalette dw $0FDA,$08C1,$0C41,$0F93,$0777,$0FDA,$00A0,$0000,$0D20,$0FFF,$023E,$01CE,$02E3,$0870,$0F93,$0FD7
MapScreenX ds 2
MapScreenY ds 2
PlayerID ds 2
PlayerX ds 2
PlayerY ds 2
TransitionX ds 2
TransitionY ds 2
oldOneSecondCounter ds 2
frameCount ds 2
qtRec adrl $0000
da $00
vsync dw $8000
PUT gen/App.TileMapBG0.s
ANGLEBNK ENT

37
demos/zelda/App.s Normal file
View File

@ -0,0 +1,37 @@
; IIgs Sprite Testbed
TYP $B3 ; S16 file
DSK GTEZelda
XPL
; Segment #1 -- Main execution block
ASM App.Main.s
DS 0 ; Number of bytes of 0's to add at the end of the Segment
KND #$1100 ; Type and Attributes ($11=Static+Bank Relative,$00=Code)
ALI None ; Boundary Alignment (None)
SNA Main
; Segment #2 -- Core GTE Code
ASM ..\..\src\Core.s
SNA Core
; Segment #3 -- 64KB Tile Memory
ASM gen\App.TileSet.s
DS 0
KND #$1001 ; Type and Attributes ($11=Static+Bank Relative,$01=Data)
SNA Tiles
; Segment #4 -- 64KB Sprite Plane Data
ASM SprData.s
KND #$1001 ; Type and Attributes ($11=Static+Bank Relative,$01=Data)
SNA SPRDATA
; Segment #5 -- 64KB Sprite Mask Data
ASM SprMask.s
KND #$1001 ; Type and Attributes ($11=Static+Bank Relative,$01=Data)
SNA SPRMASK

8
demos/zelda/README.md Normal file
View File

@ -0,0 +1,8 @@
A demo the exercises the dirty update capabilities of GTE to provide very fast updates
for non-scrolling play fields.
Also, the ability to seamless switch between dirty and scrolling updates to perform screen
transitions and the ability to specify a split screen to keep the inventory/status area fixed
at the top and the scrolling play field at the bottom.
The active playfield in zelda is 256x176

2
demos/zelda/SprData.s Normal file
View File

@ -0,0 +1,2 @@
spritedata ENT
ds 65536

2
demos/zelda/SprMask.s Normal file
View File

@ -0,0 +1,2 @@
spritemask ENT
ds 65536

View File

@ -0,0 +1,2 @@
GTETestSprites=Type(B3),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
GTEZelda=Type(B3),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<tileset version="1.5" tiledversion="1.7.2" name="Zelda" tilewidth="8" tileheight="8" tilecount="512" columns="32">
<image source="sprites-256x128.png" trans="ff00ff" width="256" height="128"/>
</tileset>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.5" tiledversion="1.7.2" orientation="orthogonal" renderorder="right-down" width="64" height="44" tilewidth="8" tileheight="8" infinite="0" nextlayerid="2" nextobjectid="1">
<tileset firstgid="1" source="Zelda.tsx"/>
<layer id="1" name="Tile Layer 1" width="64" height="44">
<data encoding="csv">
75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,65,66,129,129,65,66,129,129,65,66,129,129,129,129,65,66,129,129,65,66,129,129,65,66,129,129,65,66,
107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,97,98,129,129,97,98,129,129,97,98,129,129,129,129,97,98,129,129,97,98,129,129,97,98,129,129,97,98,
75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,65,66,129,129,65,66,129,129,65,66,129,129,129,129,65,66,129,129,65,66,129,129,65,66,129,129,65,66,
107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,97,98,129,129,97,98,129,129,97,98,129,129,129,129,97,98,129,129,97,98,129,129,97,98,129,129,97,98,
75,76,77,78,129,129,129,129,129,129,129,129,129,129,129,129,129,129,73,74,77,78,129,129,129,129,129,129,73,74,75,76,75,76,77,78,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,65,66,
107,108,109,110,129,129,129,129,129,129,129,129,129,129,129,129,129,129,105,106,109,110,129,129,129,129,129,129,105,106,107,108,107,108,109,110,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,97,98,
77,78,129,129,129,129,67,68,129,129,67,68,129,129,129,129,129,129,129,129,129,129,129,129,67,68,129,129,129,129,73,74,77,78,129,129,129,129,129,129,65,66,129,129,129,129,129,129,129,129,65,66,129,129,129,129,129,129,65,66,129,129,65,66,
109,110,129,129,129,129,99,100,129,129,99,100,129,129,129,129,129,129,129,129,129,129,129,129,99,100,129,129,129,129,105,106,109,110,129,129,129,129,129,129,97,98,129,129,129,129,129,129,129,129,97,98,129,129,129,129,129,129,97,98,129,129,97,98,
129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,65,66,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,97,98,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
129,129,129,129,129,129,67,68,129,129,67,68,129,129,129,129,129,129,129,129,129,129,129,129,67,68,129,129,129,129,129,129,129,129,129,129,129,129,129,129,65,66,129,129,65,66,129,129,129,129,65,66,129,129,65,66,129,129,65,66,129,129,129,129,
129,129,129,129,129,129,99,100,129,129,99,100,129,129,129,129,129,129,129,129,129,129,129,129,99,100,129,129,129,129,129,129,129,129,129,129,129,129,129,129,97,98,129,129,97,98,129,129,129,129,97,98,129,129,97,98,129,129,97,98,129,129,129,129,
129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,65,66,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,97,98,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
71,72,129,129,129,129,67,68,129,129,67,68,129,129,129,129,129,129,129,129,129,129,129,129,67,68,129,129,129,129,69,70,71,72,129,129,129,129,129,129,65,66,129,129,129,129,129,129,129,129,65,66,129,129,129,129,129,129,65,66,129,129,65,66,
103,104,129,129,129,129,99,100,129,129,99,100,129,129,129,129,129,129,129,129,129,129,129,129,99,100,129,129,129,129,101,102,103,104,129,129,129,129,129,129,97,98,129,129,129,129,129,129,129,129,97,98,129,129,129,129,129,129,97,98,129,129,97,98,
75,76,71,72,129,129,129,129,129,129,129,129,129,129,129,129,129,129,69,70,71,72,129,129,129,129,129,129,69,70,75,76,75,76,71,72,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,65,66,
107,108,103,104,129,129,129,129,129,129,129,129,129,129,129,129,129,129,101,102,103,104,129,129,129,129,129,129,101,102,107,108,107,108,103,104,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,97,98,
75,76,75,76,70,71,70,71,70,71,70,71,70,71,129,129,129,129,75,76,75,76,70,71,70,71,70,71,75,76,75,76,75,76,75,76,65,66,129,129,65,66,129,129,65,66,129,129,129,129,65,66,129,129,65,66,129,129,65,66,129,129,65,66,
107,108,107,108,102,103,102,103,102,103,102,103,102,103,129,129,129,129,107,108,107,108,102,103,102,103,102,103,107,108,107,108,107,108,107,108,97,98,129,129,97,98,129,129,97,98,129,129,129,129,97,98,129,129,97,98,129,129,97,98,129,129,97,98,
75,76,75,76,75,76,75,76,75,76,75,76,75,76,129,129,129,129,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,65,66,129,129,65,66,129,129,65,66,129,129,129,129,65,66,129,129,65,66,129,129,65,66,129,129,65,66,
107,108,107,108,107,108,107,108,107,108,107,108,107,108,129,129,129,129,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,97,98,129,129,97,98,129,129,97,98,129,129,129,129,97,98,129,129,97,98,129,129,97,98,129,129,97,98,
75,76,75,76,75,76,75,76,75,76,75,76,75,76,129,129,129,129,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,65,66,129,129,65,66,129,129,65,66,129,129,129,129,65,66,129,129,65,66,129,129,65,66,129,129,65,66,
107,108,107,108,107,108,107,108,107,108,107,108,107,108,129,129,129,129,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,97,98,129,129,97,98,129,129,97,98,129,129,129,129,97,98,129,129,97,98,129,129,97,98,129,129,97,98,
75,76,75,75,75,76,75,76,130,130,75,76,77,78,129,129,129,129,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,65,66,129,129,65,66,129,129,65,66,129,129,129,129,65,66,129,129,65,66,129,129,65,66,129,129,65,66,
107,108,107,107,107,108,107,108,130,130,107,108,109,110,129,129,129,129,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,97,98,129,129,97,98,129,129,97,98,129,129,129,129,97,98,129,129,97,98,129,129,97,98,129,129,97,98,
75,76,75,76,75,76,77,78,129,129,129,129,129,129,129,129,129,129,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
107,108,107,108,107,108,109,110,129,129,129,129,129,129,129,129,129,129,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
75,76,75,76,77,78,129,129,129,129,129,129,129,129,129,129,129,129,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,77,78,129,129,129,129,129,129,129,129,65,66,129,129,129,129,65,66,129,129,65,66,129,129,65,66,129,129,129,129,
107,108,107,108,109,110,129,129,129,129,129,129,129,129,129,129,129,129,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,109,110,129,129,129,129,129,129,129,129,97,98,129,129,129,129,97,98,129,129,97,98,129,129,97,98,129,129,129,129,
75,76,77,78,129,129,129,129,129,129,129,129,129,129,129,129,129,129,73,74,75,76,75,76,75,76,75,76,75,76,75,76,77,78,129,129,65,66,129,129,65,66,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
107,108,109,110,129,129,129,129,129,129,129,129,129,129,129,129,129,129,105,106,107,108,107,108,107,108,107,108,107,108,107,108,109,110,129,129,97,98,129,129,97,98,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,65,66,129,129,129,129,65,66,129,129,65,66,129,129,65,66,129,129,129,129,
129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,97,98,129,129,129,129,97,98,129,129,97,98,129,129,97,98,129,129,129,129,
70,71,71,72,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,70,71,70,71,71,72,129,129,65,66,129,129,65,66,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
102,103,103,104,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,102,103,102,103,103,104,129,129,97,98,129,129,97,98,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
75,76,75,76,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,75,76,75,76,75,76,71,72,129,129,129,129,129,129,129,129,65,66,129,129,129,129,65,66,129,129,65,66,129,129,65,66,129,129,129,129,
107,108,107,108,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,107,108,107,108,107,108,103,104,129,129,129,129,129,129,129,129,97,98,129,129,129,129,97,98,129,129,97,98,129,129,97,98,129,129,129,129,
75,76,75,76,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,75,76,75,76,75,76,75,76,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
107,108,107,108,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,107,108,107,108,107,108,107,108,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
75,76,75,76,70,71,70,71,70,71,70,71,70,71,70,71,70,71,70,71,70,71,70,71,70,71,70,71,75,76,75,76,75,76,75,76,65,66,65,66,65,66,65,66,65,66,65,66,65,66,65,66,65,66,65,66,65,66,65,66,65,66,65,66,
107,108,107,108,102,103,102,103,102,103,102,103,102,103,102,103,102,103,102,103,102,103,102,103,102,103,102,103,107,108,107,108,107,108,107,108,97,98,97,98,97,98,97,98,97,98,97,98,97,98,97,98,97,98,97,98,97,98,97,98,97,98,97,98,
75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,75,76,65,66,65,66,65,66,65,66,65,66,65,66,65,66,65,66,65,66,65,66,65,66,65,66,65,66,65,66,
107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,97,98,97,98,97,98,97,98,97,98,97,98,97,98,97,98,97,98,97,98,97,98,97,98,97,98,97,98
</data>
</layer>
</map>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,18 @@
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/Zelda"
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% .\GTEZelda
REM Copy in the image assets

View File

@ -0,0 +1,105 @@
; Tiled Map Export
;
; This is a generated file. Do not modify.
BG0SetUp
lda #64
sta TileMapWidth
lda #44
sta TileMapHeight
lda #Tile_Layer_1
sta TileMapPtr
lda #^Tile_Layer_1
sta TileMapPtr+2
rts
Tile_Layer_1
dw $004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042
dw $006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062
dw $004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042
dw $006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062
dw $004b,$004c,$004d,$004e,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0049,$004a,$004d,$004e,$0081,$0081,$0081,$0081,$0081,$0081,$0049,$004a,$004b,$004c,$004b,$004c,$004d,$004e,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0041,$0042
dw $006b,$006c,$006d,$006e,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0069,$006a,$006d,$006e,$0081,$0081,$0081,$0081,$0081,$0081,$0069,$006a,$006b,$006c,$006b,$006c,$006d,$006e,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0061,$0062
dw $004d,$004e,$0081,$0081,$0081,$0081,$0043,$0044,$0081,$0081,$0043,$0044,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0043,$0044,$0081,$0081,$0081,$0081,$0049,$004a,$004d,$004e,$0081,$0081,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042
dw $006d,$006e,$0081,$0081,$0081,$0081,$0063,$0064,$0081,$0081,$0063,$0064,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0063,$0064,$0081,$0081,$0081,$0081,$0069,$006a,$006d,$006e,$0081,$0081,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062
dw $0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081
dw $0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081
dw $0081,$0081,$0081,$0081,$0081,$0081,$0043,$0044,$0081,$0081,$0043,$0044,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0043,$0044,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081
dw $0081,$0081,$0081,$0081,$0081,$0081,$0063,$0064,$0081,$0081,$0063,$0064,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0063,$0064,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081
dw $0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081
dw $0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081
dw $0047,$0048,$0081,$0081,$0081,$0081,$0043,$0044,$0081,$0081,$0043,$0044,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0043,$0044,$0081,$0081,$0081,$0081,$0045,$0046,$0047,$0048,$0081,$0081,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042
dw $0067,$0068,$0081,$0081,$0081,$0081,$0063,$0064,$0081,$0081,$0063,$0064,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0063,$0064,$0081,$0081,$0081,$0081,$0065,$0066,$0067,$0068,$0081,$0081,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062
dw $004b,$004c,$0047,$0048,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0045,$0046,$0047,$0048,$0081,$0081,$0081,$0081,$0081,$0081,$0045,$0046,$004b,$004c,$004b,$004c,$0047,$0048,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0041,$0042
dw $006b,$006c,$0067,$0068,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0065,$0066,$0067,$0068,$0081,$0081,$0081,$0081,$0081,$0081,$0065,$0066,$006b,$006c,$006b,$006c,$0067,$0068,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0061,$0062
dw $004b,$004c,$004b,$004c,$0046,$0047,$0046,$0047,$0046,$0047,$0046,$0047,$0046,$0047,$0081,$0081,$0081,$0081,$004b,$004c,$004b,$004c,$0046,$0047,$0046,$0047,$0046,$0047,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042
dw $006b,$006c,$006b,$006c,$0066,$0067,$0066,$0067,$0066,$0067,$0066,$0067,$0066,$0067,$0081,$0081,$0081,$0081,$006b,$006c,$006b,$006c,$0066,$0067,$0066,$0067,$0066,$0067,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062
dw $004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$0081,$0081,$0081,$0081,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042
dw $006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$0081,$0081,$0081,$0081,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062
dw $004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$0081,$0081,$0081,$0081,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042
dw $006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$0081,$0081,$0081,$0081,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062
dw $004b,$004c,$004b,$004b,$004b,$004c,$004b,$004c,$0082,$0082,$004b,$004c,$004d,$004e,$0081,$0081,$0081,$0081,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042
dw $006b,$006c,$006b,$006b,$006b,$006c,$006b,$006c,$0082,$0082,$006b,$006c,$006d,$006e,$0081,$0081,$0081,$0081,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062
dw $004b,$004c,$004b,$004c,$004b,$004c,$004d,$004e,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081
dw $006b,$006c,$006b,$006c,$006b,$006c,$006d,$006e,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081
dw $004b,$004c,$004b,$004c,$004d,$004e,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004d,$004e,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081
dw $006b,$006c,$006b,$006c,$006d,$006e,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006d,$006e,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081
dw $004b,$004c,$004d,$004e,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0049,$004a,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004d,$004e,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081
dw $006b,$006c,$006d,$006e,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0069,$006a,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006d,$006e,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081
dw $0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081
dw $0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081
dw $0046,$0047,$0047,$0048,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0046,$0047,$0046,$0047,$0047,$0048,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081
dw $0066,$0067,$0067,$0068,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0066,$0067,$0066,$0067,$0067,$0068,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081
dw $004b,$004c,$004b,$004c,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$004b,$004c,$004b,$004c,$004b,$004c,$0047,$0048,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0041,$0042,$0081,$0081,$0081,$0081
dw $006b,$006c,$006b,$006c,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$006b,$006c,$006b,$006c,$006b,$006c,$0067,$0068,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0061,$0062,$0081,$0081,$0081,$0081
dw $004b,$004c,$004b,$004c,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081
dw $006b,$006c,$006b,$006c,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081,$0081
dw $004b,$004c,$004b,$004c,$0046,$0047,$0046,$0047,$0046,$0047,$0046,$0047,$0046,$0047,$0046,$0047,$0046,$0047,$0046,$0047,$0046,$0047,$0046,$0047,$0046,$0047,$0046,$0047,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042
dw $006b,$006c,$006b,$006c,$0066,$0067,$0066,$0067,$0066,$0067,$0066,$0067,$0066,$0067,$0066,$0067,$0066,$0067,$0066,$0067,$0066,$0067,$0066,$0067,$0066,$0067,$0066,$0067,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062
dw $004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$004b,$004c,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042,$0041,$0042
dw $006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$006b,$006c,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062,$0061,$0062

13688
demos/zelda/gen/App.TileSet.s Normal file

File diff suppressed because it is too large Load Diff

150
demos/zelda/package-lock.json generated Normal file
View File

@ -0,0 +1,150 @@
{
"name": "iigs-zelda-demo",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
"dev": true,
"requires": {
"file-uri-to-path": "1.0.0"
}
},
"exec-sh": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz",
"integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==",
"dev": true,
"requires": {
"merge": "^1.2.0"
}
},
"file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"dev": true
},
"hoek": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
"integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==",
"dev": true
},
"isemail": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz",
"integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==",
"dev": true,
"requires": {
"punycode": "2.x.x"
}
},
"joi": {
"version": "13.7.0",
"resolved": "https://registry.npmjs.org/joi/-/joi-13.7.0.tgz",
"integrity": "sha512-xuY5VkHfeOYK3Hdi91ulocfuFopwgbSORmIwzcwHKESQhC7w1kD5jaVSPnqDxS2I8t3RZ9omCKAxNwXN5zG1/Q==",
"dev": true,
"requires": {
"hoek": "5.x.x",
"isemail": "3.x.x",
"topo": "3.x.x"
},
"dependencies": {
"hoek": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.4.tgz",
"integrity": "sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w==",
"dev": true
}
}
},
"merge": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz",
"integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==",
"dev": true
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
"nan": {
"version": "2.15.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz",
"integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==",
"dev": true
},
"node-expat": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/node-expat/-/node-expat-2.4.0.tgz",
"integrity": "sha512-X8Y/Zk/izfNgfayeOeUGqze7KlaOwVJ9SDTjHUMKd0hu0aFTRpLlLCBwmx79cTPiQWD24I1YOafF+U+rTvEMfQ==",
"dev": true,
"requires": {
"bindings": "^1.5.0",
"nan": "^2.13.2"
}
},
"pngjs": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz",
"integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==",
"dev": true
},
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
"string-builder": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/string-builder/-/string-builder-0.1.8.tgz",
"integrity": "sha512-0pUtikmhChLaf+uLqzYTgzTCQc4jAjaWHolxPGq3D77SgSoTqkOlv0RVF3XwDxMR9x/y1WPPwkTNalZCA9DGnQ==",
"dev": true
},
"topo": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz",
"integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==",
"dev": true,
"requires": {
"hoek": "6.x.x"
},
"dependencies": {
"hoek": {
"version": "6.1.3",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz",
"integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==",
"dev": true
}
}
},
"watch": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/watch/-/watch-1.0.2.tgz",
"integrity": "sha1-NApxe952Vyb6CqB9ch4BR6VR3ww=",
"dev": true,
"requires": {
"exec-sh": "^0.2.0",
"minimist": "^1.2.0"
}
},
"xml2json": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/xml2json/-/xml2json-0.12.0.tgz",
"integrity": "sha512-EPJHRWJnJUYbJlzR4pBhZODwWdi2IaYGtDdteJi0JpZ4OD31IplWALuit8r73dJuM4iHZdDVKY1tLqY2UICejg==",
"dev": true,
"requires": {
"hoek": "^4.2.1",
"joi": "^13.1.2",
"node-expat": "^2.3.18"
}
}
}
}

38
demos/zelda/package.json Normal file
View File

@ -0,0 +1,38 @@
{
"name": "iigs-zelda-demo",
"version": "1.0.0",
"description": "A testbed for dirty rectangle rendering",
"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 && build-image.bat %npm_package_config_cadius% && %npm_package_config_gsport%",
"debug": "%npm_package_config_crossrunner% GTEZelda -Source GTEZelda_S02_MAINSEG_Output.txt -Debug -CompatibilityLayer",
"build": "%npm_package_config_merlin32% -V %npm_package_config_macros% App.s",
"build:map": "node %npm_package_config_tiled2iigs% ./assets/overworld.json --no-gen-tiles --output-dir ./gen",
"build:tiles": "node %npm_package_config_png2iigs% ./assets/sprites-256x128.png --max-tiles 256 --as-tile-data --transparent-color FF00FF > ./gen/App.TileSet.s"
},
"repository": {
"type": "git",
"url": "git+https://github.com/lscharen/iigs-game-engine.git"
},
"author": "Lucas Scharenbroich",
"license": "Apache-2.0",
"bugs": {
"url": "https://github.com/lscharen/iigs-game-engine/issues"
},
"homepage": "https://github.com/lscharen/iigs-game-engine#readme",
"devDependencies": {
"pngjs": "^6.0.0",
"string-builder": "^0.1.8",
"watch": "latest",
"xml2json": "^0.12.0"
}
}