home *** CD-ROM | disk | FTP | other *** search
-
- 0 CONSTANT WALL-BLOCK-LIST-F
- WALL-BLOCK-LIST-F 4 + CONSTANT WALL-NO-BRICKS-F
- WALL-NO-BRICKS-F 4 + CONSTANT WALL-SIZE
-
- : WALL-BLOCK-LIST WALL-BLOCK-LIST-F + ;
- : WALL-NO-BRICKS WALL-NO-BRICKS-F + ;
-
- : DEF-WALL
- <BUILDS
- WALL-SIZE ALLOT
- DOES>
- ;
-
- 0 CONSTANT BLOCK-HEIGHT-F
- BLOCK-HEIGHT-F 4 + CONSTANT BLOCK-WIDTH-F
- BLOCK-WIDTH-F 4 + CONSTANT BLOCK-XSIZE-F
- BLOCK-XSIZE-F 4 + CONSTANT BLOCK-YSIZE-F
- BLOCK-YSIZE-F 4 + CONSTANT BLOCK-BRICKS-F
- BLOCK-BRICKS-F CONSTANT BLOCK-SIZE
-
- : BLOCK-HEIGHT BLOCK-HEIGHT-F + ;
- : BLOCK-WIDTH BLOCK-WIDTH-F + ;
- : BLOCK-XSIZE BLOCK-XSIZE-F + ;
- : BLOCK-YSIZE BLOCK-YSIZE-F + ;
- : BLOCK-BRICKS BLOCK-BRICKS-F + ;
-
- : DEF-WALL-BLOCK ( XSIZE / YSIZE / XBRICKS / YBRICKS )
- <BUILDS
- HERE >R
- 2DUP
- * 2 << BLOCK-SIZE + ALLOT
- R
- BLOCK-HEIGHT !
- R
- BLOCK-WIDTH !
- R
- BLOCK-YSIZE !
- R>
- BLOCK-XSIZE !
- DOES>
- ;
-
- 0 CONSTANT WALL-BLOCK-F
- WALL-BLOCK-F 4 + CONSTANT BLOCK-BOT-LEFTX-F
- BLOCK-BOT-LEFTX-F 4 + CONSTANT BLOCK-BOT-LEFTY-F
- BLOCK-BOT-LEFTY-F 4 + CONSTANT BLOCK-LIST-SIZE
-
- : WALL-BLOCK WALL-BLOCK-F + ;
- : BLOCK-BOT-LEFTX BLOCK-BOT-LEFTX-F + ;
- : BLOCK-BOT-LEFTY BLOCK-BOT-LEFTY-F + ;
-
- : DEF-WALL-BLOCK-LIST ( NUM-ELEMENTS -> )
- <BUILDS
- 1+ BLOCK-LIST-SIZE * ALLOT
- HERE BLOCK-LIST-SIZE - ( START OF LAST ELEMENT )
- WALL-BLOCK -1 SWAP ! ( STORE -1 AS END OF LIST MARKER )
- DOES>
- ;
-
- : DEF-WALL-BLOCK-ROW ( BRICK-COLOURS ... / ROW-NO / BLOCK -> )
- DUP >R ( SAVE BLOCK ADDRESS )
- BLOCK-WIDTH @ 2 << *
- R BLOCK-BRICKS + ( ADDRESS OF REQUIRED ROW )
- R BLOCK-WIDTH @ 2 << + 4 - ( ADDRESS OF END OF ROW )
- R> BLOCK-WIDTH @ 0 DO
- >R ( ADDRESS )
- 18 << OR ( MERGE SCORE WITH COLOUR )
- R ! ( STORE BRICK COLOUR )
- R> 4 - ( DECREMENT ADDRESS )
- LOOP
- DROP
- ;
-
- : INSERT-LIST-ELT ( XPOS / YPOS / BLOCK / BLOCK-LIST / ELT-NO -> )
- BLOCK-LIST-SIZE * + ( ADDR OF ELEMENT )
- >R R WALL-BLOCK ! ( STORE PTR TO BLOCK IN LIST ELEMENT )
- R BLOCK-BOT-LEFTY !
- R> BLOCK-BOT-LEFTX !
- ;
-
- : ATTACH-LIST ( BLOCK-LIST / WALL -> )
- WALL-BLOCK-LIST !
- ;
-
- 0 CONSTANT BATX-F
- BATX-F 4 + CONSTANT BATY-F
- BATY-F 4 + CONSTANT BAT-WIDTH-F
- BAT-WIDTH-F 4 + CONSTANT BAT-MINX-F
- BAT-MINX-F 4 + CONSTANT BAT-MAXX-F
- BAT-MAXX-F 4 + CONSTANT BAT-HEIGHT-F
- BAT-HEIGHT-F 4 + CONSTANT BAT-XINC-F
- BAT-XINC-F 4 + CONSTANT BAT-SPRITE-CTRL-F
- BAT-SPRITE-CTRL-F 4 + CONSTANT BAT-SIZE
-
- : BATX BATX-F + ;
- : BATY BATY-F + ;
- : BAT-WIDTH BAT-WIDTH-F + ;
- : BAT-MINX BAT-MINX-F + ;
- : BAT-MAXX BAT-MAXX-F + ;
- : BAT-HEIGHT BAT-HEIGHT-F + ;
- : BAT-XINC BAT-XINC-F + ;
- : BAT-SPRITE-CTRL BAT-SPRITE-CTRL-F + ;
-
- : DEF-BAT ( SPRITE-AREA / SPRITE-NO / XINC / MINX / MAXX / X / Y )
- <BUILDS
- HERE >R
- BAT-SIZE ALLOT
- R BATY !
- R BATX !
- R BAT-MAXX !
- R BAT-MINX !
- R BAT-XINC !
- >R DUP R>
- GET-SPRITE-CTRL-BLOCK
- DUP
- R BAT-SPRITE-CTRL !
- SPRITE-SIZE
- 2DUP 2 << R BAT-HEIGHT !
- 1 << R BAT-WIDTH !
- DROP
- 1 <<
- R BAT-MAXX @
- SWAP -
- R> BAT-MAXX !
- DOES>
- ;
-
- 0 CONSTANT BALLX-F
- BALLX-F 4 + CONSTANT BALLY-F
- BALLY-F 4 + CONSTANT BALL-INCX-F
- BALL-INCX-F 4 + CONSTANT BALL-INCY-F
- BALL-INCY-F 4 + CONSTANT BALL-MINX-F
- BALL-MINX-F 4 + CONSTANT BALL-MINY-F
- BALL-MINY-F 4 + CONSTANT BALL-MAXX-F
- BALL-MAXX-F 4 + CONSTANT BALL-MAXY-F
- BALL-MAXY-F 4 + CONSTANT BALL-WIDTH-F
- BALL-WIDTH-F 4 + CONSTANT BALL-HEIGHT-F
- BALL-HEIGHT-F 4 + CONSTANT BALL-CENTRE-COL-F
- BALL-CENTRE-COL-F 4 + CONSTANT BALL-SPRITE-CTRL-F
- BALL-SPRITE-CTRL-F 4 + CONSTANT BALL-SIZE
-
- : BALLX BALLX-F + ;
- : BALLY BALLY-F + ;
- : BALL-INCX BALL-INCX-F + ;
- : BALL-INCY BALL-INCY-F + ;
- : BALL-MINX BALL-MINX-F + ;
- : BALL-MINY BALL-MINY-F + ;
- : BALL-MAXX BALL-MAXX-F + ;
- : BALL-MAXY BALL-MAXY-F + ;
- : BALL-WIDTH BALL-WIDTH-F + ;
- : BALL-HEIGHT BALL-HEIGHT-F + ;
- : BALL-CENTRE-COL BALL-CENTRE-COL-F + ;
- : BALL-SPRITE-CTRL BALL-SPRITE-CTRL-F + ;
-
- : DEF-BALL ( SPRITE-AREA / SPRITE-NO / MINX / MINY / MAXX / MAXY /
- INITX / INITY / INCX / INCY -> )
- <BUILDS
- HERE >R
- BALL-SIZE ALLOT
- R BALL-INCY !
- R BALL-INCX !
- R BALLY !
- R BALLX !
- R BALL-MAXY !
- R BALL-MAXX !
- R BALL-MINY !
- R BALL-MINX !
- >R DUP R>
- GET-SPRITE-CTRL-BLOCK
- DUP
- R BALL-SPRITE-CTRL !
- 2DUP SPRITE-SIZE
- DUP 1 << R BALL-HEIGHT FORTH !
- 1 >>
- SWAP
- DUP R BALL-WIDTH !
- 1 >>
- SWAP
- READ-SPRITE-PIXEL
- R> BALL-CENTRE-COL !
- DOES>
- ;
-
- 0 CONSTANT BALL-F
- BALL-F 4 + CONSTANT BALL-LIST-SIZE
- : BALL BALL-F + ;
-
- : DEF-BALL-LIST ( NUM-ELEMENTS -> )
- <BUILDS
- 1+ BALL-LIST-SIZE * ALLOT
- HERE BALL-LIST-SIZE - ( ADDRESS OF LAST DUMMY ELEMENT )
- BALL -1 SWAP !
- DOES>
- ;
-
- : ATTACH-BALL ( BALL / BALL-LIST / ELT-NO -> )
- BALL-LIST-SIZE * + ( ADDR OF WANTED ELEMENT )
- BALL !
- ;
-