remove boing demo (now in toolbox3)
This commit is contained in:
parent
c5ee354eab
commit
5564f5dcb1
14
README.md
14
README.md
|
@ -106,20 +106,6 @@ 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
|
||||
|
|
8
make.bat
8
make.bat
|
@ -42,14 +42,6 @@ REM Bin-Dateien erzeugen
|
|||
%BSTC% -L %libpath% %D% -b -O a .\source\3dmulti\3dmulti.spin
|
||||
move 3dmulti.binary "%sdtbox%/demo/3dmulti.bel"
|
||||
|
||||
%BSTC% -L %libpath% %D% -b -O a .\source\boing\boing-reg.spin
|
||||
move boing-reg.binary "%sdtbox%\demo\boing.bin"
|
||||
%BSTC% -L %libpath% %D% -b -O a .\source\boing\boing-bel.spin
|
||||
move 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
|
||||
move admflash.binary "%sdtbox%\demo\boing.adm"
|
||||
copy .\source\boing\boing.sid "%sdtbox%\demo\"
|
||||
|
||||
%BSTC% -L %libpath% %D% -D __TV_NTSC -b -O a .\source\boulder\bellatrix\bd_tv.spin
|
||||
move bd_tv.binary "%sdtbox%\boulder\bd_ntsc.bel"
|
||||
%BSTC% -L %libpath% %D% -D __TV_PAL -b -O a .\source\boulder\bellatrix\bd_tv.spin
|
||||
|
|
8
make.sh
8
make.sh
|
@ -40,14 +40,6 @@ 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
|
||||
|
|
|
@ -1,224 +0,0 @@
|
|||
''
|
||||
'' VGA scanline driver 400x300 - background renderer
|
||||
''
|
||||
'' Based on "Ball" demo for Gameduino
|
||||
'' Copyright (c) 2011 by James Bowman <jamesb@excamera.com>
|
||||
''
|
||||
'' Author: Marko Lukat
|
||||
'' Last modified: 2012/12/24
|
||||
'' Version: 0.9
|
||||
''
|
||||
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 ' background 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 the
|
||||
' first background renderer wrlong beyond the first video renderer line rdlong
|
||||
' if it were to render scanline -1.
|
||||
' After the waitcnt we have another 9 insn (36 + 18 + 10 = 64, 4 hub windows).
|
||||
|
||||
mov cnt, cnt
|
||||
add cnt, $+1
|
||||
long 13{18} + 10 + 132*16*26 + 16*(161 - 4)
|
||||
|
||||
loop waitcnt cnt, one ' initial sync point
|
||||
|
||||
call #fill ' fill background
|
||||
|
||||
add indx, #1 ' line done, advance
|
||||
cmpsub indx, scry wz ' optionally wrap line index
|
||||
if_z add cnt, two
|
||||
|
||||
|
||||
one long 132*16*2 ' skip two scan lines
|
||||
two long 132*16*28 ' skip all sync lines
|
||||
|
||||
jmp #loop
|
||||
|
||||
' support code
|
||||
|
||||
fill
|
||||
mov addr, indx
|
||||
shr addr, #1 wc
|
||||
add read, addr
|
||||
fill_ret long 0-0 ' pipeline
|
||||
read mov addr, $+3
|
||||
if_c shr addr, #16
|
||||
jmpret read, addr ' render background
|
||||
|
||||
word eins[5], zwei[3]
|
||||
word drei[21], zwei[3], drei[21], zwei[3], drei[21], zwei[3], drei[21], zwei[3]
|
||||
word drei[21], zwei[3], drei[21], zwei[3], drei[21], zwei[3], drei[21], zwei[3]
|
||||
word drei[21], zwei[3], drei[21], zwei[3], drei[21], zwei[3], drei[21], zwei[3]
|
||||
word eins[4]
|
||||
|
||||
eins mov addr, base ' 100(A)
|
||||
|
||||
mov gindx, gindx0
|
||||
mov gflag, #0
|
||||
|
||||
mov qcnt, #100
|
||||
:loop wrlong ty_A, addr
|
||||
add addr, #4
|
||||
djnz qcnt, #:loop
|
||||
|
||||
jmp fill_ret
|
||||
|
||||
zwei mov addr, base ' AB(48(CC))DA
|
||||
|
||||
cmp gflag, #0 wz
|
||||
if_z mov gflag, #1
|
||||
if_z rdword gline0, gindx
|
||||
if_z add gindx, #4
|
||||
|
||||
wrlong ty_A, addr
|
||||
add addr, #4
|
||||
wrlong ty_B, addr
|
||||
add addr, #4
|
||||
|
||||
mov qcnt, #96/2
|
||||
:loop wrlong ty_C, addr
|
||||
add addr, #4
|
||||
cmp qcnt, #1 wz ' last run?
|
||||
wrlong ty_C, addr
|
||||
add addr, #4
|
||||
if_ne djnz qcnt, #:loop
|
||||
|
||||
wrlong ty_D, addr
|
||||
add addr, #4
|
||||
wrlong ty_A, addr
|
||||
|
||||
jmp fill_ret
|
||||
|
||||
drei mov addr, base ' AB(16(DAAAAB))DA
|
||||
|
||||
mov gline, gline0
|
||||
mov gflag, #0
|
||||
|
||||
wrlong ty_A, addr
|
||||
add addr, #4
|
||||
wrlong ty_B, addr
|
||||
add addr, #4
|
||||
|
||||
mov qcnt, #16
|
||||
|
||||
:loop mov ty_x1, ty_D ' leere punkte
|
||||
mov ty_X2, ty_A
|
||||
mov ty_X3, ty_B
|
||||
shr gline,#1 wc
|
||||
if_nc jmp #:empty
|
||||
mov ty_X1, ty_C ' gefüllte punkte
|
||||
mov ty_X2, ty_C
|
||||
mov ty_X3, ty_C
|
||||
:empty
|
||||
wrlong ty_X1, addr
|
||||
add addr, #4
|
||||
cmp qcnt, #1 wz ' last run?
|
||||
'---------------------
|
||||
wrlong ty_X2, addr
|
||||
add addr, #4
|
||||
wrlong ty_X2, addr
|
||||
add addr, #4
|
||||
wrlong ty_X2, addr
|
||||
add addr, #4
|
||||
wrlong ty_X2, addr
|
||||
add addr, #4
|
||||
'---------------------
|
||||
:end wrlong ty_X3, addr
|
||||
add addr, #4
|
||||
if_ne djnz qcnt, #:loop
|
||||
|
||||
wrlong ty_D, addr
|
||||
add addr, #4
|
||||
wrlong ty_A, addr
|
||||
|
||||
jmp fill_ret
|
||||
|
||||
|
||||
|
||||
' initialised data and/or presets
|
||||
|
||||
blnk long -4
|
||||
base long NEGX
|
||||
|
||||
ty_A {----} long $01010101 * C0
|
||||
ty_B {---#} long $00010101 * C0 + $01000000 * C1
|
||||
ty_C {####} long $01010101 * C1
|
||||
ty_D {##--} long $01010000 * C0 + $00000101 * C1
|
||||
ty_X1 long 0
|
||||
ty_X2 long 0
|
||||
ty_X3 long 0
|
||||
|
||||
gindx0 long 400
|
||||
gindx long 0
|
||||
gline0 long 0
|
||||
gline long 0
|
||||
gflag long 0
|
||||
|
||||
' Stuff below is re-purposed for temporary storage.
|
||||
|
||||
setup 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.
|
||||
|
||||
add gindx0, par
|
||||
jmp %%0 ' return
|
||||
|
||||
fit
|
||||
|
||||
' uninitialised data and/or temporaries
|
||||
|
||||
scry res 1 ' must be 1st/2nd (%%)
|
||||
indx res 1 ' |
|
||||
|
||||
addr res 1
|
||||
qcnt res 1
|
||||
|
||||
tail fit
|
||||
|
||||
CON
|
||||
C0 = %%2220 ' background
|
||||
C1 = %%1110 ' grid
|
||||
|
||||
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
|
|
@ -1,42 +0,0 @@
|
|||
''
|
||||
'' 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
|
|
@ -1,553 +0,0 @@
|
|||
''
|
||||
'' VGA scanline driver 400x300 (single cog) - video driver and pixel generator
|
||||
''
|
||||
'' Author: Marko Lukat
|
||||
'' Last modified: 2013/01/11
|
||||
'' Version: 0.10
|
||||
''
|
||||
'' - timing signalled as SVGA 800x600
|
||||
'' - vertical blank start sets frame indicator (FI) to 0
|
||||
'' - once the Nth scanline has been fetched the FI is set to N+1
|
||||
''
|
||||
'' 20121007: added minimal translation table
|
||||
'' 20121229: now capable of using 64/256 colours (RRGGBBHV / RRGGBBgr + xxxxxxHV)
|
||||
'' - 64c: $FC/2/2 (vpin/vgrp/sgrp)
|
||||
'' - 256c: $FF/2/3
|
||||
'' 20121230: simplified vertical blanking code
|
||||
''
|
||||
'' Note: With idle state being %00 {%hv} the switch code can be further simplified.
|
||||
'' As this was the first converted driver I left the generic solution intact
|
||||
'' so it can easily be adapted for other drivers (with non-zero idle state).
|
||||
''
|
||||
OBJ
|
||||
system: "boing-bel-corecon"
|
||||
|
||||
PUB null
|
||||
'' This is not a top level object.
|
||||
|
||||
PUB init(ID, mailbox)
|
||||
|
||||
return system.launch(ID, @driver, mailbox)
|
||||
|
||||
DAT org 0 ' cog binary header
|
||||
|
||||
header_2048 long system#ID_2 ' magic number for a cog binary
|
||||
word header_size ' header size
|
||||
word system#MAPPING ' flags
|
||||
word 0, 0 ' start register, register count
|
||||
|
||||
word @__table - @header_2048 ' translation table byte offset
|
||||
|
||||
header_size fit 16
|
||||
|
||||
DAT org 0 ' video driver
|
||||
|
||||
driver jmpret $, #setup ' -4 once
|
||||
|
||||
mov dira, mask ' drive outputs
|
||||
|
||||
' horizontal timing 400(800) 20(40) 64(128) 44(88)
|
||||
' vertical timing 300(600) 1(1) 4(4) 23(23)
|
||||
|
||||
vsync mov lcnt, #0 ' |
|
||||
wrlong lcnt, blnk ' reset line counter (once)
|
||||
|
||||
mov vscl, full ' 32/528
|
||||
|
||||
' mov ecnt, #1
|
||||
waitvid sync, #%%0011 ' front porch
|
||||
' djnz ecnt, #$-1
|
||||
|
||||
xor sync, #$0101 ' active
|
||||
|
||||
mov ecnt, #4
|
||||
waitvid sync, #%%0011 ' vertical sync
|
||||
djnz ecnt, #$-1
|
||||
|
||||
xor sync, #$0101 ' inactive
|
||||
|
||||
mov ecnt, #23
|
||||
waitvid sync, #%%0011 ' back porch
|
||||
djnz ecnt, #$-1
|
||||
|
||||
' Vertical sync chain done, do visible area.
|
||||
|
||||
mov scnt, #res_y
|
||||
|
||||
:loop call #prefix ' sync and back porch
|
||||
jmpret suffix_ret, #emit_0 ' visible line and front porch
|
||||
|
||||
call #prefix ' sync and back porch
|
||||
jmpret suffix_ret, #emit_1 ' visible line and front porch
|
||||
|
||||
djnz scnt, #:loop ' repeat for all lines
|
||||
|
||||
jmp #vsync ' next frame
|
||||
|
||||
|
||||
prefix mov vscl, slow ' 32/108
|
||||
waitvid sync, #%%2011 ' latch sync and back porch
|
||||
|
||||
mov cnt, cnt ' cover sync pulse period (%%)
|
||||
add cnt, #9{14}+(64 * 4) ' because we drive sync lines
|
||||
waitcnt cnt, #135 ' manually next (%%)
|
||||
|
||||
mov outa, idle ' take over sync lines (##)
|
||||
prefix_ret ret
|
||||
|
||||
|
||||
suffix mov vscl, hs_f ' 1/20
|
||||
waitvid sync, #%%02 ' latch front porch
|
||||
|
||||
' waitvid
|
||||
' | S D e . . . R | mov vcfg | mov outa |
|
||||
' clock
|
||||
' │ │ │ │
|
||||
' PLL
|
||||
' pixel 1:4 │+4
|
||||
' │ │ pixel %%2 │ pixel %%0 |
|
||||
' outa
|
||||
|
||||
mov vcfg, vcfg_sync ' drive/change sync lines (##)
|
||||
mov outa, #0 ' stop interfering
|
||||
|
||||
if_nc wrlong lcnt, blnk ' report current line
|
||||
suffix_ret ret
|
||||
|
||||
' Even line emitter (fetch & emit).
|
||||
|
||||
emit_0 waitcnt cnt, #0 ' re-sync after back porch (%%)
|
||||
|
||||
' At this point the video h/w is driving the sync lines low (colour %%2).
|
||||
' outa has taken over long ago so we can switch configuration here.
|
||||
|
||||
mov vcfg, vcfg_norm ' -12 disconnect sync from video h/w (##)
|
||||
mov addr, base ' -8 working copy
|
||||
mov vscl, hvis ' -4 1/4
|
||||
|
||||
rdlong pal+$00, addr ' +0 =
|
||||
cmp pal+$00, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$01, addr ' +0 =
|
||||
cmp pal+$01, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$02, addr ' +0 =
|
||||
cmp pal+$02, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$03, addr ' +0 =
|
||||
cmp pal+$03, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$04, addr ' +0 =
|
||||
cmp pal+$04, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$05, addr ' +0 =
|
||||
cmp pal+$05, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$06, addr ' +0 =
|
||||
cmp pal+$06, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$07, addr ' +0 =
|
||||
cmp pal+$07, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$08, addr ' +0 =
|
||||
cmp pal+$08, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$09, addr ' +0 =
|
||||
cmp pal+$09, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$0A, addr ' +0 =
|
||||
cmp pal+$0A, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$0B, addr ' +0 =
|
||||
cmp pal+$0B, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$0C, addr ' +0 =
|
||||
cmp pal+$0C, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$0D, addr ' +0 =
|
||||
cmp pal+$0D, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$0E, addr ' +0 =
|
||||
cmp pal+$0E, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$0F, addr ' +0 =
|
||||
cmp pal+$0F, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4 0..63
|
||||
|
||||
rdlong pal+$10, addr ' +0 =
|
||||
cmp pal+$10, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$11, addr ' +0 =
|
||||
cmp pal+$11, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$12, addr ' +0 =
|
||||
cmp pal+$12, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$13, addr ' +0 =
|
||||
cmp pal+$13, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$14, addr ' +0 =
|
||||
cmp pal+$14, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$15, addr ' +0 =
|
||||
cmp pal+$15, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$16, addr ' +0 =
|
||||
cmp pal+$16, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$17, addr ' +0 =
|
||||
cmp pal+$17, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$18, addr ' +0 =
|
||||
cmp pal+$18, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$19, addr ' +0 =
|
||||
cmp pal+$19, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$1A, addr ' +0 =
|
||||
cmp pal+$1A, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$1B, addr ' +0 =
|
||||
cmp pal+$1B, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$1C, addr ' +0 =
|
||||
cmp pal+$1C, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$1D, addr ' +0 =
|
||||
cmp pal+$1D, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$1E, addr ' +0 =
|
||||
cmp pal+$1E, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$1F, addr ' +0 =
|
||||
cmp pal+$1F, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4 64..127
|
||||
|
||||
rdlong pal+$20, addr ' +0 =
|
||||
cmp pal+$20, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$21, addr ' +0 =
|
||||
cmp pal+$21, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$22, addr ' +0 =
|
||||
cmp pal+$22, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$23, addr ' +0 =
|
||||
cmp pal+$23, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$24, addr ' +0 =
|
||||
cmp pal+$24, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$25, addr ' +0 =
|
||||
cmp pal+$25, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$26, addr ' +0 =
|
||||
cmp pal+$26, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$27, addr ' +0 =
|
||||
cmp pal+$27, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$28, addr ' +0 =
|
||||
cmp pal+$28, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$29, addr ' +0 =
|
||||
cmp pal+$29, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$2A, addr ' +0 =
|
||||
cmp pal+$2A, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$2B, addr ' +0 =
|
||||
cmp pal+$2B, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$2C, addr ' +0 =
|
||||
cmp pal+$2C, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$2D, addr ' +0 =
|
||||
cmp pal+$2D, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$2E, addr ' +0 =
|
||||
cmp pal+$2E, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$2F, addr ' +0 =
|
||||
cmp pal+$2F, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4 128..191
|
||||
|
||||
rdlong pal+$30, addr ' +0 =
|
||||
cmp pal+$30, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$31, addr ' +0 =
|
||||
cmp pal+$31, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$32, addr ' +0 =
|
||||
cmp pal+$32, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$33, addr ' +0 =
|
||||
cmp pal+$33, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$34, addr ' +0 =
|
||||
cmp pal+$34, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$35, addr ' +0 =
|
||||
cmp pal+$35, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$36, addr ' +0 =
|
||||
cmp pal+$36, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$37, addr ' +0 =
|
||||
cmp pal+$37, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$38, addr ' +0 =
|
||||
cmp pal+$38, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$39, addr ' +0 =
|
||||
cmp pal+$39, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$3A, addr ' +0 =
|
||||
cmp pal+$3A, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$3B, addr ' +0 =
|
||||
cmp pal+$3B, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$3C, addr ' +0 =
|
||||
cmp pal+$3C, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$3D, addr ' +0 =
|
||||
cmp pal+$3D, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$3E, addr ' +0 =
|
||||
cmp pal+$3E, #%%3210 ' +8 WHOP
|
||||
add addr,#4 ' -4
|
||||
rdlong pal+$3F, addr ' +0 =
|
||||
cmp pal+$3F, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4 192..255
|
||||
|
||||
rdlong pal+$40, addr ' +0 =
|
||||
cmp pal+$40, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$41, addr ' +0 =
|
||||
cmp pal+$41, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$42, addr ' +0 =
|
||||
cmp pal+$42, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$43, addr ' +0 =
|
||||
cmp pal+$43, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$44, addr ' +0 =
|
||||
cmp pal+$44, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$45, addr ' +0 =
|
||||
cmp pal+$45, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$46, addr ' +0 =
|
||||
cmp pal+$46, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$47, addr ' +0 =
|
||||
cmp pal+$47, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$48, addr ' +0 =
|
||||
cmp pal+$48, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$49, addr ' +0 =
|
||||
cmp pal+$49, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$4A, addr ' +0 =
|
||||
cmp pal+$4A, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$4B, addr ' +0 =
|
||||
cmp pal+$4B, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$4C, addr ' +0 =
|
||||
cmp pal+$4C, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$4D, addr ' +0 =
|
||||
cmp pal+$4D, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$4E, addr ' +0 =
|
||||
cmp pal+$4E, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$4F, addr ' +0 =
|
||||
cmp pal+$4F, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4 256..319
|
||||
|
||||
rdlong pal+$50, addr ' +0 =
|
||||
cmp pal+$50, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$51, addr ' +0 =
|
||||
cmp pal+$51, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$52, addr ' +0 =
|
||||
cmp pal+$52, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$53, addr ' +0 =
|
||||
cmp pal+$53, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$54, addr ' +0 =
|
||||
cmp pal+$54, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$55, addr ' +0 =
|
||||
cmp pal+$55, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$56, addr ' +0 =
|
||||
cmp pal+$56, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$57, addr ' +0 =
|
||||
cmp pal+$57, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$58, addr ' +0 =
|
||||
cmp pal+$58, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$59, addr ' +0 =
|
||||
cmp pal+$59, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$5A, addr ' +0 =
|
||||
cmp pal+$5A, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$5B, addr ' +0 =
|
||||
cmp pal+$5B, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$5C, addr ' +0 =
|
||||
cmp pal+$5C, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$5D, addr ' +0 =
|
||||
cmp pal+$5D, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$5E, addr ' +0 =
|
||||
cmp pal+$5E, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$5F, addr ' +0 =
|
||||
cmp pal+$5F, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4 320..383
|
||||
|
||||
rdlong pal+$60, addr ' +0 =
|
||||
cmp pal+$60, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$61, addr ' +0 =
|
||||
cmp pal+$61, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$62, addr ' +0 =
|
||||
cmp pal+$62, #%%3210 ' +8 WHOP
|
||||
add addr, #4 ' -4
|
||||
rdlong pal+$63, addr ' +0 =
|
||||
cmp pal+$63, #%%3210 ' +8 WHOP
|
||||
add lcnt, #1 ' -4 384..399, line has been fetched
|
||||
|
||||
jmpret $, #suffix wc,nr ' +0 = chain call (carry clear)
|
||||
|
||||
' Odd line emitter (emit only).
|
||||
|
||||
emit_1 waitcnt cnt, #0 ' re-sync after back porch (%%)
|
||||
|
||||
' At this point the video h/w is driving the sync lines low (colour %%2).
|
||||
' outa has taken over long ago so we can switch configuration here.
|
||||
|
||||
mov vcfg, vcfg_norm ' -12 disconnect sync from video h/w (##)
|
||||
movd :vid, #pal+$00 ' -8 colour buffer
|
||||
mov vscl, hvis ' -4 1/4
|
||||
|
||||
mov ecnt, #100 -1 ' +0 = quad pixel count (last one separate)
|
||||
test $, #1 wc ' +4 set carry
|
||||
:vid cmp 0-0, #%%3210 ' +8 WHOP
|
||||
addx $-1, #511{+C} ' -4
|
||||
djnz ecnt, #:vid -1 ' +0 = maintain 16 cycle loop
|
||||
|
||||
cmp pal+$63, #%%3210 ' +8 WHOP
|
||||
|
||||
jmpret zero, #suffix wc,nr ' -4 chain call (carry set)
|
||||
|
||||
' initialised data and/or presets
|
||||
|
||||
idle long (hv_idle & $00FF) << (sgrp * 8)
|
||||
sync long (hv_idle ^ $0200) & $FFFF
|
||||
|
||||
hvis long 1 << 12 | 4 ' 1/4
|
||||
hs_f long 1 << 12 | 20 ' 1/20
|
||||
slow long 32 << 12 | 108 ' 32/108
|
||||
full long 32 << 12 | 528 ' 32/528
|
||||
|
||||
vcfg_norm long %0_01_1_00_000 << 23 | vgrp << 9 | vpin
|
||||
vcfg_sync long %0_01_1_00_000 << 23 | sgrp << 9 | %11
|
||||
|
||||
mask long vpin << (vgrp * 8) | %11 << (sgrp * 8)
|
||||
|
||||
blnk long -4
|
||||
base long +0
|
||||
|
||||
' Stuff below is re-purposed for temporary storage.
|
||||
|
||||
setup rdlong cnt, #0 ' +0 = clkfreq
|
||||
|
||||
add blnk, par ' +8 frame indicator
|
||||
neg href, cnt ' -4 hub window reference
|
||||
add base, par ' +0 = scanline buffer
|
||||
|
||||
' Upset video h/w and relatives.
|
||||
|
||||
movi ctra, #%0_00001_101 ' PLL, VCO/4
|
||||
movi frqa, #%0001_00000 ' 5MHz * 16 / 4 = 20MHz
|
||||
|
||||
mov vscl, hvis ' 1/4
|
||||
mov vcfg, vcfg_sync ' VGA, 4 colour mode
|
||||
|
||||
shr cnt, #10 ' ~1ms
|
||||
add cnt, cnt
|
||||
waitcnt cnt, #0 ' PLL needs to settle
|
||||
|
||||
' The first issued waitvid is a bit of a gamble if we don't know where the WHOP
|
||||
' is located. We could do some fancy math or simply issue a dummy waitvid.
|
||||
|
||||
waitvid zero, #0 ' dummy (first one is unpredictable)
|
||||
waitvid zero, #0 ' point of reference
|
||||
|
||||
add href, cnt ' get current sync slot
|
||||
shr href, #2 ' 4 system clocks per pixel
|
||||
neg href, href ' |
|
||||
and href, #%11 ' calculate adjustment
|
||||
|
||||
' WHOP is reasonably far away so we can update vscl without re-sync.
|
||||
|
||||
add vscl, href ' |
|
||||
waitvid zero, #0 ' stretch frame
|
||||
sub vscl, href ' |
|
||||
waitvid zero, #0 ' restore frame
|
||||
|
||||
' Setup complete, do the heavy lifting upstairs ...
|
||||
|
||||
jmp %%0 ' return
|
||||
|
||||
' uninitialised data and/or temporaries
|
||||
|
||||
org setup
|
||||
|
||||
href res 1 ' hub window reference
|
||||
|
||||
ecnt res 1 ' element count
|
||||
lcnt res 1 ' line counter
|
||||
scnt res 1 ' scanlines
|
||||
addr res 1 ' colour buffer reference
|
||||
|
||||
pal res 100 ' colour buffer
|
||||
|
||||
tail fit
|
||||
|
||||
DAT ' translation table
|
||||
|
||||
__table word (@__names - @__table)/2
|
||||
|
||||
word res_x
|
||||
word res_y
|
||||
|
||||
__names byte "res_x", 0
|
||||
byte "res_y", 0
|
||||
|
||||
CON
|
||||
zero = $1F0 ' par (dst only)
|
||||
vpin = $0FC ' pin group mask
|
||||
vgrp = 1 ' pin group
|
||||
sgrp = 1 ' pin group sync
|
||||
hv_idle = $01010101 * %00 {%hv} ' h/v sync inactive
|
||||
|
||||
res_x = 400 ' |
|
||||
res_y = 300 ' UI support
|
||||
|
||||
DAT
|
|
@ -1,762 +0,0 @@
|
|||
''
|
||||
'' VGA scanline driver 400x300 - image feeder
|
||||
''
|
||||
'' Based on "Ball" demo for Gameduino
|
||||
'' Copyright (c) 2011 by James Bowman <jamesb@excamera.com>
|
||||
''
|
||||
'' 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
|
|
@ -1,505 +0,0 @@
|
|||
''
|
||||
'' VGA scanline driver 400x300 - foreground renderer
|
||||
''
|
||||
'' Based on "Ball" demo for Gameduino
|
||||
'' Copyright (c) 2011 by James Bowman <jamesb@excamera.com>
|
||||
''
|
||||
'' 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
|
|
@ -1,286 +0,0 @@
|
|||
''
|
||||
'' VGA scanline driver 400x300 - demo
|
||||
''
|
||||
'' Based on "Ball" demo for Gameduino
|
||||
'' Copyright (c) 2011 by James Bowman <jamesb@excamera.com>
|
||||
''
|
||||
'' Author: Marko Lukat
|
||||
'' Last modified: 2012/12/24
|
||||
'' Version: 0.10
|
||||
''
|
||||
'' A few notes on timing. A (double) scan line lasts 2*(100+32) hub windows.
|
||||
'' The background renderer fills the scan line as soon as the video driver
|
||||
'' has read the relevant quad. At the same time the foreground renderer
|
||||
'' fetches its data line.
|
||||
''
|
||||
'' +-- video driver reads line N
|
||||
'' +-- background renderer fills line N+1
|
||||
'' +-- foreground renderer fetches data for line N+1
|
||||
'' |
|
||||
'' | +-- scanline N completely fetched
|
||||
'' | +-- background renderer idle
|
||||
'' | visible line area +-- foreground renderer draws shadow and ball
|
||||
'' | |
|
||||
'' ----------- 100 -----------#---32---
|
||||
'' ----------- 100 -----------+---32---
|
||||
'' ----------- 100 -----------#---32---
|
||||
'' |
|
||||
'' +-- video driver reads line N+1
|
||||
''
|
||||
CON
|
||||
_clkmode = XTAL1|PLL16X
|
||||
_xinfreq = 5_000_000
|
||||
|
||||
CON
|
||||
res_x = driver#res_x
|
||||
res_y = driver#res_y
|
||||
|
||||
OBJ
|
||||
driver: "boing-bel-driver"
|
||||
|
||||
back: "boing-bel-background"
|
||||
ball: "boing-bel-foreground"
|
||||
anim: "boing-bel-feeder"
|
||||
|
||||
keyb: "bel-keyb"
|
||||
gcon: "glob-con"
|
||||
|
||||
VAR
|
||||
long feeder ' @scan[-3]
|
||||
long coordinates ' @scan[-2]
|
||||
long frame ' @scan[-1]
|
||||
long scan[res_x / 4]
|
||||
long grid[12]
|
||||
long bflag
|
||||
|
||||
PUB main | cmd
|
||||
|
||||
init
|
||||
' boing
|
||||
|
||||
repeat
|
||||
case gc
|
||||
1: pc(keyb.gotkey) 'tastaturstatus senden
|
||||
2: pc(keyb.key) 'tastaturzeichen senden
|
||||
3: coordinates.word[0] := gw
|
||||
coordinates.word[1] := gw
|
||||
4: waitVBL
|
||||
5: boing
|
||||
6: bars{gc,gc,gc}
|
||||
7: grid_on
|
||||
8: grid_off
|
||||
9: show_on
|
||||
10: bar_on
|
||||
11: bflag := gc
|
||||
12: grid[gc] := gw
|
||||
99: reboot
|
||||
|
||||
PRI init
|
||||
|
||||
dira := db_in ' datenbus auf eingabe schalten
|
||||
outa[gcon#bus_hs] := 1 ' handshake inaktiv
|
||||
keyb.start(gcon#b_keybd, gcon#b_keybc) ' tastaturport starten
|
||||
driver.init(-1, @scan{0}) ' scanline driver
|
||||
back.init(-1, @scan{0}) ' background
|
||||
ball.init(-1, @scan{0}) ' foreground
|
||||
anim.init(-1, @scan{0}) ' image feeder
|
||||
grid_on
|
||||
bflag := 0
|
||||
anim.uncompress(FALSE) ' uncompress image
|
||||
|
||||
|
||||
CON ''------------------------------------------------- SUBPROTOKOLL-FUNKTIONEN
|
||||
|
||||
' hbeat --------+
|
||||
' clk -------+|
|
||||
' /wr ------+||
|
||||
' /hs -----+||| +------------------------- /cs
|
||||
' |||| | -------- d0..d7
|
||||
DB_IN = %00001001_00000000_00000000_00000000 'maske: dbus-eingabe
|
||||
DB_OUT = %00001001_00000000_00000000_11111111 'maske: dbus-ausgabe
|
||||
|
||||
M1 = %00000010_00000000_00000000_00000000
|
||||
M2 = %00000010_10000000_00000000_00000000 'busclk=1? & /cs=0?
|
||||
|
||||
M3 = %00000000_00000000_00000000_00000000
|
||||
M4 = %00000010_00000000_00000000_00000000 'busclk=0?
|
||||
|
||||
PUB pc(zeichen) 'chip: ein byte an regnatix senden
|
||||
''funktionsgruppe : chip
|
||||
''funktion : ein byte an regnatix senden
|
||||
''eingabe : byte
|
||||
''ausgabe : -
|
||||
|
||||
waitpeq(M1,M2,0) 'busclk=1? & prop2=0?
|
||||
dira := db_out 'datenbus auf ausgabe stellen
|
||||
outa[7..0] := zeichen 'daten ausgeben
|
||||
outa[gcon#bus_hs] := 0 'daten gültig
|
||||
waitpeq(M3,M4,0) 'busclk=0?
|
||||
dira := db_in 'bus freigeben
|
||||
outa[gcon#bus_hs] := 1 'daten ungültig
|
||||
|
||||
PUB gc:zeichen 'chip: ein byte von regnatix empfangen
|
||||
''funktionsgruppe : chip
|
||||
''funktion : ein byte von regnatix empfangen
|
||||
''eingabe : -
|
||||
''ausgabe : byte
|
||||
|
||||
waitpeq(M1,M2,0) 'busclk=1? & prop2=0?
|
||||
zeichen := ina[7..0] 'daten einlesen
|
||||
outa[gcon#bus_hs] := 0 'daten quittieren
|
||||
waitpeq(M3,M4,0) 'busclk=0?
|
||||
outa[gcon#bus_hs] := 1
|
||||
|
||||
|
||||
PUB pw(wert) 'sub: word senden
|
||||
''funktionsgruppe : sub
|
||||
''funktion : subprotokoll um einen long-wert an regnatix zu senden
|
||||
''eingabe : 16bit wert der gesendet werden soll
|
||||
''ausgabe : -
|
||||
''busprotokoll : [put.byte1][put.byte2]
|
||||
'' : [ hsb ][ ]
|
||||
|
||||
pc(wert >> 8)
|
||||
pc(wert)
|
||||
|
||||
PUB gw:wert 'sub: word empfangen
|
||||
''funktionsgruppe : sub
|
||||
''funktion : subprotokoll um einen 16bit-wert von regnatix zu empfangen
|
||||
''eingabe : -
|
||||
''ausgabe : 16bit-wert der empfangen wurde
|
||||
''busprotokoll : [get.byte1][get.byte2]
|
||||
'' : [ hsb ][ lsb ]
|
||||
|
||||
wert := gc << 8
|
||||
wert := wert + gc
|
||||
|
||||
PUB gl:wert 'sub: long empfangen
|
||||
''funktionsgruppe : sub
|
||||
''funktion : subprotokoll um einen long-wert von regnatix zu empfangen
|
||||
''eingabe : -
|
||||
''ausgabe : 32bit-wert der empfangen wurde
|
||||
''busprotokoll : [get.byte1][get.byte2][get.byte3][get.byte4]
|
||||
'' : [ hsb ][ ][ ][ lsb ]
|
||||
|
||||
wert := gc << 24 '32 bit empfangen hsb/lsb
|
||||
wert := wert + gc << 16
|
||||
wert := wert + gc << 8
|
||||
wert := wert + gc
|
||||
|
||||
CON ''------------------------------------------------- DEMO-FUNKTIONEN
|
||||
LBASE = 0
|
||||
RBASE = res_x - ball#BSIZE
|
||||
YBASE = res_y - ball#BSIZE
|
||||
|
||||
MBAR = %00000000_11111111
|
||||
BLINE = 1
|
||||
|
||||
PRI boing : r | bx, by, bxv, byv
|
||||
|
||||
bx := 0
|
||||
by := 0
|
||||
bxv := 2
|
||||
byv := 1
|
||||
|
||||
repeat
|
||||
bx += bxv
|
||||
by += byv
|
||||
|
||||
if bx < LBASE
|
||||
bx := constant(2*LBASE) - bx
|
||||
-bxv
|
||||
|
||||
if bx > RBASE
|
||||
bx := constant(2*RBASE) - bx
|
||||
-bxv
|
||||
|
||||
if by > YBASE
|
||||
by := constant(2*YBASE) - by
|
||||
-byv
|
||||
|
||||
ifnot ++r & 7 ' add some gravity
|
||||
byv++
|
||||
|
||||
repeat 1
|
||||
waitVBL
|
||||
coordinates.word{0} := bx ' |
|
||||
coordinates.word[1] := by ' update coordinates
|
||||
|
||||
PRI bars
|
||||
|
||||
grid[BLINE ] := bar(gc)
|
||||
grid[BLINE+2] := bar(gc)
|
||||
grid[BLINE+4] := bar(gc)
|
||||
|
||||
PRI bar(level):b
|
||||
|
||||
b := MBAR
|
||||
b := !(b >> (level & 7)) & MBAR
|
||||
b := b | b >< 16
|
||||
|
||||
PRI grid_on|i
|
||||
|
||||
repeat i from 0 to 11
|
||||
grid[i] := 0
|
||||
|
||||
PRI grid_off|i
|
||||
|
||||
repeat i from 0 to 11
|
||||
grid[i] := $FFFF
|
||||
|
||||
PRI show_on|i,n
|
||||
|
||||
n := %00000000_11111111
|
||||
|
||||
repeat 19
|
||||
repeat i from 11 to 0
|
||||
grid[i] := grid[i-1]
|
||||
n := n >> 1
|
||||
grid[0] := n | n >< 16
|
||||
waitcnt(cnt + clkfreq/30)
|
||||
|
||||
PRI bar_on
|
||||
|
||||
bar_up(BLINE )
|
||||
waitcnt(cnt + clkfreq/3)
|
||||
bar_up(BLINE+2)
|
||||
waitcnt(cnt + clkfreq/3)
|
||||
bar_up(BLINE+4)
|
||||
waitcnt(cnt + clkfreq/3)
|
||||
|
||||
PRI bar_up(upline)|i
|
||||
|
||||
repeat i from 11 to upline
|
||||
grid[(i+1) <# 11] := 0
|
||||
grid[i] := %00000111_11100000
|
||||
waitcnt(cnt+clkfreq/20)
|
||||
|
||||
PRI waitVBL
|
||||
|
||||
repeat
|
||||
until frame == res_y ' last line has been fetched
|
||||
repeat
|
||||
until frame <> res_y ' vertical blank starts (res_y/0 transition)
|
||||
|
||||
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
|
|
@ -1,272 +0,0 @@
|
|||
{{
|
||||
|
||||
}}
|
||||
|
||||
OBJ
|
||||
ios: "reg-ios"
|
||||
|
||||
CON
|
||||
|
||||
_CLKMODE = XTAL1 + PLL16X
|
||||
_XINFREQ = 5_000_000
|
||||
|
||||
SIDMASK = %00000000_00000000_00000000_00010000
|
||||
|
||||
VAR
|
||||
|
||||
long dmpreg
|
||||
long fcnt
|
||||
long fpos
|
||||
long datcnt 'zeiger für dateiliste
|
||||
byte fl_bye 'flag player beenden
|
||||
byte fn[12] 'puffer für dateinamen
|
||||
long dmu 'marker des aktuellen userverzeichnisses
|
||||
long bx,by,bxv,byv
|
||||
|
||||
PUB main | key
|
||||
|
||||
ios.start
|
||||
|
||||
ios.belload(string("boing.bel"))
|
||||
ios.sdclose
|
||||
|
||||
ifnot (ios.admgetspec & SIDMASK)
|
||||
ios.sddmset(ios#DM_USER) 'u-marker setzen
|
||||
dmu := ios.sddmget(ios#DM_USER) 'usermarker von administra holen
|
||||
ios.admload(string("boing.adm"))
|
||||
ios.sddmput(ios#DM_USER,dmu) 'usermarker wieder in administra setzen
|
||||
ios.sddmact(ios#DM_USER) 'u-marker aktivieren
|
||||
|
||||
play_count
|
||||
repeat
|
||||
intro
|
||||
\boing(string("boing.sid"))
|
||||
play_dir
|
||||
|
||||
ios.belreset
|
||||
ios.admreset
|
||||
waitcnt(cnt+clkfreq*2)
|
||||
ios.stop
|
||||
|
||||
PRI esc_key
|
||||
|
||||
if ios.g0_keystat
|
||||
case ios.g0_keycode
|
||||
27:
|
||||
'ESC - geordneter rücksturz zur erde... :)
|
||||
ios.sid_dmpstop 'ok, erstmal die mucke aus
|
||||
ios.sid_mute(3)
|
||||
ios.belreset
|
||||
ios.sddmset(ios#DM_USER) 'u-marker setzen
|
||||
dmu := ios.sddmget(ios#DM_USER) 'usermarker von administra holen
|
||||
ios.admreset
|
||||
waitcnt(cnt+clkfreq*2)
|
||||
ios.sddmput(ios#DM_USER,dmu) 'usermarker wieder in administra setzen
|
||||
ios.sddmact(ios#DM_USER) 'u-marker aktivieren
|
||||
credits
|
||||
ios.stop
|
||||
"n":
|
||||
ios.sid_dmpstop
|
||||
ios.sid_mute(3)
|
||||
abort
|
||||
"p":
|
||||
ios.sid_dmppause
|
||||
|
||||
PRI credits
|
||||
|
||||
ios.curoff
|
||||
ios.printcls
|
||||
ios.printnl
|
||||
ios.print(string("Bouncing Ball for Hive - 2013 ",$0d,$0d))
|
||||
ios.print(string("Graphics-Code : kuroneko",$0d))
|
||||
ios.print(string("SidCog : Ahle2 ",$0d))
|
||||
ios.print(string("Hive-Code : drohne235",$0d,$0d))
|
||||
|
||||
ios.curon
|
||||
|
||||
CON 'sd-player
|
||||
PRI play_dir|stradr,len,i 'alle songs auf der sd-card abspielen
|
||||
|
||||
datcnt := 0 'zum listenanfang
|
||||
repeat i from 0 to fcnt-1 'dateiliste abspielen
|
||||
fpos := i + 1
|
||||
play_dir_rdlst(@fn)
|
||||
\boing(@fn)
|
||||
|
||||
PRI play_count|stradr,i
|
||||
|
||||
ios.sddir 'kommando: verzeichnis öffnen
|
||||
datcnt := 0 'zum listenanfang
|
||||
fcnt := 0 'zähler für dateianzahl
|
||||
fl_bye := 0
|
||||
repeat while (stradr := ios.sdnext) 'dateiliste einlesen
|
||||
if str_find(stradr,string(".DMP"))
|
||||
fcnt++
|
||||
play_dir_wrlst(stradr)
|
||||
|
||||
PRI play_dir_wrlst(stradr)|len,i 'kopiert dateinamen in liste
|
||||
len := strsize(stradr)
|
||||
repeat i from 0 to len-1
|
||||
ios.ram_wrbyte(ios#usrmod,byte[stradr][i],datcnt++)
|
||||
ios.ram_wrbyte(ios#usrmod,0,datcnt++)
|
||||
|
||||
PRI play_dir_rdlst(stradr)|i,n 'liest dateinamen aus list
|
||||
i := 0
|
||||
repeat
|
||||
n := ios.ram_rdbyte(ios#usrmod,datcnt++)
|
||||
byte[stradr][i++] := n
|
||||
while n <> 0
|
||||
|
||||
PRI str_find(string_1, string_2) : buffer | counter 'sys: string suchen
|
||||
|
||||
'' ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
'' │ Searches a string of characters for the first occurence of the specified string of characters. │
|
||||
'' │ │
|
||||
'' │ Returns the address of that string of characters if found and zero if not found. │
|
||||
'' │ │
|
||||
'' │ string1 - A pointer to the string of characters to search. │
|
||||
'' │ string2 - A pointer to the string of characters to find in the string of characters to search. │
|
||||
'' └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
repeat strsize(string_1--)
|
||||
|
||||
if(byte[++string_1] == byte[string_2])
|
||||
|
||||
repeat counter from 0 to (strsize(string_2) - 1)
|
||||
|
||||
if(byte[string_1][counter] <> byte[string_2][counter])
|
||||
buffer~~
|
||||
|
||||
ifnot(buffer~)
|
||||
return string_1
|
||||
|
||||
CON
|
||||
|
||||
res_x = 400
|
||||
res_y = 300
|
||||
|
||||
LBASE = 0
|
||||
RBASE = res_x - 112
|
||||
YBASE = res_y - 112
|
||||
|
||||
LSHIFT = 8
|
||||
|
||||
PRI intro
|
||||
|
||||
ball_on(0)
|
||||
grid_on
|
||||
pause(3)
|
||||
bar_on
|
||||
pause(3)
|
||||
|
||||
PRI boing(stradr)|r,b1,b2,b3,status
|
||||
|
||||
bx := 0
|
||||
by := 0
|
||||
bxv := 2
|
||||
byv := 1
|
||||
ball_on(1)
|
||||
ios.sid_mdmpplay(stradr) ' läuft auf sid2
|
||||
repeat
|
||||
bx += bxv
|
||||
by += byv
|
||||
if bx < LBASE
|
||||
bx := constant(2*LBASE) - bx
|
||||
-bxv
|
||||
if bx > RBASE
|
||||
bx := constant(2*RBASE) - bx
|
||||
-bxv
|
||||
if by > YBASE
|
||||
by := constant(2*YBASE) - by
|
||||
-byv
|
||||
ifnot ++r & 7 ' add some gravity
|
||||
byv++
|
||||
status := ios.sid_dmpstatus 'playerstatus abfragen
|
||||
dmpreg := ios.sid_dmpreg
|
||||
b1 := (word[dmpreg + 0]>>LSHIFT) #> 1
|
||||
b2 := (word[dmpreg + 2]>>LSHIFT) #> 1
|
||||
b3 := (word[dmpreg + 4]>>LSHIFT) #> 1
|
||||
bars(b1,b2,b3)
|
||||
setBall(bx,by)
|
||||
esc_key
|
||||
waitVBL
|
||||
while status
|
||||
ios.sid_dmpstop
|
||||
|
||||
PRI keystat : char
|
||||
|
||||
ios.bus_putchar2(1)
|
||||
return ios.bus_getchar2
|
||||
|
||||
PRI waitVBL
|
||||
|
||||
ios.bus_putchar2(4)
|
||||
|
||||
PRI setBall(x,y)
|
||||
|
||||
ios.bus_putchar2(3)
|
||||
ios.bus_putword2(x)
|
||||
ios.bus_putword2(y)
|
||||
|
||||
PRI boing_test
|
||||
|
||||
ios.bus_putchar2(5)
|
||||
|
||||
PRI bars(b1,b2,b3)
|
||||
|
||||
ios.bus_putchar2(6)
|
||||
ios.bus_putchar2(b1)
|
||||
ios.bus_putchar2(b2)
|
||||
ios.bus_putchar2(b3)
|
||||
|
||||
PRI grid_on
|
||||
|
||||
ios.bus_putchar2(7)
|
||||
|
||||
PRI grid_off
|
||||
|
||||
ios.bus_putchar2(8)
|
||||
|
||||
PRI show_on
|
||||
|
||||
ios.bus_putchar2(9)
|
||||
|
||||
PRI bar_on
|
||||
|
||||
ios.bus_putchar2(10)
|
||||
|
||||
PRI ball_on(bflag)
|
||||
|
||||
ios.bus_putchar2(11)
|
||||
ios.bus_putchar2(bflag)
|
||||
|
||||
PRI grid(line,val)
|
||||
|
||||
ios.bus_putchar2(3)
|
||||
ios.bus_putword2(line)
|
||||
ios.bus_putword2(val)
|
||||
|
||||
PRI pause(sec)
|
||||
|
||||
waitcnt(cnt + clkfreq * sec)
|
||||
|
||||
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. │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
}}
|
Binary file not shown.
|
@ -1,20 +0,0 @@
|
|||
Bing Demo
|
||||
=========
|
||||
|
||||
Sourcen
|
||||
-------
|
||||
|
||||
boing.sid --> 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
|
Loading…
Reference in New Issue