01 ;JS15M:DISLAYS FRONT VIEW OF TROLL 02 ;WHEN JOYSTICK0 IS IN POSITION 15 03 ; 10 JS15M LDA TROLWIZ 20 BNE JS15T 21 LDA #0 ;TURN OFF WIZARD SOUND 22 STA $D203 30 RTS 40 JS15T LDY END1+3 ;VERT END POS OF TROLL 50 LDX #7 ;#OF BYTES TO MOVE 60 M1 LDA MAN,X ;LOAD DRAWING OF TROLL 70 STA PL3R,Y ;SAVE IN PLAYER 3 80 LDA MAN2,X 90 STA PL2R,Y ;SAVE IN PLAYER 2 0100 LDA MAN1,X 0110 STA PL1R,Y ;SAVE IN PLAYER 1 0120 DEY ;NEXT VERT POS 0130 DEX ;NEXT DRAWING BYTE 0140 BPL M1 0141 LDA #0 ;TURN OFF TROLL SOUND 0142 STA $D201 0150 RTS 0160 MANPOS LDA #76 ;VERT END POS OF TROLL 0170 STA END1+3 0180 LDA #69 ;VERT START POS OF TROLL 0190 STA TOP1+3 0200 LDA #0 ;SET PLAYER WIDTH 0210 STA $D009 0220 STA $D00A 0230 STA $D00B 0240 LDA #200 ;COLOR GREEN 0250 STA $02C1 ;COLPM1 0260 LDA #28 ;COLOR GOLD 0270 STA $02C2 ;COLPM2 0280 LDA #228 ;COLOR ORANGE-GREEN 0290 STA $02C3 ;COLPM3 0300 LDA #57 ;HORIZ POS 0310 POST STA P1 ;SAVE IN POINTER 0320 STA $D001 ;SAVE IN HPOSP1 0330 STA $D002 ;" HPOSP2 0340 STA $D003 ;"HPOSP3 0350 RTS 0351 ; 0352 ;CHANGMAN:USE TO CHANGE THE 0353 ;DRAWING OF THE TROLL 0354 ; 0355 CHANGMAN LDA #217 0356 STA SDELAY1 0357 LDA #$44 0358 STA $D201 0360 INC END1+3 ;VERT END USEAS FLAG TO MOVE TROLL 0370 LDA MANNUM ;LOAD POINTER TO TROLL DRAWING 0380 CLC 0390 ADC #8 ;MOVE POINTER TO NEXT DRAWING 0400 CMP #16 ;IF = 16 THEN 0410 BNE M2 ;RESET POINTER TO 0420 LDA #0 ;FIRST TROLL DRAWING 0430 M2 STA MANNUM ;LOAD POINTER 0440 CLC 0450 ADC LRDRAW ;ADD OFF SET FOR LEFT OR RIGHT DIRECTION 0460 TAY 0470 LDX TOP1+3 ;VERT START POS OF TROLL 0480 M3 LDA MAN01,Y ;LOAD DRAWING BYTE 0490 STA PL3R,X ;SAVE IN PLAYER MEMORY 0500 LDA MAN11,Y 0510 STA PL1R,X 0520 LDA MAN21,Y 0530 STA PL2R,X 0540 INY ;NEXT DRAWING BYTE 0550 INX ;NEXT PLAYER DESTINATION BYTE 0560 CPX END1+3 ;DRAWING CHANGED 0570 BNE M3 0580 DEC END1+3 ;RESTORE VERT END POS 0581 LDA SDELAY1 0582 STA $D200 0590 RTS 0591 ; 0592 ;MOVMAN:USES VALUE OF JOYSTICK 0593 ;TO MOVE TROLL OR WIZARD 0594 ; 0600 MOVMAN INC DA1,X ;ADD 1 TO 0610 LDA DA1,X ;COUNTER THAT MUST 0620 CMP #5 ;BE =5 BEFORE 0630 BEQ JST ;MAN CAN MOVE 0640 RTS 0650 JST LDA #0 ;RESET DELAY COUNTER 0660 STA DA1,X 0670 LDY #0 0680 LDA (JSTCKV),Y ;LOAD JOYSTICK VALUE 0690 ;AND DETERMINE WHICH DIRECTION 0700 ;TO MAN THE TROLL 0710 CMP #15 0720 BNE M7 0730 JMP JS15M ;JMP SUB TO DISPLAY FRONT VIEW 0731 M7 LDA TROLWIZ 0732 BNE M7T 0733 LDA #$88 0734 STA $D203 0735 LDA #255 0736 STA $D202 0740 M7T LDA (JSTCKV),Y 0741 CMP #7 0750 BNE M11 0760 JMP JS7 ;MOVE MAN RIGHT 0770 M11 CMP #11 0780 BNE M13 0790 JMP JS11 ;MOVE MAN LEFT 0800 M13 CMP #13 0810 BNE M14 0820 JMP JS13 ;MOVE MAN DOWN 0830 M14 CMP #14 0840 BNE M5 0850 JMP JS14 ;MOVE MAN UP 0860 M5 CMP #5 0870 BNE M9 0880 JSR JS13A ;MOVE MAN DIAGONAL 0890 JMP JS7 ;RIGHT/DOWN 0900 M9 CMP #9 0910 BNE M6 0920 JSR JS13A ;MOVE MAN DIAGONAL 0930 JMP JS11 ;LEFT/DOWN 0940 M6 CMP #6 0950 BNE M10 0960 JSR JS14A ;MOVE MAN DIAGONAL 0970 JMP JS7 ;RIGHT/UP 0980 M10 CMP #10 0990 BNE NOSIGNAL 1000 JSR JS14A ;MOVE MAN DIAGONAL 1010 JMP JS11 ;LEFT/DOWN 1020 NOSIGNAL RTS 1030 JS7 LDA TROLWIZ 1040 BNE JS7T ;IF <> MOVE TROLL 1050 JMP JS7W ;ELSE MOVE WIZARD 1060 JS7T LDA #48 ;POINTER TO FIRST RIGHT 1070 STA LRDRAW ;DRAWING OF TROLL 1080 JSR CHANGMAN ;JMPSUB TO CHANGE DRAWING 1090 LDA P1 ;HORIZ POS 1100 CMP #197 ;IS IT AT RIGHT LIMIT 1110 BCS NOSIGNAL ;IF YES ,THEN EXIT 1120 INC P1 ;ELSE ADD 1 TO POS 1130 LDA P1 1140 JMP POST ;SAVE NEW POS 1150 JS11 LDA TROLWIZ 1160 BNE JS11T ;MOVE TROLL 1170 JMP JS11W ;MOVE WIZARD 1180 JS11T LDA #0 ;POINTER TO FIRST 1190 STA LRDRAW ;LEFT DRAWING OF TROLL 1200 JSR CHANGMAN ;JMPSUB TO CHANGE DRAWING 1210 LDA P1 ;HORIZ POS 1220 CMP #53 ;IS IT AT LEFT LIMIT 1230 BCC NOSIGNAL ;IF YES,THEN EXIT 1240 DEC P1 ;SUB 1 TO FIND NEW POS 1250 LDA P1 1260 JMP POST ;SAVE NEW POS 1270 JS13 LDA TROLWIZ 1280 BNE JS13T ;IF <> MOVE TROLL 1290 JMP JS13W ;ELSE MOVE WIZ 1300 JS13T JSR CHANGMAN ;JMP TO CHANGE DRAWING 1310 JS13A LDA TROLWIZ 1320 BNE JS13AT 1330 JMP JS13W 1340 JS13AT LDA END1+3 ;VERT END POS OF 1350 CMP #207 ;IS IT AT LOWER LIMIT 1360 BCS EX13 ;IF YES THEN EXIT 1370 INC END1+3 ;ELSE SET NEW POS 1380 LDX END1+3 1390 LDY #16 ;# OF BYTES TO MOVE 1400 DOWN LDA PL3R-1,X ;VALUE IN OLD POS 1410 STA PL3R,X ;SAVE IN NEW POS 1420 LDA PL1R-1,X 1430 STA PL1R,X 1440 LDA PL2R-1,X 1450 STA PL2R,X 1460 DEX ;NEXT BYTE TO MOVE 1470 DEY ;ALL BYTES MOVED? 1480 BNE DOWN 1490 INC TOP1+3 ;SET NEW VERT TOP POS 1500 EX13 RTS 1510 JS14 LDA TROLWIZ 1520 BNE JS14T ;MOVE TROLL 1530 JMP JS14W ;MOVE WIZ 1540 JS14T JSR CHANGMAN ;JMP TO CHANGE TROLL DRAWING 1550 JS14A LDA TROLWIZ 1560 BNE JS14AT ;MOVE TROLL 1570 JMP JS14W ;MOVE WIZ 1580 JS14AT LDA TOP1+3 ;VERT START POS OF TROLL 1590 CMP #33 ;IS IT AT UPPER LIMIT 1600 BCC EX14 ;IF YES THEN EXIT 1610 DEC END1+3 ;ELSE SET NEW POS 1620 DEC TOP1+3 1630 LDX TOP1+3 1640 LDY #16 ;#OF BYTES TO MOVE 1650 UP LDA PL3R+1,X ;VALUE TO BE MOVED 1660 STA PL3R,X ;SAVE IN NEW POS 1670 LDA PL1R+1,X 1680 STA PL1R,X 1690 LDA PL2R+1,X 1700 STA PL2R,X 1710 INX ;NEXT BYTE TO MOVE 1720 DEY ;ALL BYTES MOVED 1730 BNE UP 1740 EX14 RTS