From 68a66688f9ca98a48ca0aa1e95a12f166a813eed Mon Sep 17 00:00:00 2001 From: Joerg Deckert Date: Sun, 4 May 2014 18:24:57 +0200 Subject: [PATCH] added boing demo --- README.md | 14 + make.sh | 8 + source/boing/boing-bel-background.spin | Bin 0 -> 15300 bytes source/boing/boing-bel-corecon.spin | 1 + source/boing/boing-bel-driver.spin | Bin 0 -> 55288 bytes source/boing/boing-bel-feeder.spin | 762 +++++++++++++++++++++++++ source/boing/boing-bel-foreground.spin | 505 ++++++++++++++++ source/boing/boing-bel.spin | Bin 0 -> 19618 bytes source/boing/boing-reg.spin | Bin 0 -> 17532 bytes source/boing/boing.sid | Bin 0 -> 289000 bytes source/boing/boing.txt | 20 + 11 files changed, 1310 insertions(+) create mode 100644 source/boing/boing-bel-background.spin create mode 100644 source/boing/boing-bel-corecon.spin create mode 100644 source/boing/boing-bel-driver.spin create mode 100644 source/boing/boing-bel-feeder.spin create mode 100644 source/boing/boing-bel-foreground.spin create mode 100644 source/boing/boing-bel.spin create mode 100644 source/boing/boing-reg.spin create mode 100644 source/boing/boing.sid create mode 100644 source/boing/boing.txt diff --git a/README.md b/README.md index 63a0d98..05d275f 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,20 @@ Vorgang, wird der Screen beim nächsten Bildwechsel gelöscht. Ein wenig erinner dieses Prinzip an die Vectrex, wo ja der gleiche Effekt auftritt. +DEMO/BOING +---------- + +Eine Icone der Retrokultur auf dem Hive als Musikplayer! +Basis ist der geniale Grafikcode von kuroneko. + +Graphics-Code: kuroneko +SIDcog: Ahle2 +Hive-Code: drohne235 + +Installation: Dateien in ein Verzeichnis kopieren, eigene Musikdateien im +DMP-Format dazu kopieren und starten! + + BOULDER DASH ------------ Das legendre Game auf dem Hive mit einem tollen Remix des originalen Titelsongs diff --git a/make.sh b/make.sh index a24f126..8c440fc 100755 --- a/make.sh +++ b/make.sh @@ -40,6 +40,14 @@ cp -r sounds/* ${sdsnd} ${BSTC} -L ${libpath} ${D} -b -O a source/3dmulti/3dmulti.spin mv 3dmulti.binary "${sdtbox}/demo/3dmulti.bel" +${BSTC} -L ${libpath} ${D} -b -O a source/boing/boing-reg.spin +mv boing-reg.binary "${sdtbox}/demo/boing.bin" +${BSTC} -L ${libpath} ${D} -b -O a source/boing/boing-bel.spin +mv boing-bel.binary "${sdtbox}/demo/boing.bel" +${BSTC} -L ${libpath} ${D} -D __ADM_FAT -D __ADM_SID -b -O a ../TriOS/flash/administra/admflash.spin +mv admflash.binary "${sdtbox}/demo/boing.adm" +cp source/boing//boing.sid "${sdtbox}/demo/" + ${BSTC} -L ${libpath} ${D} -D __TV_NTSC -b -O a source/boulder/bellatrix/bd_tv.spin mv bd_tv.binary "${sdtbox}/boulder/bd_ntsc.bel" ${BSTC} -L ${libpath} ${D} -D __TV_PAL -b -O a source/boulder/bellatrix/bd_tv.spin diff --git a/source/boing/boing-bel-background.spin b/source/boing/boing-bel-background.spin new file mode 100644 index 0000000000000000000000000000000000000000..c0db97ddf037891681815d4e5d6cd39fcef69c32 GIT binary patch literal 15300 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 literal 0 HcmV?d00001 diff --git a/source/boing/boing-bel-corecon.spin b/source/boing/boing-bel-corecon.spin new file mode 100644 index 0000000..572958d --- /dev/null +++ b/source/boing/boing-bel-corecon.spin @@ -0,0 +1 @@ +'' '' prerequisites, dependencies & Co '' '' Author: Marko Lukat '' Last modified: 2011/10/22 '' Version: 0.9 '' CON _clkmode = XTAL1|PLL16X _xinfreq = 5_000_000 CON ID_0 = $30B3309C ID_1 = $9ED2732B ID_2 = $38343032 ' cog binary magic number (2048) OVERLAY = %00000000_00000001 ' cog binary is an overlay MAPPING = %00000000_00000010 ' translation table is present PUB null '' This is not a top level object. PUB launch(ID, code, data) '' PASM quick launch using a specific or the next available ID. '' '' parameters '' ID: cog ID '' 0..7: coginit, otherwise cognew (may fail) '' code: address of code fragment (4n) '' data: cognew/coginit parameter (4n) '' '' result '' == 0: [ABORT] thread creation failed (cognew only) '' <> 0: thread/cog ID + 1 ifnot (ID >> 3) coginit(ID++, code, data) elseifnot ID := cognew(code, data) + 1 abort return ID DAT \ No newline at end of file diff --git a/source/boing/boing-bel-driver.spin b/source/boing/boing-bel-driver.spin new file mode 100644 index 0000000000000000000000000000000000000000..9046b166a796d705ae97f67c04cb02369e188bf7 GIT binary patch literal 55288 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 +'' +'' Author: Marko Lukat +'' Last modified: 2013/01/03 +'' Version: 0.6 +'' +'' 20121225: adjusted palette (brighter) +'' 20121226: 256 colour setup (RRGGBBgr) +'' 20130103: minor tweak to palette table +'' +OBJ + system: "boing-bel-corecon" + +VAR + long guard_before, buffer[BSIZE/4], guard_after + byte image[BSIZE*BSIZE] + + long GD_srcp, GD_mask, GD_stack[32] + +PUB null +'' This is not a top level object. + +PUB init(ID, mailbox) + + long[mailbox][-3] := @image{0} >< 32 | @buffer{0} + return system.launch(ID, @entry, mailbox) + +PUB uncompress(wait{boolean}) + + ifnot wait + if cognew(GD_uncompress(256, @ball), @GD_stack{0}) +1 + return + + GD_uncompress(256, @ball) + +PRI GD_uncompress(offs, srcp) | b_off, b_len, minlen, offset + + GD_srcp := srcp + GD_mask := $01010101 + + b_off := GD_getn(4) + b_len := GD_getn(4) + minlen := GD_getn(2) + + repeat GD_getn(16) + ifnot GD_get1 + image[GD_translate(offs++)] := !GD_getn(8) + next + offset := offs - GD_getn(b_off) - 1 + repeat GD_getn(b_len) + minlen + image[GD_translate(offs++)] := image[GD_translate(offset++)] + +PRI GD_getn(n) : r + + repeat n + r := r << 1 | GD_get1 + +PRI GD_get1 : r + + if byte[GD_srcp] & GD_mask + r := 1 + + if (GD_mask <-= 1) == $01010101 + GD_srcp++ + +PRI GD_translate(offs) : r + + if offs => constant(256*(5+1)) + offs += 256 + if offs => constant(256*(40+2)) + offs += 256 + + r := offs.byte[1] + return (r / 7)*constant(16*112) + (r // 7) << 4 + offs & 15 + (offs & $F0)*7 + +DAT org 0 ' image feeder + +entry jmpret $, #setup ' once + + rdlong indx, blnk ' | + cmpsub indx, scry wz ' | + if_ne jmp #$-2 ' waiting for last line to be fetched + +' The foreground renderer starts reading the colour buffer after 26 sync lines +' and 161+5 hub windows. We have to be done before that happens. Using the assumed +' hubop (161 hub windows) as reference we simply go back by 112*2+4 hub windows. + + mov cnt, cnt + add cnt, $+1 + long 13{18} + 14 + 132*16*26 + 16*(161 - 2) - 228*16 + +loop waitcnt cnt, one ' initial sync point +' cogid $ nr ' assumed hubop + + call #transfer ' palette translation + + add indx, #1 ' line done, advance + cmpsub indx, scry wz ' optionally wrap line index + if_nz jmp #loop + +' per frame updates (during the first frame mask is off-screen) + + rdlong temp, blnk ' | + cmp temp, scry wz ' | + if_ne jmp #$-2 ' wait for ?/scry transition + + rdword msky, crdy ' | + shl msky, #16 ' | + sar msky, #16 ' update and sign-extend mask coordinate + + maxs msky, scry ' reasonable limit (off-screen) + mov mskc, msky ' | + add mskc, #BSIZE -1 ' bounding box setup + +one long 132*16*2 ' skip two scan lines +two long 132*16*28 ' skip all sync lines + + call #update ' update palette + + add cnt, two + jmp #loop + +' support code + +transfer cmps indx, msky wc ' | + if_nc cmps mskc, indx wc ' | + if_c jmp transfer_ret ' vertical bounds check + + rdlong addr, feed ' crs/dst + mov arg0, addr + rev arg0, #{32-}0 ' tsd/src + + mov temp, indx ' + sub temp, msky ' active row + + mov arg1, temp + shl arg1, #3 ' *8 + sub arg1, temp ' *7 + shl arg1, #4 ' *112 + + add arg0, arg1 ' apply offset + + mov ecnt, #BSIZE + + rdbyte phsb, arg0 + movd $+2, phsb + add arg0, #1 + wrbyte phsb, addr + add addr, #1 + djnz ecnt, #$-5 ' translate index to colour + +transfer_ret ret + +update mov arg0, #32*7 ' slot 7 + + call #cycle ' | + cmpsub arg0, #32*1 wz ' | + if_nz jmp #$-2 ' for all slots except 0 + +update_ret ret + +cycle mov arg1, arg0 ' | + add arg1, #palette ' apply base + + movd :cy2, arg1 ' head + add arg1, #30 ' | + movs :cy1, arg1 ' | + add arg1, #1 ' | + movd :cy1, arg1 ' body + movs :cy0, arg1 ' tail + + mov ecnt, #32-1 + +:cy0 mov temp, 1-1 ' preserve last entry +:cy1 mov 1-1, 0-0 ' long rotate + sub $-1, d1s1 + djnz ecnt, #:cy1 + +:cy2 mov 0-0, temp ' close rotate +cycle_ret ret + +' initialised data and/or presets + +feed long -12 ' | +crdy long -6 ' | + ' quick access relative to par +blnk long -4 ' | +base long NEGX ' | + +d1s1 long |< 9 | 1 ' dst/src +/- 1 + + long 0[$ & 1] +palette long $00[32] ' unused/transparent + long $FF[16], $C1[16] ' 1: $F0 - %111_1 + long $FF[16], $C1[16] ' 2: $E0 %111_0 + long $FC[16], $C0[16] ' 3: $D0 %110_1 + long $FC[16], $C0[16] ' 4: $C0 %110_0 + long $AB[16], $81[16] ' 5: $B0 %101_1 + long $AB[16], $81[16] ' 6: $A0 %101_0 + long $A8[16], $80[16] ' 7: $90 - %100_1 + +' Stuff below is re-purposed for temporary storage. + +setup add crdy, par ' mask coordinate (%%) + add feed, par ' mask buffer location + + add base, par ' scanline buffer + add blnk, base wc ' frame indicator + + rdword indx, blnk wz ' (%%) + if_nz mov scry, indx wc ' (%%) + if_c_or_nz jmp #$-2 ' auto-detect res_y + +' The loop is only left once a non-zero value has been written to scry +' and indx transitions to zero afterwards. + + mov msky, scry ' move off-screen + + movi ctrb, #%0_11111_000 ' LOGIC always (relocation support) + mov frqb, #palette >> 1 ' | + + jmp %%0 ' return + + fit + +' uninitialised data and/or temporaries + + org setup + +scry res 1 ' must be 1st..4th (%%) +indx res 1 ' | + +addr res 1 ' scanline reference +ecnt res 1 ' element count + +mskc res 1 ' upper limit (inclusive) +mskx res 1 ' mask coordinates +msky res 1 ' signed 16bit + +arg0 res 1 +arg1 res 1 + +temp res 1 + +tail fit + +CON + zero = $1F0 ' par (dst only) + + BSIZE = 112 ' mask width/height (4n) + +DAT + +ball byte $c9, $a1, $dc, $f9, $0f, $e0, $41, $3c, $88, $07, $f1, $20, $1e, $c4, $83, $78 + byte $10, $0f, $e2, $41, $3c, $88, $07, $71, $ff, $06, $ed, $85, $f2, $20, $68, $d8 + byte $be, $5d, $5b, $c1, $df, $bf, $d1, $70, $60, $c7, $94, $8d, $e0, $6f, $d9, $bc + byte $59, $d3, $26, $4d, $18, $0b, $be, $d6, $2c, $99, $37, $63, $ca, $a4, $71, $63 + byte $46, $82, $8f, $15, $8b, $e6, $82, $83, $89, $e0, $68, $38, $78, $5b, $b1, $10 + byte $9c, $8d, $1a, $31, $6c, $28, $78, $da, $b4, $1c, $dc, $0d, $19, $0c, $1e, $36 + byte $82, $7b, $b8, $30, $68, $c0, $bf, $f5, $e0, $9a, $14, $82, $93, $fd, $6a, $1f + byte $c4, $83, $b8, $1d, $9b, $d6, $ad, $5a, $0e, $b6, $06, $82, $a1, $35, $2b, $96 + byte $2c, $5a, $08, $5e, $86, $ec, $d9, $0e, $8b, $c1, $ca, $9c, $d9, $e0, $61, $d0 + byte $6e, $b0, $ab, $11, $66, $4c, $07, $eb, $28, $61, $39, $4a, $98, $0f, $07, $c1 + byte $c1, $94, $1d, $5b, $36, $ac, $25, $8a, $38, $18, $ac, $5b, $40, $1c, $b2, $6c + byte $c9, $42, $38, $09, $0e, $c6, $c3, $41, $e2, $0a, $ee, $c6, $8c, $96, $6a, $7b + byte $76, $e3, $62, $b8, $0c, $ee, $76, $6c, $db, $b2, $69, $c3, $7a, $70, $30, $d2 + byte $22, $0c, $84, $03, $3b, $c1, $25, $6e, $5a, $69, $11, $c1, $3d, $38, $58, $b5 + byte $62, $d9, $80, $fd, $e0, $19, $8d, $83, $b3, $a5, $e0, $6e, $2d, $5a, $5a, $d6 + byte $a4, $29, $dc, $59, $0f, $4e, $9a, $4b, $87, $ad, $8e, $59, $1c, $22, $45, $8a + + byte $ca, $90, $d6, $cb, $b2, $e9, $ad, $b0, $0e, $97, $43, $15, $d8, $1c, $66, $8b + byte $dc, $3a, $cc, $06, $f6, $83, $7d, $e5, $8d, $b2, $c1, $32, $1c, $a6, $c3, $5a + byte $1c, $55, $ec, $05, $47, $dd, $17, $a3, $16, $46, $9d, $e0, $a0, $a7, $0c, $04 + byte $cb, $70, $a7, $37, $67, $ea, $cc, $04, $d1, $3c, $5c, $e8, $b2, $a9, $d3, $48 + byte $70, $29, $01, $7a, $83, $a3, $2d, $9d, $36, $82, $b3, $7e, $fb, $fa, $ec, $da + byte $d1, $6d, $3b, $3c, $e8, $b8, $17, $03, $50, $41, $70, $d4, $13, $ad, $74, $e8 + byte $d0, $de, $20, $34, $5a, $50, $6f, $4f, $6f, $78, $d4, $15, $9e, $b4, $59, $0c + byte $8e, $e6, $d4, $99, $55, $a3, $3a, $5a, $85, $87, $e0, $a1, $c1, $bc, $7a, $75 + byte $6a, $cd, $04, $0f, $53, $2a, $55, $da, $d0, $6e, $4d, $9b, $86, $68, $61, $4e + byte $6d, $78, $30, $ad, $4a, $95, $4a, $15, $ca, $95, $2b, $d3, $fa, $db, $83, $e8 + byte $99, $7c, $45, $a1, $dd, $5e, $ff, $6e, $14, $46, $43, $ec, $9e, $56, $6e, $4c + byte $a9, $62, $43, $0a, $ed, $87, $a4, $52, $bc, $34, $15, $19, $54, $50, $28, $74 + byte $87, $88, $cb, $50, $31, $ac, $69, $d5, $b2, $26, $34, $9a, $af, $19, $b6, $75 + byte $6a, $6f, $10, $b9, $e0, $34, $6a, $b2, $a8, $a1, $30, $a8, $09, $1e, $3a, $0a + byte $86, $75, $6d, $e1, $b9, $74, $54, $42, $93, $2a, $4a, $a6, $55, $2d, $a7, $23 + byte $3c, $55, $0a, $d5, $25, $43, $7b, $b8, $d0, $6a, $45, $b3, $26, $8d, $e1, $a1 + + byte $56, $d4, $82, $e0, $11, $2d, $c2, $4b, $7c, $a8, $0d, $6a, $6a, $a6, $b6, $e0 + byte $90, $0e, $c2, $63, $2b, $0c, $0f, $c1, $2b, $19, $bc, $ca, $e8, $10, $fc, $c2 + byte $73, $b2, $0c, $3e, $22, $55, $64, $cd, $5f, $10, $9e, $d5, $aa, $11, $1d, $3d + byte $44, $68, $89, $57, $c1, $5b, $8c, $6a, $d5, $f1, $b3, $ff, $07, $f1, $20, $1e + byte $c4, $83, $78, $10, $0f, $e2, $41, $3c, $88, $07, $f1, $20, $a2, $4d, $73, $08 + byte $0f, $c2, $d6, $b4, $68, $52, $1f, $e2, $83, $a0, $72, $a5, $9a, $35, $aa, $53 + byte $15, $e2, $fd, $07, $0f, $25, $8a, $34, $88, $0d, $e1, $c1, $43, $99, $12, $c5 + byte $0a, $f5, $ab, $51, $a9, $24, $a2, $de, $04, $25, $82, $15, $2a, $90, $27, $5b + byte $44, $08, $15, $1e, $3e, $05, $29, $d0, $a7, $57, $96, $0e, $21, $11, $3a, $7c + byte $08, $55, $ac, $48, $a0, $7e, $b9, $ba, $65, $6a, $13, $2c, $27, $7d, $29, $0b + byte $de, $f2, $f4, $c8, $92, $a1, $55, $52, $08, $54, $2e, $4c, $a9, $60, $41, $0a + byte $05, $c8, $8b, $80, $d2, $a5, $48, $94, $5d, $ff, $83, $78, $10, $0f, $c2, $36 + byte $82, $7b, $10, $b6, $69, $25, $f8, $07, $21, $5b, $56, $2c, $06, $ff, $20, $64 + byte $d5, $92, $f9, $e0, $1f, $04, $ad, $59, $b2, $60, $36, $f8, $07, $01, $e3, $8a + byte $0d, $d8, $b3, $13, $fc, $fd, $9b, $54, $62, $d0, $be, $5d, $dd, $c1, $df, $bf + byte $51, $43, $fa, $f5, $da, $d6, $15, $fc, $a3, $85, $82, $68, $a1, $cb, $66, $f0 + + byte $53, $65, $c4, $60, $78, $d0, $ad, $b3, $f8, $1b, $53, $d4, $0b, $ec, $84, $07 + byte $ed, $e1, $57, $85, $11, $85, $f6, $e3, $85, $4e, $1d, $da, $82, $6f, $78, $d4 + byte $ab, $47, $97, $0d, $ed, $c1, $57, $45, $d6, $d0, $67, $27, $5e, $e8, $b0, $a6 + byte $35, $fc, $18, $55, $94, $0c, $c2, $83, $8e, $f0, $a0, $c5, $86, $65, $0b, $e6 + byte $cc, $98, $32, $61, $dc, $98, $11, $c3, $86, $0c, $1a, $b0, $6f, $2f, $38, $9b + byte $0c, $0e, $46, $83, $8b, $5d, $8b, $e1, $32, $38, $19, $09, $d7, $76, $ed, $98 + byte $37, $6b, $da, $a4, $09, $63, $46, $a3, $65, $34, $b4, $17, $3c, $82, $43, $3c + byte $0c, $4e, $f1, $28, $38, $d8, $4e, $fa, $e1, $d1, $ae, $9e, $e6, $61, $cb, $a6 + byte $75, $6b, $e1, $21, $1e, $5d, $0c, $3b, $7a, $74, $d7, $88, $82, $61, $55, $8b + byte $65, $4d, $1a, $15, $e8, $d7, $17, $1e, $6d, $b5, $80, $82, $61, $45, $b3, $25 + byte $8b, $1a, $cc, $9b, $53, $ab, $26, $5c, $b4, $40, $6d, $e1, $41, $b3, $46, $0d + byte $ea, $d5, $a9, $55, $6b, $46, $b5, $2a, $95, $2a, $b4, $6b, $0d, $8f, $1a, $2d + byte $a8, $0f, $8f, $aa, $4d, $a9, $0c, $1e, $0d, $22, $5a, $84, $67, $35, $aa, $c3 + byte $93, $f2, $68, $99, $0c, $a2, $53, $f0, $88, $16, $e1, $41, $b9, $16, $cd, $c1 + byte $d1, $7c, $bc, $08, $af, $c1, $23, $6b, $86, $37, $15, $2a, $84, $2b, $0b, $4f + byte $e9, $30, $5a, $46, $07, $11, $ca, $95, $29, $ab, $89, $15, $c1, $86, $8d, $4a + + byte $a0, $55, $4b, $69, $d2, $68, $c7, $76, $70, $b0, $19, $1c, $0a, $85, $55, $2b + byte $71, $42, $53, $e9, $b0, $1d, $3c, $c3, $a5, $b6, $f0, $90, $3b, $d2, $84, $05 + byte $0d, $c1, $49, $7b, $cd, $68, $98, $49, $c2, $62, $11, $d4, $b5, $33, $36, $45 + byte $29, $28, $4c, $85, $4b, $7d, $8b, $b2, $16, $ad, $72, $67, $b4, $c8, $12, $36 + byte $37, $41, $b4, $48, $9b, $b9, $b3, $36, $a9, $d3, $b1, $0b, $ad, $b6, $4c, $4d + byte $d1, $ba, $72, $e8, $b0, $ae, $2d, $5a, $95, $a6, $ca, $18, $3c, $d2, $66, $b4 + byte $0e, $af, $6a, $2b, $82, $52, $a5, $2d, $23, $3c, $8b, $57, $27, $6e, $62, $04 + byte $4f, $25, $4a, $14, $2b, $d2, $a8, $51, $82, $fa, $89, $25, $46, $59, $78, $08 + byte $8e, $82, $14, $2a, $50, $a0, $5e, $9c, $3a, $b1, $6a, $82, $a7, $10, $25, $82 + byte $15, $29, $54, $28, $40, $bf, $7c, $7d, $72, $d5, $8a, $51, $1d, $de, $82, $87 + byte $be, $03, $a0, $e7, $00, $08, $0d, $17, $8a, $a3, $45, $78, $d4, $2f, $4f, $ae + byte $5c, $39, $b2, $65, $ef, $01, $75, $6b, $69, $6d, $8e, $8b, $e1, $a8, $d4, $fc + byte $38, $5a, $5a, $26, $55, $28, $cf, $5a, $c1, $c1, $6c, $2e, $30, $bd, $95, $82 + byte $c7, $b4, $50, $aa, $c4, $dc, $5a, $dc, $aa, $45, $f9, $72, $2e, $ed, $78, $25 + byte $4c, $a9, $10, $c5, $6a, $a2, $c5, $19, $12, $19, $af, $a3, $83, $e0, $e0, $10 + byte $5e, $b6, $86, $30, $65, $79, $23, $1f, $84, $27, $51, $8f, $33, $1d, $85, $c7 + + byte $e8, $a1, $46, $b4, $2a, $55, $d1, $22, $3c, $0a, $0b, $0f, $f1, $41, $50, $8d + byte $c8, $9a, $2a, $83, $c3, $95, $a8, $13, $c1, $a1, $49, $c4, $0b, $51, $57, $20 + byte $1d, $c6, $ab, $f0, $a8, $48, $75, $74, $10, $29, $32, $3c, $09, $cd, $86, $e1 + byte $41, $a0, $ea, $f0, $94, $8e, $85, $08, $11, $2c, $48, $91, $c0, $f0, $a0, $32 + byte $bc, $8d, $0e, $41, $5d, $42, $54, $36, $50, $21, $42, $78, $bc, $14, $1a, $1e + byte $c2, $87, $40, $81, $ba, $64, $ca, $0c, $0e, $ca, $85, $55, $c5, $64, $19, $1e + byte $04, $44, $82, $b5, $a5, $7e, $6d, $94, $c1, $a8, $10, $17, $96, $e1, $3c, $58 + byte $1b, $ea, $96, $66, $96, $6c, $14, $8a, $33, $e6, $da, $98, $06, $4b, $a1, $0a + byte $b6, $ca, $bd, $b0, $0e, $14, $ac, $4d, $bd, $7a, $3a, $53, $52, $58, $86, $02 + byte $83, $87, $bc, $65, $b0, $34, $64, $c9, $52, $19, $3d, $14, $15, $04, $05, $02 + byte $f6, $82, $de, $f0, $a1, $3b, $2b, $ca, $10, $1e, $2d, $c2, $e3, $51, $94, $13 + byte $3e, $75, $ca, $d0, $21, $3d, $3c, $2a, $08, $0e, $f2, $f4, $ca, $d1, $2d, $3b + byte $7c, $c8, $90, $ae, $3d, $78, $5c, $e9, $e0, $21, $3b, $3e, $84, $0f, $e9, $d2 + byte $2a, $44, $78, $90, $9f, $2c, $c3, $87, $ac, $2a, $11, $3e, $82, $87, $80, $e8 + byte $72, $25, $82, $87, $8c, $e0, $15, $9e, $e5, $ea, $09, $1e, $f1, $31, $7c, $97 + byte $8d, $e8, $14, $1f, $65, $06, $87, $f8, $21, $20, $1f, $06, $9f, $f8, $2c, $2d + + byte $38, $24, $cb, $2f, $14, $5f, $b8, $05, $8f, $aa, $55, $8d, $a2, $83, $0c, $ee + byte $d2, $a4, $0e, $05, $a5, $0d, $51, $41, $4c, $d0, $2d, $4b, $86, $36, $c9, $12 + byte $44, $4d, $89, $c9, $51, $b2, $62, $42, $0c, $90, $2e, $45, $92, $b8, $29, $70 + byte $33, $26, $63, $22, $c8, $11, $32, $a5, $4b, $8d, $00, $97, $62, $76, $b6, $84 + byte $e0, $91, $10, $65, $48, $8b, $00, $4b, $70, $35, $a6, $4a, $b9, $05, $22, $7f + byte $48, $e5, $fc, $28, $83, $87, $c2, $e0, $25, $27, $01, $a4, $0f, $29, $19, $e2 + byte $34, $0a, $0c, $be, $32, $b8, $05, $4f, $29, $92, $05, $05, $1f, $d9, $3c, $13 + byte $00, $d7, $f0, $11, $3c, $24, $49, $0c, $5f, $7c, $64, $cb, $e4, $91, $21, $a4 + byte $4a, $0d, $5e, $12, $c4, $f3, $ab, $99, $bc, $2a, $00, $b7, $e0, $27, $8e, $6d + byte $f8, $08, $de, $52, $c2, $27, $47, $0e, $e2, $d9, $89, $15, $c3, $5a, $16, $4f + byte $e9, $e1, $23, $38, $70, $8e, $1f, $d1, $83, $1d, $db, $e0, $21, $8a, $25, $f7 + byte $e0, $c1, $45, $b2, $24, $4e, $12, $39, $b0, $17, $27, $96, $0d, $6b, $56, $2c + byte $45, $30, $4b, $0e, $e1, $21, $78, $48, $60, $1f, $3d, $d8, $88, $0e, $1e, $2c + byte $98, $71, $8d, $1e, $c1, $21, $7e, $b1, $0d, $5f, $2c, $98, $fb, $0f, $e0, $41 + byte $44, $44, $f0, $0f, $22, $62, $85, $85, $f0, $20, $2c, $9e, $b5, $e0, $10, $1e + byte $84, $24, $88, $65, $19, $fc, $83, $90, $24, $f6, $62, $52, $7e, $f0, $e6, $20 + + byte $96, $15, $d3, $08, $1f, $04, $38, $4b, $64, $cf, $46, $04, $a3, $10, $ee, $9f + byte $8b, $24, $09, $6c, $59, $31, $0b, $fe, $fe, $a5, $70, $e2, $c0, $8e, $3d, $0b + byte $c6, $21, $9c, $0b, $67, $8e, $ec, $d9, $92, $62, $c6, $3f, $84, $6d, $88, $e0 + byte $c9, $9a, $05, $e1, $e0, $c7, $95, $73, $0c, $20, $c7, $86, $25, $33, $02, $21 + byte $94, $2b, $97, $e0, $91, $21, $48, $11, $8f, $60, $4c, $99, $50, $e2, $48, $9e + byte $6d, $0c, $60, $1a, $41, $83, $07, $63, $86, $ec, $c9, $91, $26, $49, $8c, $50 + byte $29, $0f, $02, $2a, $94, $28, $d4, $a7, $47, $b7, $4e, $1d, $da, $b4, $6a, $09 + byte $d5, $ca, $14, $29, $d0, $ab, $47, $97, $0e, $ed, $da, $b4, $68, $0e, $5e, $2a + byte $c3, $83, $7e, $bd, $e1, $49, $6a, $f0, $51, $ae, $58, $41, $74, $d0, $a5, $33 + byte $3c, $68, $d5, $ac, $29, $7c, $8a, $56, $aa, $28, $3c, $c8, $d6, $29, $43, $bb + byte $56, $29, $9a, $25, $05, $4f, $1d, $5a, $14, $ca, $8b, $17, $e1, $41, $5a, $b2 + byte $90, $a4, $31, $78, $4a, $d3, $a4, $41, $ac, $1a, $59, $c9, $42, $5a, $bc, $b8 + byte $12, $c1, $43, $b7, $56, $8d, $e2, $d5, $8a, $56, $29, $42, $58, $78, $90, $1c + byte $26, $82, $87, $0c, $29, $1a, $d5, $a9, $51, $a5, $52, $b9, $30, $a1, $8a, $9f + byte $60, $f0, $d0, $26, $39, $3a, $88, $11, $25, $42, $b8, $52, $25, $82, $15, $29 + byte $14, $10, $3c, $a4, $4a, $52, $2f, $56, $b5, $4a, $15, $e1, $41, $88, $60, $81 + + byte $0a, $e4, $fb, $d7, $15, $1d, $c4, $a9, $11, $25, $52, $b8, $32, $a5, $e1, $41 + byte $a0, $00, $fd, $fe, $65, $48, $96, $20, $4e, $8c, $aa, $e8, $20, $2c, $3c, $08 + byte $0a, $1e, $e1, $43, $7b, $7c, $14, $2d, $4a, $85, $70, $a1, $f1, $21, $5e, $c8 + byte $97, $e7, $5f, $9a, $24, $f1, $62, $45, $8b, $cc, $16, $42, $85, $84, $a7, $e0 + byte $21, $55, $a2, $f8, $74, $11, $1f, $a2, $ab, $bc, $06, $a1, $51, $83, $7a, $75 + byte $6a, $d5, $88, $2e, $10, $2a, $62, $41, $2a, $d0, $14, $1c, $c4, $07, $07, $31 + byte $aa, $55, $a9, $12, $19, $1c, $95, $09, $6d, $10, $e1, $41, $5c, $78, $16, $11 + byte $9e, $94, $46, $db, $f0, $11, $1e, $94, $d7, $44, $21, $1a, $25, $88, $0f, $2f + byte $d1, $49, $69, $cd, $48, $c6, $f1, $a1, $02, $44, $8b, $f0, $24, $44, $82, $7a + byte $71, $fd, $20, $1d, $86, $47, $61, $c9, $42, $89, $e2, $e0, $a0, $56, $6d, $78 + byte $69, $10, $25, $a1, $66, $84, $67, $51, $d9, $40, $44, $b4, $10, $a6, $34, $38 + byte $08, $ce, $07, $62, $c3, $73, $0b, $14, $da, $10, $05, $c9, $93, $ab, $47, $4c + byte $73, $a8, $1f, $c2, $93, $b5, $e0, $e0, $29, $47, $b7, $2c, $99, $f3, $42, $f8 + byte $f0, $88, $0f, $82, $83, $87, $3e, $b9, $72, $64, $07, $0f, $19, $32, $82, $a7 + byte $90, $01, $29, $28, $38, $06, $2f, $e9, $d2, $a4, $49, $4d, $96, $3d, $21, $3c + byte $cb, $94, $11, $3c, $a4, $4a, $95, $22, $59, $52, $f0, $8d, $0e, $c1, $53, $4a + + byte $f0, $e4, $28, $31, $63, $2a, $12, $a4, $50, $81, $00, $f9, $fa, $f4, $fd, $84 + byte $b4, $a8, $44, $88, $e2, $5d, $b1, $3a, $f5, $e7, $81, $b8, $a0, $5b, $b6, $ae + byte $45, $21, $28, $bc, $c8, $d3, $2b, $27, $4b, $ca, $0a, $af, $6b, $40, $6f, $78 + byte $96, $55, $10, $37, $c3, $61, $90, $57, $39, $c3, $43, $9e, $3c, $85, $97, $32 + byte $3c, $47, $47, $5d, $32, $2b, $84, $c2, $53, $a9, $2f, $59, $c9, $0e, $8f, $32 + byte $b3, $41, $78, $c8, $06, $d1, $31, $59, $97, $81, $12, $11, $1e, $a3, $83, $dc + byte $da, $13, $bc, $04, $84, $f7, $d6, $11, $3c, $e2, $55, $78, $eb, $5c, $d1, $22 + byte $bc, $25, $4b, $9e, $3c, $a4, $07, $7f, $d9, $bc, $c2, $13, $f7, $64, $cb, $47 + byte $36, $ef, $e0, $10, $1e, $c2, $47, $b2, $e0, $2f, $8f, $5f, $3a, $08, $1e, $b2 + byte $78, $c9, $4c, $16, $dc, $b9, $73, $90, $9f, $2c, $f9, $86, $c7, $e8, $10, $9e + byte $b8, $57, $08, $1d, $3a, $a4, $4b, $3f, $13, $83, $b3, $2a, $08, $8c, $17, $91 + byte $70, $1a, $ce, $03, $29, $cb, $28, $78, $ea, $94, $19, $1e, $83, $c3, $3c, $9c + byte $57, $c9, $22, $61, $84, $07, $6d, $e1, $71, $1e, $04, $0f, $89, $12, $25, $c8 + byte $5f, $8b, $6b, $7b, $19, $4a, $0a, $9e, $e2, $d7, $52, $74, $0d, $1e, $12, $38 + byte $04, $8f, $74, $70, $14, $b7, $66, $74, $d8, $06, $12, $d8, $07, $ef, $a3, $28 + byte $85, $b3, $24, $4e, $f1, $22, $3c, $04, $cf, $f0, $c8, $25, $59, $85, $07, $0e + + byte $e1, $43, $5c, $74, $e4, $9a, $0d, $b8, $84, $27, $8e, $c1, $81, $3d, $3b, $ee + byte $dc, $92, $05, $d7, $f0, $10, $bc, $c2, $83, $f8, $e0, $f1, $06, $83, $43, $78 + byte $90, $1c, $2f, $38, $72, $e0, $10, $1c, $c4, $85, $0f, $a9, $c1, $23, $59, $47 + byte $47, $f1, $ec, $d8, $26, $8b, $f8, $10, $9e, $38, $85, $e7, $e0, $11, $1f, $a2 + byte $13, $27, $49, $e9, $92, $7d, $74, $08, $9f, $5c, $b9, $86, $f7, $e0, $c1, $96 + byte $ed, $36, $97, $c5, $b3, $0d, $70, $cf, $1a, $e3, $69, $3a, $f0, $5e, $16, $d3 + byte $4a, $3a, $37, $ae, $d3, $e2, $2e, $5c, $a5, $79, $c1, $43, $46, $78, $90, $16 + byte $bc, $f8, $ca, $99, $0f, $f3, $52, $c6, $3a, $08, $0f, $52, $d9, $8b, $bb, $8b + byte $d1, $29, $3e, $70, $8f, $8e, $52, $c5, $65, $04, $31, $fb, $88, $a7, $4c, $1e + byte $75, $31, $6b, $88, $13, $c7, $56, $0c, $1b, $d1, $ac, $d2, $65, $f0, $8c, $1e + byte $5c, $c2, $83, $d8, $e0, $c0, $5a, $14, $4b, $96, $2c, $a4, $27, $87, $a2, $19 + byte $9e, $58, $b3, $66, $25, $32, $78, $30, $67, $1e, $1e, $a2, $07, $bb, $f0, $c0 + byte $26, $3c, $b0, $0a, $0e, $2c, $98, $33, $63, $c6, $94, $09, $17, $b6, $d1, $89 + byte $55, $f0, $23, $c2, $98, $2d, $9b, $f0, $10, $1d, $e2, $23, $73, $e2, $cc, $88 + byte $86, $8f, $e0, $1d, $5e, $a2, $07, $53, $a2, $e1, $2b, $59, $b2, $22, $c9, $82 + byte $04, $73, $62, $e1, $83, $09, $13, $c2, $d1, $81, $74, $74, $09, $1e, $e1, $21 + + byte $38, $04, $4f, $d6, $a4, $c2, $73, $7c, $8a, $0e, $8c, $b9, $70, $59, $8a, $4b + byte $62, $4e, $64, $8e, $c8, $99, $0b, $ae, $c4, $56, $d8, $c3, $59, $20, $78, $4f + byte $03, $ce, $4b, $71, $2e, $06, $4f, $52, $2c, $53, $45, $74, $5c, $1a, $7b, $b0 + byte $71, $90, $09, $5f, $c4, $c3, $07, $a7, $f0, $15, $1c, $c2, $37, $8b, $e0, $c5 + byte $71, $2f, $ac, $09, $b2, $79, $30, $73, $44, $0f, $ce, $f1, $89, $03, $f9, $e8 + byte $44, $ba, $51, $90, $20, $1e, $7c, $c2, $57, $7c, $20, $55, $19, $82, $07, $25 + byte $4e, $14, $c3, $43, $f0, $24, $13, $9e, $89, $45, $87, $e4, $40, $21, $38, $90 + byte $63, $9b, $1e, $c2, $43, $74, $60, $c6, $98, $52, $72, $a0, $10, $1f, $c8, $06 + byte $8f, $f0, $11, $1d, $89, $11, $66, $c4, $90, $40, $7e, $20, $47, $36, $7d, $90 + byte $0e, $5f, $c4, $08, $11, $0a, $1e, $04, $f8, $47, $c7, $f8, $11, $bc, $19, $31 + byte $22, $18, $1c, $e8, $d3, $a3, $1b, $1c, $c2, $2f, $c3, $e0, $41, $9f, $5f, $f0 + byte $a0, $43, $9b, $56, $f4, $21, $c8, $80, $40, $78, $a4, $1b, $3c, $69, $d2, $44 + byte $41, $1c, $19, $d1, $91, $c1, $90, $01, $3b, $36, $a4, $88, $13, $a1, $e7, $3f + byte $00, $ad, $c4, $18, $40, $8f, $0e, $29, $12, $44, $09, $06, $ef, $95, $c8, $88 + byte $01, $7d, $be, $b4, $49, $66, $09, $ba, $21, $88, $59, $f4, $20, $94, $00, $e8 + byte $d2, $a6, $49, $1c, $31, $fd, $e0, $45, $2c, $78, $30, $ca, $01, $c1, $93, $3a + + byte $15, $84, $38, $43, $20, $33, $22, $84, $09, $11, $a4, $9f, $1e, $68, $d1, $c0 + byte $4a, $09, $6f, $f0, $0c, $9f, $c1, $33, $05, $e0, $a2, $41, $0d, $33, $ba, $e0 + byte $c9, $34, $7c, $07, $0f, $5a, $38, $82, $07, $86, $18, $98, $3e, $a2, $17, $3d + byte $3c, $b4, $71, $62, $a3, $82, $11, $75, $04, $08, $de, $f8, $c3, $07, $6e, $9a + byte $d8, $b1, $60, $44, $1b, $7c, $e9, $e3, $a3, $83, $1b, $27, $76, $ac, $98, $c0 + byte $05, $6f, $44, $04, $c3, $07, $de, $e8, $11, $3c, $d1, $83, $f0, $1f, $bd, $10 + byte $86, $0f, $bc, $e1, $0b, $32, $7a, $50, $fe, $91, $12, $41, $4c, $08, $61, $f8 + byte $0c, $1e, $38, $b0, $62, $c6, $00, $3a, $7c, $20, $21, $8c, $88, $00, $7e, $7c + byte $e1, $13, $07, $34, $c8, $10, $c0, $04, $6f, $04, $c1, $07, $1b, $66, $8c, $60 + byte $fd, $cb, $96, $22, $51, $9c, $18, $51, $22, $84, $0b, $15, $22, $58, $90, $40 + byte $f9, $f2, $e4, $ca, $94, $22, $21, $f8, $09, $14, $10, $3c, $65, $48, $96, $20 + byte $56, $b4, $48, $11, $c2, $c2, $47, $78, $08, $5e, $d2, $25, $8b, $0f, $9e, $c2 + byte $83, $47, $74, $60, $28, $80, $bf, $3c, $be, $dc, $39, $89, $67, $2b, $9a, $a5 + byte $70, $66, $42, $18, $c7, $47, $7e, $72, $f9, $48, $93, $c4, $5e, $0c, $2b, $91 + byte $c9, $81, $89, $60, $46, $e1, $49, $0e, $b3, $e0, $25, $82, $b9, $d0, $e0, $11 + byte $9d, $e5, $08, $63, $28, $8e, $8d, $28, $16, $cc, $99, $0a, $61, $24, $90, $81 + + byte $fc, $e8, $c9, $8c, $21, $3f, $3e, $c1, $83, $19, $53, $c6, $af, $83, $01, $7f + byte $7e, $7c, $a3, $47, $f0, $e4, $c5, $42, $18, $d3, $f8, $10, $3e, $d2, $05, $1f + byte $de, $e1, $8b, $17, $0f, $6e, $e1, $2b, $3c, $06, $1f, $9e, $c1, $83, $0b, $e7 + byte $53, $11, $fc, $78, $f3, $e4, $ce, $2d, $78, $70, $a2, $10, $3c, $e8, $86, $0f + byte $e2, $0c, $e9, $f1, $a6, $c9, $9d, $1a, $17, $ca, $1c, $39, $b0, $67, $c7, $37 + byte $78, $32, $0a, $5e, $e1, $93, $23, $05, $f6, $e4, $d8, $92, $e1, $45, $92, $50 + byte $f6, $88, $1e, $d4, $a8, $70, $a6, $c8, $81, $3c, $3b, $32, $ac, $59, $c9, $91 + byte $23, $5b, $96, $4c, $19, $d2, $a5, $49, $93, $ca, $45, $32, $67, $49, $12, $25 + byte $06, $a7, $e0, $c1, $5d, $1a, $57, $a9, $52, $82, $83, $a4, $44, $20, $87, $b7 + byte $2c, $9e, $32, $c2, $27, $57, $29, $c1, $93, $a3, $44, $0e, $e1, $83, $57, $78 + byte $e4, $c6, $2d, $3a, $70, $96, $cc, $29, $3a, $70, $90, $2d, $9b, $57, $f8, $88 + byte $0f, $d1, $99, $53, $74, $e0, $c0, $3b, $3c, $c8, $e4, $51, $3c, $c2, $43, $72 + byte $08, $0e, $d1, $41, $7c, $78, $e2, $2e, $9d, $1b, $d7, $0a, $c0, $39, $78, $94 + byte $cc, $f0, $51, $2f, $c2, $43, $7c, $cc, $16, $f1, $81, $43, $c5, $48, $4f, $c1 + byte $83, $6b, $f8, $e4, $14, $1f, $d9, $b3, $4f, $16, $e1, $2b, $38, $b4, $40, $8e + byte $d1, $31, $78, $26, $8b, $f0, $19, $1f, $29, $05, $87, $86, $c0, $2e, $7c, $a4 + + byte $cb, $e4, $50, $3f, $a2, $53, $43, $0c, $1e, $34, $ba, $45, $7c, $a4, $cc, $89 + byte $62, $74, $6c, $09, $b4, $e2, $4b, $f8, $88, $0e, $14, $29, $04, $07, $72, $c1 + byte $83, $06, $75, $6e, $54, $e3, $4b, $74, $24, $c7, $92, $46, $fc, $a0, $c6, $95 + byte $0a, $65, $4a, $d1, $23, $3c, $8c, $c8, $02, $21, $fe, $50, $dc, $86, $c6, $28 + byte $b3, $71, $54, $41, $09, $e2, $d9, $89, $63, $cb, $a6, $57, $f0, $6a, $8d, $79 + byte $8a, $7d, $f0, $10, $1b, $3c, $44, $b3, $16, $95, $07, $f3, $54, $78, $16, $c3 + byte $7a, $0e, $88, $64, $c9, $42, $7a, $13, $dc, $04, $ec, $c4, $b2, $61, $13, $1c + byte $58, $05, $87, $57, $c1, $bc, $0c, $b0, $8f, $17, $d1, $21, $3c, $b2, $0c, $5e + byte $cc, $5e, $07, $3b, $76, $c1, $21, $3c, $84, $8f, $e0, $41, $82, $39, $73, $62 + byte $c1, $8f, $15, $a9, $e8, $cc, $8c, $28, $d3, $f0, $10, $5d, $48, $b2, $08, $1f + byte $d1, $81, $28, $13, $76, $64, $d9, $9c, $0a, $d2, $c9, $82, $65, $70, $20, $4e + byte $8c, $69, $f0, $8c, $4f, $a4, $d2, $65, $7c, $0a, $9e, $64, $1f, $06, $eb, $f0 + byte $40, $92, $24, $09, $16, $e1, $21, $3e, $30, $21, $12, $7c, $d2, $0d, $51, $a2 + byte $44, $88, $84, $07, $36, $e1, $81, $54, $78, $20, $41, $9c, $78, $ba, $24, $42 + byte $38, $ba, $24, $8b, $e8, $48, $2c, $3c, $12, $26, $4b, $86, $34, $e9, $f0, $10 + byte $3e, $c2, $43, $70, $08, $5e, $47, $f2, $ac, $0e, $89, $aa, $91, $2c, $96, $e2 + + byte $5e, $bc, $ca, $e3, $a2, $6e, $9e, $a9, $3b, $31, $0d, $ae, $02, $f9, $ae, $10 + byte $1e, $d8, $9c, $a9, $27, $45, $21, $3a, $92, $63, $9b, $2c, $82, $e7, $5e, $d8 + byte $1a, $7b, $23, $3c, $46, $47, $32, $4c, $f7, $44, $74, $e4, $18, $1e, $82, $07 + byte $39, $b2, $e1, $81, $4d, $85, $60, $4c, $f8, $2c, $06, $cf, $21, $19, $3c, $58 + byte $13, $61, $42, $98, $11, $21, $86, $04, $8f, $42, $ba, $08, $1f, $5d, $81, $34 + byte $93, $f0, $c0, $88, $20, $43, $02, $0c, $e8, $93, $eb, $13, $e1, $91, $74, $8d + byte $08, $4f, $04, $e8, $f3, $a7, $47, $8f, $2f, $99, $aa, $19, $1e, $08, $45, $87 + byte $f0, $48, $9f, $1e, $5d, $ba, $74, $e8, $d0, $26, $45, $38, $3e, $10, $24, $48 + byte $20, $7c, $84, $87, $e0, $49, $9b, $36, $2d, $c6, $e1, $21, $78, $d2, $0f, $0f + byte $e1, $23, $3c, $06, $8f, $74, $49, $90, $41, $78, $88, $ae, $b4, $70, $11, $26 + byte $14, $dd, $e3, $05, $6e, $5a, $b4, $a2, $3b, $5e, $3a, $78, $e2, $23, $ce, $b3 + byte $b9, $2e, $f6, $d1, $d9, $d8, $06, $f9, $80, $d0, $3e, $67, $36, $1d, $ab, $46 + byte $f0, $24, $75, $35, $48, $1c, $c3, $65, $9d, $2e, $f6, $21, $ab, $e8, $b8, $0e + byte $96, $75, $b2, $08, $1e, $e1, $61, $59, $30, $3f, $06, $c1, $77, $1f, $3d, $85 + byte $75, $79, $35, $92, $45, $3e, $dc, $06, $ac, $8f, $11, $b1, $f0, $1c, $bc, $ef + byte $66, $78, $0c, $de, $88, $08, $21, $4c, $17, $57, $fb, $18, $b5, $85, $aa, $79 + + byte $b6, $ee, $46, $74, $42, $42, $18, $31, $22, $82, $e1, $23, $3a, $23, $23, $86 + byte $94, $48, $f0, $20, $14, $3c, $10, $d0, $a2, $59, $0c, $90, $67, $8b, $af, $10 + byte $9e, $10, $22, $24, $40, $93, $26, $0d, $1a, $c4, $91, $21, $0b, $4f, $88, $93 + byte $05, $42, $04, $34, $71, $e2, $a0, $8e, $9d, $1a, $55, $a2, $48, $90, $c4, $0b + byte $44, $c1, $01, $01, $ce, $f0, $80, $1d, $1b, $36, $ac, $58, $a9, $60, $26, $1c + byte $1c, $82, $07, $7e, $9a, $38, $c2, $07, $36, $6a, $58, $b1, $60, $c1, $8c, $09 + byte $13, $46, $04, $08, $f0, $ef, $83, $65, $b4, $b4, $68, $45, $85, $38, $41, $6c + byte $99, $6c, $a5, $2c, $41, $23, $09, $60, $0d, $5e, $5b, $93, $0e, $6e, $da, $b8 + byte $c2, $47, $f0, $8a, $4e, $f4, $e7, $41, $70, $08, $1f, $38, $d2, $44, $f8, $d8 + byte $3a, $4b, $23, $3c, $a4, $85, $e0, $8d, $9f, $3e, $3e, $ba, $78, $a2, $47, $72 + byte $c0, $11, $3f, $f2, $40, $74, $c4, $47, $0f, $6f, $78, $c0, $1d, $3e, $a2, $63 + byte $f0, $40, $40, $00, $7f, $70, $08, $1f, $47, $22, $78, $17, $0e, $04, $f4, $f1 + byte $47, $47, $3c, $e1, $b1, $0e, $c4, $47, $28, $e1, $11, $5f, $74, $08, $5e, $55 + byte $00, $3b, $b4, $f0, $19, $1e, $82, $27, $ee, $f8, $0a, $15, $0b, $fe, $f8, $18 + byte $3e, $82, $43, $7c, $80, $11, $1e, $a1, $04, $0f, $7c, $d1, $05, $66, $74, $80 + byte $8e, $0d, $2a, $14, $cc, $d1, $05, $76, $ba, $84, $1e, $be, $20, $07, $0f, $bc + + byte $78, $e1, $44, $07, $58, $30, $a3, $63, $72, $80, $02, $39, $3a, $c0, $c5, $93 + byte $2e, $60, $e1, $c4, $09, $03, $3a, $b4, $e8, $00, $19, $32, $d2, $c5, $31, $2a + byte $f1, $85, $84, $04, $00, $0d, $32, $44, $b0, $c0, $a8, $ce, $86, $e0, $15, $13 + byte $22, $00, $36, $28, $c1, $03, $c4, $e4, $0c, $df, $b0, $83, $07, $b4, $e0, $01 + byte $0e, $c4, $e2, $98, $0d, $18, $f0, $a7, $c4, $e8, $19, $3c, $41, $86, $4f, $8c + byte $18, $c0, $a3, $c5, $03, $1b, $66, $f2, $88, $1f, $e0, $82, $27, $a4, $e0, $01 + byte $0e, $2d, $18, $50, $38, $a1, $43, $0d, $3e, $98, $20, $a2, $0f, $5e, $20, $81 + byte $07, $6f, $cc, $e1, $11, $3c, $3a, $b0, $e1, $23, $78, $00, $0d, $5f, $c1, $13 + byte $02, $f8, $f0, $01, $1a, $14, $08, $e0, $40, $01, $03, $8c, $1f, $90, $a3, $03 + byte $84, $e8, $01, $26, $f8, $00, $80, $0b, $32, $78, $81, $8f, $0e, $c1, $13, $58 + byte $f8, $08, $1e, $30, $21, $c7, $0f, $08, $e0, $82, $27, $48, $10, $c0, $80, $00 + byte $0a, $1e, $30, $20, $41, $8c, $8f, $c9, $29, $78, $c3, $09, $be, $d1, $21, $3d + byte $84, $4f, $f8, $70, $a0, $87, $ef, $e4, $0a, $10, $3e, $6c, $68, $c1, $33, $3e + byte $65, $17, $78, $b0, $a1, $f8, $27, $44, $8f, $0e, $4d, $ee, $dc, $a8, $70, $a2 + byte $c8, $81, $3c, $5b, $32, $a4, $59, $f9, $27, $4c, $9f, $0f, $4d, $ea, $d4, $b8 + byte $50, $e2, $48, $81, $1d, $59, $36, $a4, $49, $f9, $27, $42, $9f, $0e, $af, $e0 + + byte $41, $85, $12, $c5, $e0, $49, $86, $75, $f0, $20, $4a, $80, $0e, $2d, $1a, $d1 + byte $8b, $02, $b9, $e8, $4d, $9c, $00, $dd, $e0, $41, $2d, $7c, $91, $23, $1b, $3f + byte $c2, $87, $7f, $82, $c1, $9b, $72, $f4, $08, $be, $88, $e8, $d1, $a6, $11, $3e + byte $82, $7f, $0a, $c0, $87, $9b, $26, $36, $2a, $c1, $df, $3f, $36, $fa, $78, $68 + byte $62, $a7, $8a, $99, $22, $06, $72, $68, $c9, $a0, $8e, $9f, $fe, $11, $e2, $c1 + byte $49, $1d, $2b, $65, $8c, $14, $d0, $91, $45, $43, $1a, $a5, $ff, $00, $80, $09 + byte $2f, $2e, $ec, $58, $31, $63, $0a, $fe, $d8, $d0, $e1, $c6, $41, $0d, $13, $26 + byte $0c, $e4, $d1, $a2, $41, $4d, $32, $7c, $fa, $c7, $80, $06, $05, $36, $2c, $c1 + byte $03, $7d, $f0, $8c, $5e, $fe, $21, $a1, $45, $89, $2c, $f8, $a2, $0a, $5f, $fe + byte $c1, $a1, $42, $8e, $14, $33, $46, $f4, $e8, $a2, $47, $f0, $81, $08, $1a, $05 + byte $50, $c4, $00, $83, $37, $49, $16, $c4, $b9, $51, $e3, $ca, $85, $33, $a5, $01 + byte $c4, $be, $26, $b0, $24, $41, $9c, $18, $51, $aa, $e5, $a1, $7b, $34, $00, $f2 + byte $e4, $82, $47, $f8, $64, $46, $94, $09, $11, $c2, $e1, $91, $42, $f0, $20, $4b + byte $96, $64, $f8, $0a, $0e, $84, $09, $11, $0c, $0e, $c1, $3f, $78, $10, $0a, $1e + byte $04, $e8, $07, $4f, $32, $e1, $37, $78, $d3, $a3, $47, $37, $f8, $13, $24, $18 + byte $3e, $82, $03, $5d, $3c, $e1, $17, $51, $70, $40, $40, $1f, $1f, $5d, $bc, $74 + + byte $48, $20, $27, $86, $94, $28, $92, $e4, $80, $90, $00, $fe, $e0, $89, $07, $4f + byte $7a, $40, $16, $1c, $88, $20, $0e, $9f, $c1, $9b, $0e, $0a, $e2, $c1, $93, $30 + byte $61, $44, $08, $11, $e0, $c7, $17, $3d, $f0, $e0, $46, $81, $1c, $19, $52, $24 + byte $e1, $21, $7c, $c4, $47, $bc, $78, $83, $57, $fc, $08, $9e, $08, $c3, $57, $f0 + byte $09, $df, $c1, $21, $7a, $86, $87, $e8, $1f, $7c, $71, $c7, $bf, $e8, $98, $3c + byte $e2, $23, $6c, $36, $2f, $93, $54, $2f, $c8, $0d, $bd, $91, $68, $eb, $24, $f3 + byte $30, $49, $55, $82, $4e, $39, $18, $88, $04, $2f, $d2, $a4, $83, $43, $2d, $0c + byte $cf, $a5, $83, $50, $78, $0b, $5e, $b5, $a1, $74, $44, $f7, $ca, $10, $1d, $10 + byte $37, $8e, $e0, $49, $12, $65, $2b, $a8, $95, $8d, $21, $7c, $20, $22, $44, $fb + byte $25, $04, $5f, $a4, $f1, $a2, $31, $d2, $c6, $45, $0b, $27, $89, $56, $58, $2b + byte $6b, $43, $67, $0c, $5e, $34, $70, $b4, $82, $5a, $41, $a4, $35, $21, $c4, $8d + byte $0b, $27, $4e, $1c, $d4, $b1, $63, $a3, $da, $29, $c3, $43, $6b, $c0, $1d, $1d + byte $82, $47, $70, $c0, $86, $15, $0b, $16, $cc, $c1, $0b, $57, $f8, $c0, $81, $23 + byte $f8, $62, $c2, $d4, $18, $82, $17, $f6, $e0, $81, $35, $7c, $60, $c6, $8c, $09 + byte $22, $46, $08, $f1, $29, $78, $43, $c1, $0c, $19, $13, $c6, $e0, $85, $03, $46 + byte $78, $80, $16, $9f, $20, $85, $0f, $0c, $e1, $03, $66, $7c, $0c, $0e, $50, $a1 + + byte $40, $0e, $0f, $10, $21, $62, $00, $7f, $85, $ce, $04, $fd, $b3, $44, $27, $6f + byte $64, $83, $c7, $71, $24, $d6, $e2, $59, $c2, $5d, $36, $8a, $c6, $16, $b8, $12 + byte $47, $82, $1e, $de, $3b, $11, $9e, $69, $86, $0f, $04, $e1, $65, $2d, $44, $87 + byte $a2, $59, $21, $ee, $10, $be, $a5, $10, $1e, $ea, $72, $bc, $c4, $bf, $26, $de + byte $c0, $93, $08, $4f, $75, $a1, $42, $84, $0f, $7a, $e1, $61, $2b, $46, $67, $1c + byte $7b, $38, $3a, $c6, $27, $9c, $45, $03, $7a, $b2, $88, $8e, $77, $28, $bc, $04 + byte $af, $cf, $71, $07, $61, $e3, $86, $15, $1e, $eb, $c2, $63, $c0, $0f, $0f, $2f + byte $dc, $64, $15, $bc, $a0, $63, $47, $00, $3f, $3c, $86, $0f, $d8, $b0, $61, $e1 + byte $8a, $17, $30, $a0, $43, $c3, $10, $1e, $f0, $c1, $85, $83, $07, $36, $2e, $58 + byte $30, $61, $06, $07, $ec, $d0, $d0, $83, $47, $07, $36, $3a, $c0, $8d, $17, $e1 + byte $25, $78, $80, $0b, $1e, $60, $d1, $80, $8e, $0e, $e1, $29, $3a, $40, $03, $0f + byte $0e, $1c, $5a, $30, $60, $40, $83, $02, $05, $12, $46, $74, $08, $1e, $50, $f7 + byte $06, $76, $ea, $eb, $60, $3c, $2d, $0b, $8c, $18, $92, $05, $0e, $1a, $eb, $68 + byte $59, $cf, $8b, $f1, $80, $7e, $6b, $6c, $f3, $69, $81, $01, $3d, $b8, $e0, $b5 + byte $8d, $21, $85, $a7, $6c, $70, $74, $b6, $c1, $3e, $5c, $96, $e1, $63, $6f, $42 + byte $4d, $96, $eb, $20, $7c, $40, $88, $0f, $f9, $20, $5e, $41, $c5, $02, $19, $73 + + byte $70, $80, $08, $01, $7c, $78, $00, $5b, $21, $b0, $05, $87, $e8, $00, $29, $bc + byte $80, $0b, $9e, $58, $c3, $e3, $d1, $0a, $0f, $65, $03, $2c, $58, $68, $e1, $01 + byte $4a, $78, $3a, $1b, $c1, $a3, $2a, $80, $05, $03, $2d, $59, $5c, $c5, $e8, $10 + byte $2f, $82, $4f, $78, $4c, $16, $90, $21, $85, $a7, $e8, $d8, $24, $a0, $3e, $89 + byte $f0, $11, $de, $db, $40, $f0, $7c, $13, $e1, $2d, $3e, $80, $0e, $ef, $7d, $30 + byte $38, $06, $cf, $f0, $9e, $0d, $06, $e7, $3a, $c0, $0b, $67, $6b, $1e, $c9, $32 + byte $11, $35, $d2, $c0, $b4, $08, $1e, $f3, $68, $2d, $e6, $85, $34, $19, $3c, $d0 + byte $80, $41, $bd, $b6, $83, $63, $f0, $04, $3b, $2f, $40, $83, $46, $05, $12, $04 + byte $f4, $b9, $19, $1c, $21, $a6, $8c, $75, $b0, $0c, $41, $00, $07, $16, $9d, $83 + byte $67, $78, $58, $1b, $20, $82, $27, $50, $20, $80, $2b, $67, $ce, $0c, $cf, $e1 + byte $23, $78, $02, $02, $08, $60, $6f, $81, $8c, $0f, $c1, $31, $f8, $46, $f7, $e8 + byte $00, $28, $7c, $9d, $85, $f0, $0c, $2c, $bc, $c0, $0f, $ef, $e1, $01, $70, $78 + byte $0c, $1e, $d9, $24, $bc, $c1, $8b, $8e, $d9, $24, $3e, $a6, $0b, $f8, $f0, $b2 + byte $79, $b4, $86, $07, $b7, $68, $64, $63, $20, $e1, $35, $78, $96, $85, $a2, $17 + byte $2d, $e0, $c2, $39, $95, $87, $60, $70, $44, $82, $14, $01, $18, $00, $3c, $58 + byte $fe, $83, $77, $2a, $8c, $18, $40, $00, $01, $80, $0b, $33, $78, $4f, $c6, $58 + + byte $50, $3c, $00, $c1, $87, $03, $c3, $ff, $a1, $6c, $89, $29, $13, $28, $60, $80 + byte $c1, $03, $7a, $f0, $e9, $81, $f1, $11, $20, $3c, $d8, $50, $83, $57, $74, $04 + byte $19, $5f, $92, $83, $ff, $4b, $94, $1c, $e2, $63, $74, $8a, $0f, $fe, $73, $26 + byte $98, $e8, $1e, $1f, $82, $47, $41, $80, $0d, $2b, $ba, $e4, $0b, $28, $fe, $fd + byte $d7, $88, $e3, $00, $73, $1f, $40, $ad, $0f, $f0, $f3, $65, $f0, $0a, $0f, $c1 + byte $63, $6d, $40, $86, $08, $0e, $76, $74, $f4, $1f, $9d, $ce, $26, $14, $48, $10 + byte $c0, $82, $02, $12, $1e, $82, $e7, $39, $80, $11, $9e, $c0, $83, $01, $11, $1c + byte $fd, $c7, $8b, $e0, $71, $16, $c2, $23, $38, $d0, $c0, $82, $4f, $b2, $3a, $02 + byte $e0, $c1, $82, $0c, $4e, $fe, $93, $65, $78, $4c, $96, $a0, $81, $07, $ef, $40 + byte $12, $0e, $90, $01, $41, $08, $00, $dd, $97, $00, $15, $7c, $c0, $83, $02, $8e + byte $04, $10, $02, $78, $78, $bf, $44, $24, $4d, $07, $dd, $03, $00, $7c, $bc, $f1 + byte $22, $f8, $82, $07, $09, $ac, $05, $16, $03, $5c, $89, $0c, $0c, $f0, $e9, $09 + byte $0f, $4e, $8f, $0c, $31, $10, $40, $02, $9d, $1f, $c1, $03, $76, $26, $8f, $00 + byte $31, $28, $f8, $87, $8e, $08, $d8, $11, $82, $7f, $f0, $00, $0b, $fc, $00, $c2 + byte $29, $e5, $41, $00, $54, $82, $88, $00, $c1, $3f, $08, $82, $88, $00, $70, $83 + byte $7f, $10, $02, $76, $12, $82, $7f, $10, $02, $03, $04, $40, $f0, $0f, $c2, $20 + + byte $01, $05, $ff, $20, $d2, $cb, $43, $1f, $0a, $e0, $c8, $80, $22, $01, $8c, $08 + byte $20, $02, $f8, $f8, $f6, $02, $1e, $d8, $b8, $50, $06, $2f, $c4, $80, $86, $01 + byte $fe, $7e, $81, $17, $0e, $ee, $b3, $80, $1c, $18, $52, $20, $e1, $3b, $3c, $04 + byte $af, $65, $f1, $25, $80, $84, $0f, $80, $c3, $00, $5f, $bf, $d8, $46, $38, $f6 + byte $41, $f8, $8b, $0f, $57, $0b, $3a, $54, $28, $90, $01, $85, $cf, $27, $05, $eb + byte $1c, $06, $2f, $48, $10, $a3, $47, $f0, $81, $75, $8f, $8e, $03, $44, $08, $e0 + byte $83, $37, $cc, $6b, $1d, $bc, $c1, $81, $4d, $4e, $b0, $61, $9e, $07, $a8, $c1 + byte $17, $0c, $e8, $70, $11, $3c, $de, $55, $fc, $88, $1e, $e1, $23, $78, $80, $02 + byte $b9, $21, $12, $40, $06, $08, $fe, $20, $e1, $c6, $c0, $1c, $98, $3c, $c3, $0f + byte $fc, $08, $08, $ad, $00, $04, $7f, $80, $11, $20, $01, $c7, $1f, $90, $bb, $20 + byte $02, $64, $88, $04, $04, $3e, $7a, $26, $07, $10, $b8, $5a, $00, $74, $ec, $d0 + byte $b0, $42, $c5, $82, $39, $17, $60, $8c, $95, $30, $71, $c2, $c0, $5e, $20, $b0 + byte $42, $81, $82, $19, $52, $26, $c0, $10, $2b, $70, $c2, $c4, $01, $1d, $5b, $47 + byte $48, $11, $25, $33, $3c, $82, $8f, $0e, $0d, $10, $6a, $8e, $0c, $3e, $e0, $e2 + byte $63, $0d, $8c, $0e, $c1, $a1, $64, $66, $c2, $e0, $1f, $1c, $a2, $53, $f8, $82 + byte $16, $5f, $21, $84, $c7, $e0, $1d, $9f, $d2, $65, $f0, $02, $0b, $23, $39, $c5 + + byte $27, $88, $d1, $39, $78, $40, $4f, $4e, $90, $07, $54, $74, $02, $0b, $22, $38 + byte $c4, $a7, $e8, $04, $be, $26, $06, $0f, $e0, $c0, $e2, $73, $74, $02, $d7, $10 + byte $41, $04, $0f, $a0, $40, $80, $44, $57, $b0, $60, $c1, $04, $6f, $c0, $80, $01 + byte $25, $1b, $30, $c1, $f7, $78, $9c, $c0, $e8, $04, $3a, $3a, $dc, $cf, $f0, $10 + byte $1c, $4e, $f0, $8a, $40, $9f, $30, $62, $01, $68, $d0, $43, $02, $24, $88, $b8 + byte $50, $25, $23, $d1, $e6, $0c, $5e, $c0, $d3, $22, $d0, $f0, $3a, $25, $d3, $64 + byte $5c, $8c, $ee, $c1, $21, $3c, $01, $29, $88, $d1, $39, $5e, $02, $0b, $8f, $40 + byte $0a, $62, $b2, $89, $d7, $40, $00, $a7, $83, $f0, $1e, $9e, $82, $67, $78, $07 + byte $5a, $07, $aa, $40, $85, $c8, $1b, $e9, $3c, $3a, $00, $8a, $16, $45, $3b, $de + byte $56, $81, $78, $1f, $af, $1b, $47, $f0, $7c, $04, $79, $37, $5c, $04, $8f, $64 + byte $95, $77, $7b, $25, $40, $80, $f1, $7e, $14, $84, $27, $00, $c1, $33, $3c, $01 + byte $cf, $5a, $d1, $02, $00, $80, $36, $16, $9e, $a2, $c5, $20, $b8, $f3, $7d, $08 + byte $6c, $b4, $f8, $e2, $5d, $18, $14, $a8, $92, $f8, $46, $ba, $60, $d6, $ca, $c4 + byte $00, $8e, $72, $59, $ce, $c4, $4b, $13, $de, $a2, $01, $b1, $16, $b7, $22, $7c + byte $78, $70, $e1, $c0, $81, $1d, $2f, $56, $01, $a0, $5c, $14, $1c, $83, $07, $6c + byte $d8, $b0, $60, $7e, $8b, $23, $1d, $5e, $82, $43, $f0, $80, $1e, $de, $c3, $45 + + byte $78, $fc, $07, $25, $0b, $5e, $bc, $8c, $36, $ff, $20, $99, $47, $6b, $68, $50 + byte $1b, $44, $32, $81, $15, $ad, $83, $67, $70, $c8, $da, $69, $2b, $5a, $40, $85 + byte $02, $3f, $ed, $c3, $08, $4e, $c1, $23, $5c, $e4, $c5, $68, $fd, $2e, $db, $45 + byte $da, $cf, $0a, $f1, $20, $38, $40, $5a, $46, $6b, $61, $5c, $16, $c1, $b8, $54 + byte $23, $f6, $52, $af, $cc, $83, $85, $69, $1e, $85, $8b, $e0, $0f, $7b, $2f, $7c + byte $a6, $4e, $d9, $33, $d3, $50, $f0, $0c, $0f, $40, $83, $5f, $a1, $00, $1e, $de + byte $e3, $15, $2c, $18, $c1, $23, $6d, $a5, $e3, $11, $50, $09, $73, $41, $c5, $88 + byte $f7, $fd, $b3, $10, $43, $84, $00, $3e, $5a, $c3, $ac, $49, $90, $21, $ef, $40 + byte $f0, $db, $e1, $68, $84, $87, $68, $15, $5c, $b7, $45, $59, $cc, $02, $35, $31 + byte $5a, $1e, $23, $50, $79, $21, $2d, $00, $0a, $97, $c1, $73, $1f, $be, $81, $ac + byte $00, $04, $10, $80, $78, $1e, $2d, $5a, $03, $60, $80, $f0, $92, $0e, $98, $70 + byte $01, $22, $38, $c1, $87, $13, $4f, $93, $36, $c0, $e0, $00, $1d, $76, $c1, $84 + byte $1a, $0b, $20, $80, $05, $e5, $3f, $00, $57, $84, $82, $91, $31, $20, $82, $03 + byte $0d, $3c, $f8, $84, $17, $f0, $60, $41, $06, $17, $ff, $15, $11, $0a, $24, $08 + byte $e1, $dd, $3f, $8c, $8a, $00, $19, $62, $78, $8f, $04, $f1, $32, $3c, $01, $8d + byte $ae, $fe, $c3, $33, $18, $10, $c1, $cd, $7f, $bf, $08, $0f, $59, $2f, $14, $25 + + byte $63, $60, $e1, $dd, $7f, $32, $8c, $f6, $a1, $0a, $10, $7c, $b8, $30, $c3, $7d + byte $10, $04, $00, $17, $56, $70, $0f, $42, $f0, $60, $43, $0d, $fe, $41, $08, $36 + byte $b4, $e0, $1e, $84, $a1, $07, $f7, $20, $1e, $c4, $83, $30, $94, $04, $d1, $30 + byte $0a, $45, $c3, $58, $99, $93, $32, $64, $40, $ce, $10, $d0, $47, $c4, $e4, $08 + byte $7e, $25, $01, $0c, $4c, $68, $95, $69, $13, $84, $ef, $58, $09, $3a, $02, $ac + byte $8e, $5e, $70, $92, $92, $c9, $b4, $80, $92, $00, $83, $7f, $28, $00, $0d, $0c + byte $f0, $24, $08, $fe, $91, $08, $68, $93, $00, $fb, $12, $86, $78, $48, $00, $7a + byte $0e, $e0, $3c, $8c, $b6, $df, $b6, $8f, $45, $39, $0f, $c2, $70, $fa, $7e, $63 + byte $0f, $e2, $41, $3c, $88, $07, $f1, $20, $1e, $c4, $83, $78, $10, $0f, $a2, $c0 + byte $81, $01, $05, $02, $04, $30, $20, $80, $00, $e0, $c3, $83, $07, $17, $0e, $6c + byte $d8, $c1, $2b, $38, $04, $6f, $b8, $c1, $13, $56, $f0, $09, $0f, $e1, $33, $3c + byte $05, $ff, $e8, $10, $9e, $61, $86, $bf, $e0, $19, $2f, $61, $05, $af, $64, $1d + byte $bc, $83, $03, $8c, $f0, $91, $6e, $93, $51, $f0, $4f, $36, $c1, $11, $7a, $f8 + byte $0e, $ee, $30, $a0, $43, $df, $0a, $80, $8b, $51, $74, $82, $19, $1c, $a0, $9d + byte $6d, $00, $65, $29, $5a, $41, $fb, $86, $57, $07, $76, $70, $81, $d2, $98, $b6 + byte $c4, $59, $8e, $0b, $50, $a1, $40, $6e, $ad, $57, $b2, $0d, $16, $09, $88, $dd + + byte $3f, $08, $b4, $82, $34, $d8, $ff, $83, $28, $2c, $90, $20, $40, $34, $cc, $41 + byte $d0, $4b, $e0, $c3, $cc, $85, $c0, $e2, $52, $a3, $2a, $9d, $c1, $31, $75, $35 + byte $a2, $89, $5d, $b2, $a0, $66, $4e, $48, $90, $20, $ce, $e4, $8a, $58, $0a, $72 + byte $03, $e4, $e0, $00, $01, $3c, $78, $70, $60, $e1, $04, $cf, $70, $11, $3c, $82 + byte $63, $f0, $08, $0e, $60, $40, $c7, $c3, $68, $05, $11, $42, $70, $01, $0d, $2d + byte $5a, $85, $8b, $e0, $11, $0d, $c3, $05, $68, $50, $c1, $3d, $1a, $05, $07, $90 + byte $d1, $38, $dc, $36, $82, $72, $90, $94, $82, $7b, $95, $cc, $c2, $e0, $a2, $51 + byte $47, $ac, $83, $b9, $2b, $d8, $37, $ca, $cc, $12, $76, $6a, $d1, $9c, $4c, $95 + byte $1d, $09, $c8, $2b, $82, $0b, $a3, $86, $a6, $0c, $f8, $1b, $01, $16, $0c, $a8 + byte $e1, $f3, $76, $2c, $cd, $da, $9d, $0e, $5f, $4d, $a7, $6e, $d4, $b7, $75, $6d + byte $67, $ad, $68, $b8, $67, $21, $47, $cb, $46, $00, $fb, $88, $05, $17, $b0, $d9 + byte $30, $a9, $15, $e5, $22, $57, $79, $cb, $f8, $c7, $8e, $9b, $65, $7a, $6b, $15 + byte $47, $d8, $b9, $01, $5a, $4b, $ac, $4d, $f0, $4b, $67, $e6, $80, $0e, $15, $f2 + byte $19, $8a, $5a, $b9, $23, $1c, $fe, $05, $70, $e1, $70, $77, $c2, $8d, $13, $30 + byte $a0, $05, $cb, $57, $14, $15, $83, $35, $44, $b0, $2f, $29, $58, $45, $49, $c8 + byte $e0, $df, $2f, $9c, $8e, $01, $0d, $f2, $2f, $0f, $e2, $41, $7c, $fa, $6c, $0e + + byte $e0, $40, $01, $03, $84, $7f, $2f, $fc, $9f, $66, $50, $a5, $22, $38, $43, $8f + byte $0c, $6b, $3b, $b8, $42, $8b, $95, $60, $6f, $41, $b8, $85, $9d, $b0, $83, $43 + byte $dc, $81, $17, $5c, $fc, $83, $0e, $0e, $c0, $e2, $06, $00, $b8, $30, $33, $2c + byte $c8, $16, $b0, $07, $00, $c0, $c9, $fe, $d0, $81, $42, $86, $08, $0e, $54, $e1 + byte $f7, $0f, $15, $12, $04, $30, $a5, $3e, $08, $86, $83, $6a, $1e, $c4, $83, $78 + byte $10, $0f, $e2, $41, $3c, $88, $07, $f1, $20, $1e, $c4, $83, $78, $10, $0f, $02 + +DAT +{{ + + TERMS OF USE: MIT License + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + associated documentation files (the "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included in all copies or substantial + portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT + LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +}} +DAT diff --git a/source/boing/boing-bel-foreground.spin b/source/boing/boing-bel-foreground.spin new file mode 100644 index 0000000..f561831 --- /dev/null +++ b/source/boing/boing-bel-foreground.spin @@ -0,0 +1,505 @@ +'' +'' VGA scanline driver 400x300 - foreground renderer +'' +'' Based on "Ball" demo for Gameduino +'' Copyright (c) 2011 by James Bowman +'' +'' Author: Marko Lukat +'' Last modified: 2012/12/24 +'' Version: 0.11 +'' +OBJ + system: "boing-bel-corecon" + +PUB null +'' This is not a top level object. + +PUB init(ID, mailbox) + + return system.launch(ID, @entry, mailbox) + +DAT org 0 ' foreground renderer + +entry jmpret $, #setup ' once + + rdlong indx, blnk ' | + cmpsub indx, scry wz ' | + if_ne jmp #$-2 ' waiting for last line to be fetched + +' Skip 26 sync lines and advance by a further 161 hub windows. This pushes an +' assumed foreground renderer hubop beyond the first video renderer line rdlong +' if it were to render scanline -1. +' After the waitcnt we have no further insns (18 + 14 = 32, 2 hub windows). + + mov cnt, cnt + add cnt, $+1 + long 13{18} + 14 + 132*16*26 + 16*(161 - 2) + +loop waitcnt cnt, eins ' initial sync point +' wrbyte indx, base ' assumed hubop + + call #pixels ' fetch foreground data (~92 hub windows) + + waitcnt cnt, zwei ' block until line is available + + rdlong bflag, bfadr wz + if_nz call #shadow ' draw shadow + cmp bflag, #0 wz + if_nz call #solid ' draw ball + + rol mask, #8 ' update shadow mask, it's unused + ' during 1st frame (msky == scry) + add indx, #1 ' line done, advance + cmpsub indx, scry wz ' optionally wrap line index + if_nz jmp #loop + +' per frame updates (during the first frame mask/shadow are off-screen) + + rdlong temp, blnk ' | + cmp temp, scry wz ' | + if_ne jmp #$-2 ' wait for ?/scry transition + + rdword mskx, crdx ' | + shl mskx, #16 ' | + sar mskx, #16 ' | + rdword msky, crdy ' | + shl msky, #16 ' | + sar msky, #16 ' update and sign-extend mask coordinates + + maxs mskx, scrx ' | + maxs msky, scry ' reasonable limit(s) (off-screen) + + mov shdx, mskx ' | + add shdx, #SOFFX ' | + mov shdy, msky ' | + add shdy, #SOFFY ' apply shadow offset(s) + + mov mskc, msky ' | + add mskc, #BSIZE -1 ' | + mov shdc, shdy ' | + add shdc, #BSIZE -1 ' bounding box setup + + long $00FF00FF ' | + mov mask, $-1 ' reset shadow mask (scry == 2n+?) + +eins long 100*16 ' initial line fetch +zwei long 164*16 ' remainder of two scan lines +drei long 132*16*28 ' skip all sync lines + + add cnt, drei + jmp #loop + +' support code + +pixels rdlong addr, feed wz ' get current buffer address + + if_z mov msky, scry ' move off-screen (disabled) + if_z jmp pixels_ret ' early exit + + mov ecnt, #BSIZE/4 + movd :set, #data + + mov temp, mskx ' | + and temp, #%11 wz ' observe alignment + + shl temp, #3 ' [4..0]: 24/16/8/0 + movs :two, temp + neg temp, temp ' [4..0]: 8/16/24/0 + movs :one, temp + + if_nz add ecnt, #1 ' need to process one more long + if_nz sub addr, #4 ' starting with addr[-1] + +:loop rdlong arg0, addr ' +0 = 00: DDCCBBAA, 01: ------DD + add addr, #4 ' +8 10: ----DDCC, 11: --DDCCBB + if_z jmp #:set ' -4 faster if aligned + + rdlong arg1, addr ' +0 = 00: n/a, 01: CCBBAA-- +:two shl arg1, #0-0 ' +8 10: BBAA----, 11: AA------ +:one shr arg0, #0-0 ' -4 + or arg0, arg1 ' +0 = + +:set mov 0-0, arg0 ' +4 + add $-1, dst1 ' +8 + + djnz ecnt, #:loop ' -4 + +pixels_ret ret + +solid cmps indx, msky wc ' | + if_nc cmps mskc, indx wc ' | + if_c jmp solid_ret ' vertical bounds check + + mov temp, indx + sub temp, msky + cmp temp, #BSIZE/2 wc + if_nc neg temp, temp + if_nc add temp, #BSIZE-1 + add temp, #table ' offset into table + + movs $+2, temp + neg arg2, #1 ' pipeline + mov arg0, 0-0 ' fetch offset/length pair + + mov arg1, arg0 + shr arg1, #16 wz ' length + + and arg0, #511 ' relative offset + add arg0, mskx ' absolute offset + + add arg2, arg0 ' | + add arg2, arg1 ' right side inclusive + + cmps arg2, #0 wc + if_nc cmps scrc, arg0 wc ' | + if_z_or_c jmp solid_ret ' horizontal bounds check + + cmps arg0, #0 wc ' | + if_c subabs arg1, arg0 ' | + if_c mov arg0, #0 ' clipped left + + cmps scrc, arg2 wc ' | + if_c mov arg1, scrx ' | + if_c sub arg1, arg0 ' clipped right side + +' arg0..(arg0+arg1-1) fits into the scanline buffer, draw the line + + mov addr, base + add addr, arg0 ' @byte[base][arg0] + + mov arg2, mskx ' | + and arg2, #%11 ' | + add arg2, arg0 ' | + sub arg2, mskx ' byte offset into data array + + shr arg1, #2 wz,nr ' special code for 1..3 + if_nz jmpret zero, #:full wc,nr ' carry set if taken (##) + + ' do an unaligned load + + mov arg0, arg2 ' remember for byte alignment + + shr arg2, #2 ' long offset + add arg2, #data ' long address + + movs $+2, arg2 + add arg2, #1 ' pipeline + mov arg3, 0-0 ' load 1st long + movs $+2, arg2 + test arg0, #%11 wz ' pipeline + mov arg2, 0-0 ' load 2nd long + + if_nz shl arg0, #3 ' 00: DDCCBBAA, 01: --DDCCBB + if_nz shr arg3, arg0 ' 10: ----DDCC, 11: ------DD + if_nz neg arg0, arg0 ' 00: n/a, 01: AA------ + if_nz shl arg2, arg0 ' 10: BBAA----, 11: CCBBAA-- + if_nz or arg3, arg2 ' combine both longs + + wrbyte arg3, addr + add addr, #1 + shr arg3, #8 + djnz arg1, #$-3 ' relaxed @ 2 hub windows/byte + + jmp solid_ret + +' length is prefix + 4n + suffix, split up and deal with it + +:full shr arg2, #2 ' long offset + add arg2, #data ' long address + + neg ecnt, arg0 ' 0123 >> 0321 + and ecnt, #%11 wz ' pixels in prefix + sub arg1, ecnt ' update length + if_z jmp #:core + + ' handle prefix + + shl arg0, #3 ' 1..3 >> 8..24 + rcr ecnt, arg0 ' create reverse mask (##) + + movs $+2, arg2 ' prefix data + rev ecnt, #0 ' adjust + + mov arg3, 0-0 ' | + andn arg3, ecnt ' only keep masked data + + rdlong quad, addr + and quad, ecnt + or quad, arg3 ' combine with background + wrlong quad, addr + + add arg2, #1 ' advance src + add addr, #4 ' advance dst + andn addr, #%11 ' | + + ' handle 4 + +:core test arg1, #%100 wz + if_nz movd $+2, arg2 + if_nz sub arg1, #4 ' update length + if_nz wrlong 0-0, addr + if_nz add addr, #4 ' advance dst + if_nz add arg2, #1 ' advance src + + ' handle 8n + + mov ecnt, arg1 ' remember for tail (%-??) + shr arg1, #3 wz ' check 8n count + if_z jmp #:suffix ' skip body + + mov frqb, addr + shr frqb, #1{/2} + + add arg2, arg1 ' | + add arg2, arg1 ' advance src + + movd :one, arg2 + sub :one, dst1 ' data[n][-1] + movd :two, arg2 + sub :two, dst2 ' data[n][-2] + + mov phsb, arg1 + shl phsb, #3 + mov addr, phsb ' advance dst + sub phsb, #1 ' 8n - 1 + +:one wrlong 0-0, phsb + sub $-1, dst2 + sub phsb, #7 wz +:two wrlong 0-0, phsb + sub $-1, dst2 + if_nz djnz phsb, #:one + + ' handle suffix + +:suffix and ecnt, #%11 wz ' suffix (unaligned) + if_z jmp solid_ret ' early exit + + shl ecnt, #3 ' 1..3 >> 8..24 + neg arg1, #1 ' create mask + + movs $+2, arg2 ' suffix data + shl arg1, ecnt ' adjust + + mov arg3, 0-0 ' | + andn arg3, arg1 ' only keep masked data + + rdlong quad, addr + and quad, arg1 + or quad, arg3 ' combine with background + wrlong quad, addr + +solid_ret ret + +shadow cmps indx, shdy wc ' | + if_nc cmps shdc, indx wc ' | + if_c jmp shadow_ret ' vertical bounds check + + mov temp, indx + sub temp, shdy + cmp temp, #BSIZE/2 wc + if_nc neg temp, temp + if_nc add temp, #BSIZE-1 + add temp, #table ' offset into table + + movs $+2, temp + neg arg2, #1 ' pipeline + mov arg0, 0-0 ' fetch offset/length pair + + mov arg1, arg0 + shr arg1, #16 wz ' length + + and arg0, #511 ' relative offset + add arg0, shdx ' absolute offset + + add arg2, arg0 ' | + add arg2, arg1 ' right side inclusive + + cmps arg2, #0 wc + if_nc cmps scrc, arg0 wc ' | + if_z_or_c jmp shadow_ret ' horizontal bounds check + + cmps arg0, #0 wc ' | + if_c subabs arg1, arg0 ' | + if_c mov arg0, #0 ' clipped left + + cmps scrc, arg2 wc ' | + if_c mov arg1, scrx ' | + if_c sub arg1, arg0 ' clipped right side + +' arg0..(arg0+arg1-1) fits into the scanline buffer, draw the line + + mov addr, base + add addr, arg0 ' @byte[base][arg0] + + shr arg1, #2 wz,wc,nr ' special code for 1..3 + if_nz jmpret zero, #:full wc,nr ' carry set if taken (##) + + test arg0, #1 wz + if_nz rol mask, #8 ' odd bytes only + + rdbyte quad, addr + and quad, mask + rol mask, #8 + wrbyte quad, addr + add addr, #1 + djnz arg1, #$-5 + + if_c_eq_z rol mask, #8 ' restore mask + + jmp shadow_ret + +:full neg ecnt, arg0 ' 0123 >> 0321 + and ecnt, #%11 wz ' pixels in prefix + sub arg1, ecnt ' update length + if_z jmp #:core + + shl arg0, #3 ' 1..3 >> 8..24 + rcr ecnt, arg0 ' create reverse mask (##) + rev ecnt, #0 ' adjust + + rdlong quad, addr + or ecnt, mask ' add shadow mask + and quad, ecnt + wrlong quad, addr + + add addr, #4 +'{rd/wrlong} andn addr, #%11 + +:core mov ecnt, arg1 ' remember for tail (%-??) + shr arg1, #2 wz ' check long count + if_z jmp #:tail ' skip body + + rdlong quad, addr + and quad, mask + cmp arg1, #1 wz + wrlong quad, addr + add addr, #4 + if_nz djnz arg1, #$-5 + +:tail and ecnt, #%11 wz ' suffix (unaligned) + if_z jmp shadow_ret ' early exit + + shl ecnt, #3 ' 1..3 >> 8..24 + neg arg1, #1 ' | + shl arg1, ecnt ' protect unused pixels + rdlong quad, addr + or arg1, mask ' add shadow mask + and quad, arg1 + wrlong quad, addr + +shadow_ret ret + +' initialised data and/or presets + +table word 48, 16, 43, 26, 39, 34, 36, 40, 34, 44, 32, 48, 30, 52, 28, 56 + word 26, 60, 25, 62, 23, 66, 22, 68, 21, 70, 19, 74, 18, 76, 17, 78 + word 16, 80, 15, 82, 14, 84, 13, 86, 13, 86, 12, 88, 11, 90, 10, 92 + word 10, 92, 9, 94, 8, 96, 8, 96, 7, 98, 7, 98, 6, 100, 6, 100 + word 5, 102, 5, 102, 4, 104, 4, 104, 3, 106, 3, 106, 3, 106, 2, 108 + word 2, 108, 2, 108, 2, 108, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110 + word 0, 112, 0, 112, 0, 112, 0, 112, 0, 112, 0, 112, 0, 112, 0, 112 + +feed long -12 ' | +crdx long -8 ' | +crdy long -6 ' | + ' quick access relative to par +blnk long -4 ' | +base long NEGX ' | + +dst1 long 1 << 9 ' dst +/-= 1 +dst2 long 2 << 9 ' dst +/-= 2 + +scrc long 399 ' upper limit (inclusive) +scrx long 400 + +bfadr long 448 +bflag long 0 + +' Stuff below is re-purposed for temporary storage. + +setup add crdx, par ' mask coordinates (%%) + add crdy, par ' | + add feed, par ' mask buffer location + + add base, par ' scanline buffer + add blnk, base wc ' frame indicator + + rdword indx, blnk wz ' (%%) + if_nz mov scry, indx wc ' (%%) + if_c_or_nz jmp #$-2 ' auto-detect res_y + +' The loop is only left once a non-zero value has been written to scry +' and indx transitions to zero afterwards. + + mov msky, scry ' move off-screen + mov shdy, scry ' | + + movi ctrb, #%0_11111_000 ' LOGIC always (loader support) + + add bfadr, par + jmp %%0 ' return + + fit + +' uninitialised data and/or temporaries + + org setup + +scry res 1 ' must be 1st..5th (%%) +indx res 1 ' | + +addr res 1 ' scanline reference +ecnt res 1 ' element count + +mask res 1 ' shadow mask + +mskc res 1 ' upper limit (inclusive) +mskx res 1 ' mask coordinates +msky res 1 ' signed 16bit + +shdc res 1 ' upper limit (inclusive) +shdx res 1 ' shadow coordinates +shdy res 1 ' signed 16bit + +arg0 res 1 +arg1 res 1 +arg2 res 1 +arg3 res 1 + +temp res 1 +quad res 1 + +data res BSIZE/4 +1{unaligned} + +tail fit + +CON + zero = $1F0 ' par (dst only) + + BSIZE = 112 ' mask width/height (4n) + SOFFX = 15 ' | + SOFFY = 15 ' shadow offset + +DAT +{{ + + TERMS OF USE: MIT License + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + associated documentation files (the "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included in all copies or substantial + portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT + LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +}} +DAT diff --git a/source/boing/boing-bel.spin b/source/boing/boing-bel.spin new file mode 100644 index 0000000000000000000000000000000000000000..c34ba910fc35cf7c73a8aefa6af53c5481d9ef2e GIT binary patch literal 19618 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 literal 0 HcmV?d00001 diff --git a/source/boing/boing-reg.spin b/source/boing/boing-reg.spin new file mode 100644 index 0000000000000000000000000000000000000000..9882c19a949dbb38150732bae2563786a3219e81 GIT binary patch literal 17532 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 Ar~m)} literal 0 HcmV?d00001 diff --git a/source/boing/boing.sid b/source/boing/boing.sid new file mode 100644 index 0000000000000000000000000000000000000000..14392677f92161227a5d2a9772936470055d6060 GIT binary patch literal 289000 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 hrlsGJM7seeO=5(=Ab@YTcN boing.sid +boing-adm.spin --> boing.adm +boing-bel.spin --> boing.bel +boing-reg.spin --> boing.bin (startdatei) + +- alle dateien müssen sich in einem verzeichis befinden +- weitere dmp-dateien werden wie in einem player abgespielt + +tastencodes +----------- + +[n] - nächster titel +[p] - pause +[esc] - programmende