(inle.tal) Added project
This commit is contained in:
parent
4f6a14731a
commit
d05426e2ea
|
@ -0,0 +1,25 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
ID="inle"
|
||||
ASM="uxnasm"
|
||||
EMU="uxnemu"
|
||||
LIN="uxncli $HOME/roms/uxnlin.rom"
|
||||
SRC="${ID}.tal"
|
||||
DST="${ID}.rom"
|
||||
CPY="$HOME/roms"
|
||||
ARG=""
|
||||
|
||||
if [[ "$*" == *"--lint"* ]]
|
||||
then
|
||||
$LIN $SRC
|
||||
fi
|
||||
|
||||
$ASM $SRC $DST
|
||||
|
||||
if [[ "$*" == *"--save"* ]]
|
||||
then
|
||||
cp $DST $CPY
|
||||
fi
|
||||
|
||||
$EMU $DST $ARG
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
@font ( block8 )
|
||||
0000 0000 0000 0000 1010 1010 1000 1000
|
||||
2828 0000 0000 0000 44fe 4444 44fe 4400
|
||||
107e 807c 02fc 1000 0044 0810 2044 0000
|
||||
7884 8864 9a84 7a00 1020 0000 0000 0000
|
||||
2040 4040 4040 2000 0804 0404 0404 0800
|
||||
0044 2810 2844 0000 0010 107c 1010 0000
|
||||
0000 0000 0010 2000 0000 007c 0000 0000
|
||||
0000 0000 0000 1000 0204 0810 2040 8000
|
||||
7c82 8282 8282 7c00 3010 1010 1010 3800
|
||||
7c82 027c 8080 fe00 7c82 021c 0282 7c00
|
||||
2242 82fe 0202 0200 fe80 807c 0282 7c00
|
||||
7c82 80fc 8282 7c00 fe82 0408 0810 1000
|
||||
7c82 827c 8282 7c00 7c82 827e 0202 0200
|
||||
0000 1000 1000 0000 0000 1000 1010 2000
|
||||
0008 1020 1008 0000 0000 7c00 7c00 0000
|
||||
0010 0804 0810 0000 7c82 820c 1000 1000
|
||||
7c82 92aa aa92 6400 7c82 82fe 8282 8200
|
||||
fc82 82fc 8282 fc00 7c82 8080 8082 7c00
|
||||
fc82 8282 8282 fc00 fe80 80f0 8080 fe00
|
||||
fe80 80f0 8080 8000 7c82 808e 8282 7c00
|
||||
8282 82fe 8282 8200 3810 1010 1010 3800
|
||||
0602 0202 0282 7c00 8284 88f0 8884 8200
|
||||
8080 8080 8080 fe00 c6aa 9292 9292 9200
|
||||
c2a2 a292 8a8a 8600 7c82 8282 8282 7c00
|
||||
fc82 82fc 8080 8000 7c82 8282 8a84 7a00
|
||||
fc82 82fc 8282 8200 7c82 807c 0282 7c00
|
||||
fe10 1010 1010 1000 8282 8282 8286 7a00
|
||||
8282 8282 4428 1000 9292 9292 92aa c600
|
||||
8244 2810 2844 8200 8282 4428 1010 1000
|
||||
fe02 0c10 6080 fe00 6040 4040 4040 6000
|
||||
8040 2010 0804 0200 0c04 0404 0404 0c00
|
||||
1028 0000 0000 0000 0000 0000 0000 fe00
|
||||
1008 0000 0000 0000 0000 7c02 7e82 7e00
|
||||
0000 fc82 fc82 fc00 0000 7c82 8082 7c00
|
||||
0000 0202 7e82 7e00 0000 7c82 fc80 7e00
|
||||
0000 7c82 e080 8000 0000 7c82 7e02 fc00
|
||||
0000 8080 fc82 8200 0000 1000 1010 1000
|
||||
0000 fe02 0282 7c00 0000 8284 f884 8200
|
||||
0000 8080 8080 7e00 0000 6c92 9292 9200
|
||||
0000 bcc2 8282 8200 0000 7c82 8282 7c00
|
||||
0000 fc82 fc80 8000 0000 7c82 7e02 0200
|
||||
0000 bcc2 8080 8000 0000 7e80 7c02 fc00
|
||||
0000 fe10 1010 1000 0000 8282 8282 7c00
|
||||
0000 8282 4428 1000 0000 9292 9292 6c00
|
||||
0000 8244 3844 8200 0000 8282 7e02 7c00
|
||||
0000 fe02 7c80 fe00 2040 4080 4040 2000
|
||||
1010 1010 1010 1000 0804 0402 0404 0800
|
||||
0000 0032 4c00 0000 0000 0000 0000 0000
|
Binary file not shown.
|
@ -0,0 +1,910 @@
|
|||
( Inle )
|
||||
|
||||
|00 @System &vector $2 &pad $6 &r $2 &g $2 &b $2
|
||||
|10 @Console &vector $2 &read $1 &pad $5 &write $1
|
||||
|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
|
||||
|80 @Controller &vector $2 &button $1 &key $1
|
||||
|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &chord $1
|
||||
|c0 @DateTime &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1
|
||||
|
||||
%LEAK { #010e DEO }
|
||||
|
||||
( TODOs
|
||||
- flip player2 sprite
|
||||
- Erase stroke after shot
|
||||
- score
|
||||
- moving
|
||||
- damage )
|
||||
|
||||
( structs )
|
||||
|
||||
%/x { }
|
||||
%/y { INC INC }
|
||||
%/force { #04 ADD }
|
||||
%/angle { #06 ADD }
|
||||
|
||||
|0000 ( zeropage )
|
||||
|
||||
@stage
|
||||
&w $1 &h $1 &id $2
|
||||
@game
|
||||
&turn $1 &timer $1
|
||||
@wind
|
||||
&rate $2 &force $2
|
||||
@player1
|
||||
&x $2 &y $2
|
||||
&force $2 &angle $1 &name $2
|
||||
@player2
|
||||
&x $2 &y $2
|
||||
&force $2 &angle $1 &name $2
|
||||
@clouds
|
||||
&ax $2 &ay $2 &bx $2 &by $2 &cx $2 &cy $2
|
||||
@bullet
|
||||
&x $2 &y $2
|
||||
&vx $2 &vy $2
|
||||
&alive $1 &age $2
|
||||
@line
|
||||
&x $2 &y $2 &dx $2 &dy $2 &e1 $2
|
||||
|
||||
|0100 ( -> )
|
||||
|
||||
( theme )
|
||||
#0a6f .System/r DEO2
|
||||
#05cf .System/g DEO2
|
||||
#0caf .System/b DEO2
|
||||
( vectors )
|
||||
;on-control .Controller/vector DEO2
|
||||
;on-frame .Screen/vector DEO2
|
||||
( random )
|
||||
;prng-init JSR2
|
||||
( get stage )
|
||||
.Screen/width DEI2 #03 SFT2 NIP .stage/w STZ
|
||||
.Screen/height DEI2 #03 SFT2 NIP .stage/h STZ
|
||||
( terrain )
|
||||
;start-game JSR2
|
||||
|
||||
LEAK
|
||||
|
||||
BRK
|
||||
|
||||
@on-control ( -> )
|
||||
|
||||
;get-player JSR2
|
||||
.Controller/button DEI
|
||||
[ #01 ] NEQk NIP ,&no-a JCN OVR ;fire JSR2 &no-a
|
||||
[ #10 ] NEQk NIP ,&no-u JCN OVR ;incr-angle JSR2 &no-u
|
||||
[ #20 ] NEQk NIP ,&no-d JCN OVR ;decr-angle JSR2 &no-d
|
||||
[ #40 ] NEQk NIP ,&no-l JCN OVR ;decr-force JSR2 &no-l
|
||||
[ #80 ] NEQk NIP ,&no-r JCN OVR ;incr-force JSR2 &no-r
|
||||
POP2
|
||||
|
||||
LEAK
|
||||
|
||||
BRK
|
||||
|
||||
@on-frame ( -> )
|
||||
|
||||
( handle bullet )
|
||||
.bullet/alive LDZ #01 NEQ ,&no-bullet JCN
|
||||
;update-bullet JSR2
|
||||
&no-bullet
|
||||
( animation )
|
||||
.game/timer LDZ #07 AND ,&skip JCN
|
||||
;get-player JSR2 #03 ;draw-arrow JSR2
|
||||
#01 ;draw-flag JSR2
|
||||
&skip
|
||||
.game/timer LDZk INC SWP STZ
|
||||
LEAK
|
||||
|
||||
BRK
|
||||
|
||||
@start-game ( -- )
|
||||
|
||||
;set-terrain JSR2
|
||||
;set-wind JSR2
|
||||
;place-players JSR2
|
||||
;place-clouds JSR2
|
||||
;prng JSR2 .stage/id STZ2
|
||||
( drawing )
|
||||
#02 ;draw-stage JSR2
|
||||
( name player )
|
||||
;prng JSR2 .player1/name STZ2
|
||||
;prng JSR2 .player2/name STZ2
|
||||
( default force )
|
||||
#0004 DUP2 .player1/force STZ2 .player2/force STZ2
|
||||
( initial drawing )
|
||||
.player1 ;draw-player JSR2
|
||||
.player2 ;draw-player JSR2
|
||||
.player1 ;select-player JSR2
|
||||
;next-turn JSR2
|
||||
;next-turn JSR2
|
||||
|
||||
JMP2r
|
||||
|
||||
@set-wind ( -- )
|
||||
|
||||
#0001 #0000 [ ;prng JSR2 NIP #01 AND JMP ] SWP2 SUB2 .wind/force STZ2
|
||||
;prng JSR2 #0003 AND2 .wind/rate STZ2
|
||||
|
||||
JMP2r
|
||||
|
||||
@select-player ( player -- )
|
||||
|
||||
( nothing yet ) POP
|
||||
|
||||
JMP2r
|
||||
|
||||
@next-turn ( -- )
|
||||
|
||||
( stop all bullets )
|
||||
#00 .bullet/alive STZ
|
||||
|
||||
( clear )
|
||||
;get-player JSR2
|
||||
DUP #00 ;draw-arrow JSR2
|
||||
DUP #00 ;draw-force JSR2
|
||||
#40 ;draw-crosshair JSR2
|
||||
|
||||
#00 ;draw-clouds JSR2
|
||||
#00 ;draw-flag JSR2
|
||||
|
||||
( move clouds )
|
||||
.clouds/ax LDZ2k #0008 ADD2 ROT STZ2
|
||||
.clouds/bx LDZ2k #0004 ADD2 ROT STZ2
|
||||
.clouds/cx LDZ2k INC2 INC2 ROT STZ2
|
||||
|
||||
( draw )
|
||||
#02 ;draw-stage JSR2
|
||||
|
||||
( inc ) .game/turn LDZk INC SWP STZ
|
||||
|
||||
( flip wind )
|
||||
.game/turn LDZ #07 AND ,&no-wind JCN
|
||||
;set-wind JSR2
|
||||
&no-wind
|
||||
|
||||
( draw )
|
||||
.player1 ;draw-name JSR2
|
||||
.player2 ;draw-name JSR2
|
||||
.player1 ;draw-player JSR2
|
||||
.player2 ;draw-player JSR2
|
||||
;get-player JSR2
|
||||
DUP #00 ;draw-arrow JSR2
|
||||
DUP #01 ;draw-force JSR2
|
||||
#4a ;draw-crosshair JSR2
|
||||
|
||||
JMP2r
|
||||
|
||||
@get-player ( -- player )
|
||||
|
||||
.player2 .player1 .game/turn LDZ [ #01 AND JMP SWP POP ]
|
||||
|
||||
JMP2r
|
||||
|
||||
@get-other ( -- player )
|
||||
|
||||
.player1 .player2 .game/turn LDZ [ #01 AND JMP SWP POP ]
|
||||
|
||||
JMP2r
|
||||
|
||||
@place-players ( -- )
|
||||
|
||||
( player1 )
|
||||
#0008
|
||||
DUP ;create-platform JSR2 STH
|
||||
INC2 #40 SFT2 .player1/x STZ2
|
||||
#00 STHr #40 SFT2 #0008 SUB2 .player1/y STZ2
|
||||
( player2 )
|
||||
.Screen/width DEI2 #03 SFT2 #0008 SUB2
|
||||
DUP ;create-platform JSR2 STH
|
||||
INC2 #40 SFT2 .player2/x STZ2
|
||||
#00 STHr #40 SFT2 #0008 SUB2 .player2/y STZ2
|
||||
|
||||
JMP2r
|
||||
|
||||
@place-clouds ( -- )
|
||||
|
||||
;prng JSR2 ADD .stage/w LDZ ( mod ) DIVk MUL SUB #00 SWP #40 SFT2 .clouds/ax STZ2
|
||||
#0030 .clouds/ay STZ2
|
||||
;prng JSR2 ADD .stage/w LDZ ( mod ) DIVk MUL SUB #00 SWP #40 SFT2 .clouds/bx STZ2
|
||||
#0060 .clouds/by STZ2
|
||||
;prng JSR2 ADD .stage/w LDZ ( mod ) DIVk MUL SUB #00 SWP #40 SFT2 .clouds/cx STZ2
|
||||
#0090 .clouds/cy STZ2
|
||||
|
||||
JMP2r
|
||||
|
||||
( terrain )
|
||||
|
||||
@set-terrain ( -- )
|
||||
|
||||
.stage/w LDZ INC INC #00
|
||||
&loop
|
||||
( height/2 ) .stage/h LDZ #01 SFT
|
||||
( rand ) ;prng JSR2 #0a SFT2 NIP ADD #01 SFT
|
||||
( store ) OVR #00 SWP ;terrain ADD2 STA
|
||||
INC GTHk ,&loop JCN
|
||||
POP2
|
||||
( soften )
|
||||
#0800
|
||||
&loop-soften
|
||||
,soften JSR
|
||||
INC GTHk ,&loop-soften JCN
|
||||
POP2
|
||||
|
||||
JMP2r
|
||||
|
||||
@soften ( -- )
|
||||
|
||||
.stage/w LDZ #00
|
||||
&loop2
|
||||
( a ) #00 OVR ;terrain ADD2 LDA STH
|
||||
( b ) #00 OVR INC ;terrain ADD2 LDA STH
|
||||
( c ) #00 OVR INC INC ;terrain ADD2 LDA STH
|
||||
#00 STHr #00 STHr ADD2 #00 STHr ADD2 #0003 DIV2 NIP
|
||||
( store ) OVR #00 SWP ;terrain ADD2 STA
|
||||
INC GTHk ,&loop2 JCN
|
||||
POP2
|
||||
|
||||
JMP2r
|
||||
|
||||
@create-platform ( x -- height )
|
||||
|
||||
#01 SUB
|
||||
#00 SWP ;terrain ADD2 DUP2
|
||||
( average ) LDAk STH INC2 LDAk STH INC2 ADDr LDAk STH INC2 ADDr LDA STH ADDr
|
||||
LITr 04 DIVr
|
||||
( flatten ) STHkr ROT ROT STAk INC2 STAk INC2 STAk INC2 STA
|
||||
STHr
|
||||
|
||||
JMP2r
|
||||
|
||||
|
||||
|
||||
.bullet/age LDZ2 .wind/rate LDZ2 INC2 #30 SFT2 ( mod2 ) DIV2k MUL2 SUB2 ORA ,&no-wind JCN
|
||||
.bullet/vx LDZ2 .wind/force LDZ2 ADD2 .bullet/vx STZ2
|
||||
&no-wind
|
||||
|
||||
@update-bullet ( -- )
|
||||
|
||||
( undraw )
|
||||
#40 ;draw-bullet JSR2
|
||||
;collide-bounds JSR2 ;&hit-bound JCN2
|
||||
;collide-ground JSR2 ;&hit-ground JCN2
|
||||
;collide-clouds JSR2 ;&hit-cloud JCN2
|
||||
;collide-other JSR2 ;&hit-other JCN2
|
||||
;collide-self JSR2 ;&hit-self JCN2
|
||||
( origin )
|
||||
.bullet/x LDZ2 ,&x STR2
|
||||
.bullet/y LDZ2 ,&y STR2
|
||||
( update bullet )
|
||||
.bullet/x LDZ2 .bullet/vx LDZ2 ADD2 .bullet/x STZ2
|
||||
.bullet/y LDZ2 .bullet/vy LDZ2 SUB2 .bullet/y STZ2
|
||||
( apply wind )
|
||||
( apply gravity )
|
||||
.bullet/vy LDZ2
|
||||
#0001 SUB2 .bullet/vy STZ2
|
||||
( line )
|
||||
.bullet/y LDZ2 #8000 GTH2 ,&offscreen JCN
|
||||
,&y LDR2 #8000 GTH2 ,&offscreen JCN
|
||||
.bullet/x LDZ2 #8000 GTH2 ,&offscreen JCN
|
||||
,&x LDR2 #8000 GTH2 ,&offscreen JCN
|
||||
[ LIT2 &x $2 ] #01 SFT2 [ LIT2 &y $2 ] #01 SFT2
|
||||
.bullet/x LDZ2 #01 SFT2 .bullet/y LDZ2 #01 SFT2 #01 ;draw-line JSR2
|
||||
&offscreen
|
||||
.bullet/age LDZ2k INC2 ROT STZ2
|
||||
#43 ;draw-bullet JSR2
|
||||
|
||||
JMP2r
|
||||
&hit-bound
|
||||
;next-turn JSR2
|
||||
JMP2r
|
||||
&hit-ground
|
||||
#00 ;draw-stage JSR2
|
||||
.bullet/x LDZ2 #04 SFT2 ;terrain ADD2 STH2k LDA INC STH2r STA
|
||||
;next-turn JSR2
|
||||
JMP2r
|
||||
&hit-cloud
|
||||
;next-turn JSR2
|
||||
JMP2r
|
||||
&hit-other
|
||||
#aaaa ;print JSR2 #0a18 DEO
|
||||
;next-turn JSR2
|
||||
JMP2r
|
||||
&hit-self
|
||||
;next-turn JSR2
|
||||
JMP2r
|
||||
|
||||
@collide-ground ( -- hit )
|
||||
|
||||
.bullet/y LDZ2 #8000 GTH2 ,&offscreen JCN
|
||||
( x ) .bullet/x LDZ2 #04 SFT2 ;terrain ADD2 LDA
|
||||
#00 SWP #40 SFT2 .bullet/y LDZ2 LTH2 JMP2r
|
||||
&offscreen
|
||||
#00
|
||||
|
||||
JMP2r
|
||||
|
||||
@collide-bounds ( -- hit )
|
||||
|
||||
.bullet/x LDZ2 .Screen/width DEI2 #10 SFT2 GTH2
|
||||
JMP2r
|
||||
( TODO )
|
||||
.bullet/y LDZ2 .Screen/height DEI2 #10 SFT2 GTH2
|
||||
.bullet/x LDZ2 .Screen/width DEI2 #10 SFT2 GTH2
|
||||
ORA
|
||||
|
||||
JMP2r
|
||||
|
||||
@collide-clouds ( -- hit )
|
||||
|
||||
#00
|
||||
|
||||
JMP2r
|
||||
|
||||
@collide-self ( -- hit )
|
||||
|
||||
.bullet/age LDZ2 #0020 GTH2 ,&continue JCN
|
||||
#00 JMP2r
|
||||
&continue
|
||||
.bullet/x LDZ2
|
||||
DUP2 ;get-player JSR2 /x LDZ2 #0008 SUB2 LTH2 ,&miss JCN
|
||||
DUP2 ;get-player JSR2 /x LDZ2 #0010 ADD2 GTH2 ,&miss JCN
|
||||
POP2
|
||||
.bullet/y LDZ2
|
||||
DUP2 ;get-player JSR2 /y LDZ2 #0020 SUB2 LTH2 ,&miss JCN
|
||||
DUP2 ;get-player JSR2 /y LDZ2 #0008 ADD2 GTH2 ,&miss JCN
|
||||
POP2
|
||||
#01
|
||||
|
||||
JMP2r
|
||||
&miss POP2 #00 JMP2r
|
||||
|
||||
@collide-other ( -- hit )
|
||||
|
||||
.bullet/x LDZ2
|
||||
DUP2 ;get-other JSR2 /x LDZ2 #0008 SUB2 LTH2 ,&miss JCN
|
||||
DUP2 ;get-other JSR2 /x LDZ2 #0010 ADD2 GTH2 ,&miss JCN
|
||||
POP2
|
||||
.bullet/y LDZ2
|
||||
DUP2 ;get-other JSR2 /y LDZ2 #0020 SUB2 LTH2 ,&miss JCN
|
||||
DUP2 ;get-other JSR2 /y LDZ2 #0008 ADD2 GTH2 ,&miss JCN
|
||||
POP2
|
||||
#01
|
||||
( TODO: set sprite state )
|
||||
#aaaa ;print JSR2 #0a18 DEO
|
||||
|
||||
JMP2r
|
||||
&miss POP2 #00 JMP2r
|
||||
|
||||
@incr-angle ( player -- )
|
||||
|
||||
DUP /angle LDZ #14 EQU ,&skip JCN
|
||||
DUP #40 ;draw-crosshair JSR2
|
||||
DUP /angle LDZk INC SWP STZ
|
||||
DUP ;draw-player JSR2
|
||||
DUP #43 ;draw-crosshair JSR2
|
||||
&skip
|
||||
POP
|
||||
|
||||
JMP2r
|
||||
|
||||
@decr-angle ( player -- )
|
||||
|
||||
DUP /angle LDZ #01 LTH ,&skip JCN
|
||||
DUP #40 ;draw-crosshair JSR2
|
||||
DUP /angle LDZk #01 SUB SWP STZ
|
||||
DUP ;draw-player JSR2
|
||||
DUP #43 ;draw-crosshair JSR2
|
||||
&skip
|
||||
POP
|
||||
|
||||
JMP2r
|
||||
|
||||
@incr-force ( player -- )
|
||||
|
||||
DUP /force LDZ2 #0007 GTH2 ,&skip JCN
|
||||
DUP /force LDZ2k INC2 ROT STZ2
|
||||
DUP #01 ;draw-force JSR2
|
||||
&skip
|
||||
POP
|
||||
|
||||
JMP2r
|
||||
|
||||
@decr-force ( player -- )
|
||||
|
||||
DUP /force LDZ2 #0001 LTH2 ,&skip JCN
|
||||
DUP /force LDZ2k #0001 SUB2 ROT STZ2
|
||||
DUP #01 ;draw-force JSR2
|
||||
&skip
|
||||
POP
|
||||
|
||||
JMP2r
|
||||
|
||||
@fire ( player -- )
|
||||
|
||||
STH
|
||||
#00 STHkr /angle LDZ
|
||||
DUP2
|
||||
( y )
|
||||
( add force ) DUP2 STHkr /force LDZ2 MUL2 #02 SFT2 ADD2 .bullet/vy STZ2
|
||||
( x ) ( range ) #0014 SWP2 SUB2 STHkr /y LDZ2 #0014 SUB2 .bullet/y STZ2
|
||||
( add force ) DUP2 STHkr /force LDZ2 MUL2 #02 SFT2 ADD2
|
||||
( player2 flip-x ) STHkr .player2 NEQ ,&left JCN #0000 SWP2 SUB2 &left .bullet/vx STZ2
|
||||
STHr /x LDZ2 .bullet/x STZ2
|
||||
#01 .bullet/alive STZ
|
||||
#0000 .bullet/age STZ2
|
||||
|
||||
JMP2r
|
||||
|
||||
( drawing )
|
||||
|
||||
@draw-stage ( color -- )
|
||||
|
||||
STH
|
||||
#35 .Screen/auto DEO
|
||||
( x ) #0000 .Screen/x DEO2
|
||||
.stage/w LDZ #00
|
||||
&loop
|
||||
;stage-icns .Screen/addr DEO2
|
||||
( y ) #00 OVR ;terrain ADD2 LDA #01 SUB #00 SWP #30 SFT2 .Screen/y DEO2
|
||||
STHkr .Screen/sprite DEO
|
||||
INC GTHk ,&loop JCN
|
||||
POP2
|
||||
STHkr ;draw-doodads JSR2
|
||||
STHkr ;draw-clouds JSR2
|
||||
STHkr ;draw-ramps JSR2
|
||||
STHr #00 NEQ ;draw-flag JSR2
|
||||
|
||||
JMP2r
|
||||
|
||||
@draw-doodads ( color -- )
|
||||
|
||||
STH
|
||||
#00 .Screen/auto DEO
|
||||
.stage/w LDZ #00
|
||||
&loop
|
||||
( x ) #00 OVR #30 SFT2 .Screen/x DEO2
|
||||
( y ) #00 OVR ;terrain ADD2 LDA #02 SUB #00 SWP #30 SFT2 .Screen/y DEO2
|
||||
( doodads )
|
||||
#00 OVR .stage/id LDZ2 ADD2 #0003 AND2 #40 SFT2 ;doodad-icns ADD2 .Screen/addr DEO2
|
||||
STHkr #00 NEQ #85 MUL .Screen/sprite DEO
|
||||
#05 ADD GTHk ,&loop JCN
|
||||
POP2
|
||||
POPr
|
||||
|
||||
JMP2r
|
||||
|
||||
@draw-ramps ( color -- )
|
||||
|
||||
STH
|
||||
#00 .Screen/auto DEO
|
||||
.stage/w LDZ #00
|
||||
&loop
|
||||
( x ) #00 OVR #30 SFT2 .Screen/x DEO2
|
||||
( y ) #00 OVR ;terrain ADD2 LDA #02 SUB #00 SWP #30 SFT2 .Screen/y DEO2
|
||||
( up )
|
||||
#00 OVR ;terrain ADD2 LDA2
|
||||
EQUk ,&no-up-ramp JCN
|
||||
LTHk ,&no-up-ramp JCN
|
||||
;ramp-icns .Screen/addr DEO2
|
||||
STHkr #01 MUL .Screen/sprite DEO
|
||||
&no-up-ramp
|
||||
POP2
|
||||
( down )
|
||||
#00 OVR #01 SUB ;terrain ADD2 LDA2
|
||||
EQUk ,&no-down-ramp JCN
|
||||
GTHk ,&no-down-ramp JCN
|
||||
;ramp-icns/down .Screen/addr DEO2
|
||||
STHkr #01 MUL .Screen/sprite DEO
|
||||
&no-down-ramp
|
||||
POP2
|
||||
INC GTHk ,&loop JCN
|
||||
POP2
|
||||
POPr
|
||||
|
||||
JMP2r
|
||||
|
||||
@draw-clouds ( color -- )
|
||||
|
||||
#16 .Screen/auto DEO
|
||||
;cloud-icns/a .Screen/addr DEO2
|
||||
#81 SWP #00 NEQ MUL .Screen/sprite
|
||||
.clouds/ax LDZ2 #01 SFT2 .Screen/x DEO2
|
||||
.clouds/ay LDZ2 #01 SFT2 .Screen/y DEO2
|
||||
DEOk
|
||||
.clouds/bx LDZ2 #01 SFT2 .Screen/x DEO2
|
||||
.clouds/by LDZ2 #01 SFT2 .Screen/y DEO2
|
||||
;cloud-icns/b .Screen/addr DEO2
|
||||
DEOk
|
||||
.clouds/cx LDZ2 #01 SFT2 .Screen/x DEO2
|
||||
.clouds/cy LDZ2 #01 SFT2 .Screen/y DEO2
|
||||
;cloud-icns/c .Screen/addr DEO2
|
||||
DEO
|
||||
|
||||
JMP2r
|
||||
|
||||
@draw-force ( player mask -- )
|
||||
|
||||
STH
|
||||
INCk INC LDZ2 #01 SFT2 #0028 SUB2 .Screen/y DEO2
|
||||
( bg )
|
||||
LDZ2k #01 SFT2 #0012 SUB2 .Screen/x DEO2
|
||||
#10 #05 STHkr MUL ;draw-bar JSR2
|
||||
( fg )
|
||||
LDZ2k #01 SFT2 #0012 SUB2 .Screen/x DEO2
|
||||
#04 ADD LDZ2 NIP #10 SFT #0f STHr MUL ;draw-bar JSR2
|
||||
|
||||
JMP2r
|
||||
|
||||
@draw-bar ( size color -- )
|
||||
|
||||
STH
|
||||
#00 .Screen/auto DEO
|
||||
;progress-icns/fill .Screen/addr DEO2
|
||||
#00
|
||||
&loop
|
||||
STHkr .Screen/sprite DEO
|
||||
.Screen/x DEI2k INC2 INC2 ROT DEO2
|
||||
INC GTHk ,&loop JCN
|
||||
POP2
|
||||
POPr
|
||||
|
||||
JMP2r
|
||||
|
||||
@draw-crosshair ( player color -- )
|
||||
|
||||
STH
|
||||
DUP ,&player STR
|
||||
#00 .Screen/auto DEO
|
||||
DUP /x LDZ2 #01 SFT2 #0020 SUB2 ,&offset-x STR2
|
||||
/y LDZ2 #01 SFT2 #0028 SUB2 ,&offset-y STR2
|
||||
#4000
|
||||
&loop
|
||||
#00 OVR #10 SFT2 ;sin-tbl ADD2
|
||||
DUP2 LDA #00 SWP #02 SFT2 [ LIT2 &offset-x $2 ] ADD2 .Screen/x DEO2
|
||||
INC2 LDA #00 SWP #02 SFT2 [ LIT2 &offset-y $2 ] ADD2 .Screen/y DEO2
|
||||
DUP #03 AND ,&odd JCN
|
||||
STHkr .Screen/pixel DEO
|
||||
&odd
|
||||
( selected )
|
||||
DUP [ LIT &player $1 ] ;get-marker JSR2 NEQ ,&no-sel JCN
|
||||
.Screen/x DEI2k #0003 SUB2 ROT DEO2
|
||||
.Screen/y DEI2k #0003 SUB2 ROT DEO2
|
||||
;crosshair-icn .Screen/addr DEO2
|
||||
STHkr .Screen/sprite DEO
|
||||
&no-sel
|
||||
INC GTHk ,&loop JCN
|
||||
POP2
|
||||
POPr
|
||||
|
||||
JMP2r
|
||||
|
||||
@get-marker ( player -- marker )
|
||||
|
||||
DUP .player2 EQU ,&player2 JCN
|
||||
#14 SWP /angle LDZ SUB JMP2r
|
||||
&player2
|
||||
/angle LDZ #2c ADD #3f AND
|
||||
|
||||
JMP2r
|
||||
|
||||
@draw-flag ( mask -- )
|
||||
|
||||
STH
|
||||
( direction )
|
||||
.wind/force LDZ2 #8000 LTH2 STH
|
||||
( x )
|
||||
.Screen/width DEI2 #0006 SUB2
|
||||
( flip-x ) #00 STHkr #000c MUL2 ADD2
|
||||
#01 SFT2 .Screen/x DEO2
|
||||
( y )
|
||||
#00 .stage/w LDZ INC #01 SFT ;terrain ADD2 LDA
|
||||
#00 SWP #0004 SUB2 #30 SFT2 .Screen/y DEO2
|
||||
( top )
|
||||
#02 .Screen/auto DEO
|
||||
;flag/top
|
||||
( rate ) .wind/rate LDZ2 #0030 MUL2 ADD2
|
||||
( animate ) #00 [ LIT &f $1 ] #40 SFT2 ADD2
|
||||
.Screen/addr DEO2
|
||||
#81 ( flipx ) STHr #40 SFT ORA STHr MUL .Screen/sprite
|
||||
DEOk
|
||||
( pole )
|
||||
;flag/pole .Screen/addr DEO2
|
||||
DEOk DEO
|
||||
( animate )
|
||||
,&f LDR INC #03 ( mod ) DIVk MUL SUB ,&f STR
|
||||
|
||||
JMP2r
|
||||
|
||||
@draw-arrow ( player color -- )
|
||||
|
||||
STH
|
||||
#00 .Screen/auto DEO
|
||||
( x ) LDZ2k #01 SFT2 #0004 SUB2 .Screen/x DEO2
|
||||
( y ) INC INC LDZ2 #0040 SUB2
|
||||
( y+blink ) #00 .game/timer LDZ #0f AND #02 SFT2 ADD2
|
||||
#01 SFT2 .Screen/y DEO2
|
||||
;arrow-icn .Screen/addr DEO2
|
||||
STHr .Screen/sprite DEO
|
||||
|
||||
JMP2r
|
||||
|
||||
@draw-bullet ( color -- )
|
||||
|
||||
#00 .Screen/auto DEO
|
||||
.bullet/x LDZ2 #0006 SUB2 #01 SFT2 .Screen/x DEO2
|
||||
.bullet/y LDZ2 #0006 SUB2 #01 SFT2 .Screen/y DEO2
|
||||
;bullet-icn .Screen/addr DEO2
|
||||
.Screen/sprite DEO
|
||||
|
||||
JMP2r
|
||||
|
||||
@draw-player ( player -- )
|
||||
|
||||
DUP .player2 EQU ;draw-player2 JCN2
|
||||
STHk
|
||||
LDZ2k #01 SFT2 #0008 SUB2 .Screen/x DEO2
|
||||
INC INC LDZ2 #0028 SUB2 #01 SFT2 .Screen/y DEO2
|
||||
#16 .Screen/auto DEO
|
||||
;player1-icns/ears .Screen/addr DEO2
|
||||
#85 .Screen/sprite DEOk
|
||||
;player1-icns/eye [ #00 STHr #06 ADD LDZ #03 SFT ] #50 SFT2 ADD2 .Screen/addr DEO2
|
||||
DEOk
|
||||
;player1-icns/body .Screen/addr DEO2
|
||||
DEO
|
||||
|
||||
JMP2r
|
||||
|
||||
@draw-player2 ( player -- )
|
||||
|
||||
STHk
|
||||
LDZ2k #01 SFT2 #0008 SUB2 .Screen/x DEO2
|
||||
INC INC LDZ2 #0028 SUB2 #01 SFT2 .Screen/y DEO2
|
||||
#16 .Screen/auto DEO
|
||||
;player2-icns/ears .Screen/addr DEO2
|
||||
#85 .Screen/sprite DEOk
|
||||
;player2-icns/eye [ #00 STHr #06 ADD LDZ #03 SFT ] #50 SFT2 ADD2 .Screen/addr DEO2
|
||||
DEOk
|
||||
;player2-icns/body .Screen/addr DEO2
|
||||
DEO
|
||||
|
||||
JMP2r
|
||||
|
||||
@draw-name ( player -- )
|
||||
|
||||
DUP /x LDZ2 #01 SFT2 #0020 SUB2 .Screen/x DEO2
|
||||
DUP /y LDZ2 #0068 SUB2 #01 SFT2 .Screen/y DEO2
|
||||
( to /name ) #07 ADD
|
||||
LDZk #0f AND #00 SWP #0005 MUL2 ;names/first ADD2 #05 ;draw-label JSR2
|
||||
INC LDZ #0f AND #00 SWP #0006 MUL2 ;names/last ADD2 #05 ;draw-label JSR2
|
||||
|
||||
JMP2r
|
||||
|
||||
@draw-label ( str* color -- )
|
||||
|
||||
STH
|
||||
#01 .Screen/auto DEO
|
||||
&while
|
||||
LDAk #20 SUB #00 SWP #30 SFT2 ;font ADD2 .Screen/addr DEO2
|
||||
STHkr .Screen/sprite DEO
|
||||
INC2 LDAk ,&while JCN
|
||||
POP2
|
||||
POPr
|
||||
|
||||
JMP2r
|
||||
|
||||
@text "buckthorn $1
|
||||
|
||||
@draw-line ( x1* y1* x2* y2* color -- )
|
||||
|
||||
( load ) STH ,&y STR2 ,&x STR2 .line/y STZ2 .line/x STZ2
|
||||
,&x LDR2 .line/x LDZ2 SUB2 ;abs2 JSR2 .line/dx STZ2
|
||||
#0000 ,&y LDR2 .line/y LDZ2 SUB2 ;abs2 JSR2 SUB2 .line/dy STZ2
|
||||
#ffff #00 .line/x LDZ2 ,&x LDR2 ;lts2 JSR2 #10 SFT2 ADD2 ,&sx STR2
|
||||
#ffff #00 .line/y LDZ2 ,&y LDR2 ;lts2 JSR2 #10 SFT2 ADD2 ,&sy STR2
|
||||
.line/dx LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2
|
||||
&loop
|
||||
.line/x LDZ2 DUP2 .Screen/x DEO2 [ LIT2 &x $2 ] EQU2
|
||||
.line/y LDZ2 DUP2 .Screen/y DEO2 [ LIT2 &y $2 ] EQU2
|
||||
STHkr .Screen/pixel DEO
|
||||
AND ,&end JCN
|
||||
.line/e1 LDZ2 #10 SFT2 DUP2
|
||||
.line/dy LDZ2 ;lts2 JSR2 ,&skipy JCN
|
||||
.line/e1 LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2
|
||||
.line/x LDZ2 [ LIT2 &sx $2 ] ADD2 .line/x STZ2
|
||||
&skipy
|
||||
.line/dx LDZ2 ;gts2 JSR2 ,&skipx JCN
|
||||
.line/e1 LDZ2 .line/dx LDZ2 ADD2 .line/e1 STZ2
|
||||
.line/y LDZ2 [ LIT2 &sy $2 ] ADD2 .line/y STZ2
|
||||
&skipx
|
||||
,&loop JMP
|
||||
&end
|
||||
POPr
|
||||
|
||||
JMP2r
|
||||
|
||||
@abs2 DUP2 #0f SFT2 EQU #05 JCN #0000 SWP2 SUB2 JMP2r
|
||||
@lts2 #8000 STH2k ADD2 SWP2 STH2r ADD2 GTH2 JMP2r
|
||||
@gts2 #8000 STH2k ADD2 SWP2 STH2r ADD2 LTH2 JMP2r
|
||||
|
||||
( library )
|
||||
|
||||
@prng-init ( -- )
|
||||
|
||||
( seed )
|
||||
#00 .DateTime/second DEI
|
||||
#00 .DateTime/minute DEI #60 SFT2 EOR2
|
||||
#00 .DateTime/hour DEI #c0 SFT2 EOR2 ,prng/x STR2
|
||||
#00 .DateTime/hour DEI #04 SFT2
|
||||
#00 .DateTime/day DEI #10 SFT2 EOR2
|
||||
#00 .DateTime/month DEI #60 SFT2 EOR2
|
||||
.DateTime/year DEI2 #a0 SFT2 EOR2 ,prng/y STR2
|
||||
|
||||
JMP2r
|
||||
|
||||
@prng ( -- number* )
|
||||
|
||||
LIT2 &x $2
|
||||
DUP2 #50 SFT2 EOR2
|
||||
DUP2 #03 SFT2 EOR2
|
||||
LIT2 &y $2 DUP2 ,&x STR2
|
||||
DUP2 #01 SFT2 EOR2 EOR2
|
||||
,&y STR2k POP
|
||||
|
||||
JMP2r
|
||||
|
||||
@print ( short* -- )
|
||||
|
||||
SWP ,&byte JSR
|
||||
&byte ( byte -- ) DUP #04 SFT ,&char JSR
|
||||
&char ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO
|
||||
|
||||
JMP2r
|
||||
|
||||
@progress-icns
|
||||
3f40 8080 8080 403f
|
||||
ff00 0000 0000 00ff
|
||||
fc02 0101 0101 02fc
|
||||
&fill
|
||||
0000 183c 3c18 0000
|
||||
@crosshair-icn
|
||||
0010 106c 1010 0000
|
||||
@arrow-icn
|
||||
0018 18ff 7e3c 1800
|
||||
@bullet-icn
|
||||
0000 183c 3c18 0000
|
||||
@flag
|
||||
&pole
|
||||
0101 0101 0001 0001 0101 0101 0101 0101
|
||||
&top
|
||||
( high )
|
||||
0101 3fff 3f07 0101 0101 0000 0000 0101
|
||||
01f9 3f3f 1f07 0101 0101 0000 0000 0101
|
||||
0181 ffff 7f07 0101 0101 0000 0000 0101
|
||||
( med )
|
||||
0101 0307 070f 3f79 0101 0000 0000 0101
|
||||
0101 0307 0f3f 7d41 0101 0000 0000 0101
|
||||
0101 0307 4f7f 3d01 0101 0000 0000 0101
|
||||
( low )
|
||||
0101 0303 0303 0707 0101 0000 0000 0000
|
||||
0101 0103 0707 0703 0101 0000 0000 0000
|
||||
0101 0103 0307 0703 0101 0000 0000 0000
|
||||
( none )
|
||||
0101 0303 0303 0707 0101 0000 0000 0000
|
||||
0101 0103 0707 0703 0101 0000 0000 0000
|
||||
0101 0103 0307 0703 0101 0000 0000 0000
|
||||
|
||||
@cloud-icns
|
||||
&a
|
||||
0000 0c1e 1e0f 0500 0000 1c3e 3e3f ff7f
|
||||
0004 0200 c0e0 50a0 0004 0e04 c0e0 f0e0
|
||||
&b
|
||||
0000 081c 1400 0000 0000 193d 7f3f 0000
|
||||
0070 f8f8 54a0 0000 00f0 f8f8 fcf0 0000
|
||||
&c
|
||||
0000 402e 0f00 0000 0000 40ee 5f0e 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
|
||||
@doodad-icns
|
||||
0000 0000 2054 2a04 0000 0000 2074 2e24
|
||||
0000 0000 40a2 552a 0000 0000 40e2 577a
|
||||
0000 0000 0000 0000 0000 0000 0000 0424
|
||||
0000 0000 0000 0000 0000 0000 0000 0008
|
||||
|
||||
@ramp-icns
|
||||
0000 0000 0000 0001
|
||||
&down
|
||||
0000 0000 0000 0080
|
||||
|
||||
@stage-icns
|
||||
ffff ffff ffff ffff
|
||||
ffff aa55 aa55 aa55
|
||||
aa55 aa55 8800 2200
|
||||
0000 0000 0000 0000
|
||||
&up
|
||||
0103 070f 1f3f 7fff
|
||||
ffff fefd faf5 ead5
|
||||
aa55 aa55 a850 a240
|
||||
8800 2200 8800 0000
|
||||
&down
|
||||
0000 0000 0000 0000
|
||||
80c0 e0f0 f8fc feff
|
||||
ffff bf5f af57 ab55
|
||||
aa55 aa55 0a05 2201
|
||||
8800 2200 8800 0000
|
||||
|
||||
@player1-icns
|
||||
&ears
|
||||
( 0 )
|
||||
0002 0e0e 0606 1f3f 0c0c 0000 0000 0000
|
||||
0020 e0e0 6000 fcfe c0c0 0000 0000 0000
|
||||
( 1 )
|
||||
0000 020e 0e06 1f3f 000c 0c00 0000 0000
|
||||
0000 20e0 6000 fcfe 00c0 c000 0000 0000
|
||||
( 2 )
|
||||
0000 041c 0e06 1f3f 0019 1900 0000 0000
|
||||
0000 40e0 6000 fcfe 0080 8000 0000 0000
|
||||
&eye
|
||||
( 0 )
|
||||
7f7f 7f7f 7f3f 1f07 0103 0707 0703 0000
|
||||
ffc7 8383 c7ff fef8 f0f8 fcfc fcf8 0000
|
||||
( 1 )
|
||||
7f7f 7f7f 7f3f 1f07 0103 0707 0703 0000
|
||||
8f07 078f ffff fef8 f0f8 fcfc fcf8 0000
|
||||
( 2 )
|
||||
7f7e 7e7f 7f3f 1f07 0103 0707 0703 0000
|
||||
1f0f 0f1f ffff fef8 f0f8 fcfc fcf8 0000
|
||||
&body
|
||||
5f3f 3f1f 1200 0000 4101 0000 0000 0000
|
||||
e0e0 e040 4000 0000 e0e0 e000 0000 0000
|
||||
|
||||
@player2-icns
|
||||
&ears
|
||||
( 0 )
|
||||
0003 030c 0e00 1f3f 0000 0403 0000 0000
|
||||
008e 8e30 7860 f0f8 0000 100c 0000 0000
|
||||
( 1 )
|
||||
0000 0303 0c00 1f3f 0000 0004 0300 0000
|
||||
0000 8e8e 3078 f0f8 0000 0010 0c00 0000
|
||||
( 2 )
|
||||
0000 0101 0600 1f3f 0000 0002 0100 0000
|
||||
0000 c7c7 1878 f0f8 0000 0008 8600 0000
|
||||
&eye
|
||||
( 0 )
|
||||
7fe3 d1c1 e3ff 7f1f 0f1f 3f3f 3f1f 0000
|
||||
fcfe fefe fefe fcf0 80c0 e0e0 e0c0 0000
|
||||
( 1 )
|
||||
71e8 e0f1 ffff 7f1f 0f1f 3f3f 3f1f 0000
|
||||
fcfe fefe fefe fcf0 80c0 e0e0 e0c0 0000
|
||||
( 2 )
|
||||
78f4 f0f8 ffff 7f1f 0f1f 3f3f 3f1f 0000
|
||||
fc7e 7efe fefe fcf0 80c0 e0e0 e0c0 0000
|
||||
&body
|
||||
0707 0702 0200 0000 0707 0700 0000 0000
|
||||
f0f8 fefe b000 0000 8080 0606 0000 0000
|
||||
|
||||
@platform-icns
|
||||
0000 0000 0000 0000 0f3f 3f7f 7f7f 7f7f
|
||||
0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000 0000 0000 0000 f0fc fcfe fefe fefe
|
||||
0000 0000 0000 0000 7f7f 7778 7050 2000
|
||||
0000 0000 0000 0000 ffff ffff 3e1c 0000
|
||||
0000 0000 0000 0000 ffff ff3f 1303 0100
|
||||
0000 0000 0000 0000 fefe fefe eeca 0400
|
||||
|
||||
@sin-tbl
|
||||
8000 8c00 9802 a505 b009 bc0f c715 d11d
|
||||
da25 e22e ea38 f043 f64f fa5a fd67 ff73
|
||||
ff80 ff8c fd98 faa5 f6b0 f0bc eac7 e2d1
|
||||
dada d1e2 c7ea bcf0 b0f6 a5fa 98fd 8cff
|
||||
80ff 73ff 67fd 5afa 4ff6 43f0 38ea 2ee2
|
||||
25da 1dd1 15c7 0fbc 09b0 05a5 0298 008c
|
||||
0080 0073 0267 055a 094f 0f43 1538 1d2e
|
||||
2525 2e1d 3815 430f 4f09 5a05 6702 7300
|
||||
|
||||
~names.tal
|
||||
~font.tal
|
||||
|
||||
@terrain
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
@names
|
||||
&first
|
||||
"Blue $1 "Fern $1 "Leaf $1 "Corn $1
|
||||
"Pine $1 "Snow $1 "Seed $1 "Fuzz $1
|
||||
"Rain $1 "Buck $1 "Rose $1 "Sage $1
|
||||
"Worm $1 "Haze $1 "Hawk $1 "Bell $1
|
||||
&last
|
||||
"stack $1 "marsh $1 "clove $1 "thorn $1
|
||||
"patch $1 "grass $1 "shade $1 "berry $1
|
||||
"woods $1 "stone $1 "cedar $1 "brush $1
|
||||
"storm $1 "cloud $1 "mound $1 "beans $1
|
Binary file not shown.
Loading…
Reference in New Issue