( 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