.PLAYSOUND : a0 09 LDY #$09 $0a37: a9 07 LDA #$07 $0a39: 20 f1 ff JSR $fff1 // OSWORD, perform sound command $0a3c: a2 2f LDX #$2f $0a3e: 60 RTS ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// .LIVES:c9 ff CMP #$ff $2993: f0 78 BEQ LIV1 // DEAD ? $2995: c6 46 DEC $46 // No. of lives left $2997: d0 03 BNE $299c $2999: 4c 34 2a JMP GAMEOVER // Really dead this time $299c: 20 7b 2a JSR PRINTANDPAUSE // Now do a restart for next life to commence $299f: a2 0b LDX #$0b $29a1: a5 37 LDA $37 $29a3: 85 35 STA $BUCKET_FILLED $29a5: bd 24 0d LDA $0d24,X $29a8: 9d a0 0b STA $0ba0,X $29ab: bd f8 0c LDA $0cf8,X $29ae: 9d e8 0b STA $0be8,X $29b1: bd 04 0d LDA $0d04,X $29b4: 9d 30 0c STA $0c30,X $29b7: a9 04 LDA #$04 $29b9: 95 00 STA $00,X $29bb: ca DEX $29bc: 10 e3 BPL $29a1 $29be: a2 03 LDX #$03 $29c0: bc f1 09 LDY $09f1,X $29c3: 98 TYA $29c4: 9d c0 09 STA $CARRYING,X $29c7: 30 05 BMI $29ce // if slot not empty $29c9: a9 06 LDA #$06 // $29cb: 99 00 00 STA $0000,Y // store #&06 at objects position $29ce: ca DEX $29cf: 10 ef BPL $29c0 $29d1: a4 14 LDY $14 // 9c was copied to &14 at the start... $29d3: 84 9c STY $HOLDING $29d5: a9 02 LDA #$02 $29d7: 99 00 00 STA $0000,Y $29da: a6 89 LDX $89 // X=3 if called from ESCAPE // .RESTART: a9 ff LDA #$ff $29de: 85 63 STA $MEANSOFDEATH $29e0: 85 5d STA $5d $29e2: 85 47 STA $47 // Starve Counter $29e4: 85 6c STA $6c $29e6: 85 53 STA $53 $29e8: a9 00 LDA #$00 $29ea: 85 75 STA $ALIVE $29ec: 85 9e STA $9e $29ee: 8d 47 0d STA $0d47 $29f1: bd ff 09 LDA $09ff,X $29f4: 8d 5f 0c STA $0c5f $29f7: bd f6 09 LDA $09f6,X $29fa: 8d cf 0b STA $0bcf $29fd: 38 SEC $29fe: e9 78 SBC #$78 $2a00: 85 85 STA $85 $2a02: 8a TXA $2a03: 8d 17 0c STA JTINDEX $2a06: e9 00 SBC #$00 $2a08: 85 86 STA $86 $2a0a: 4c 31 15 JMP INIT // RESTART THE GAME !!! .LIV1: a0 03 LDY #$03 $2a0f: be c0 09 LDX $CARRYING,Y $2a12: ca DEX $2a13: ca DEX $2a14: e0 03 CPX #$03 $2a16: b0 02 BCS $2a1a $2a18: e6 57 INC $57 $2a1a: 88 DEY $2a1b: 10 f2 BPL $2a0f $2a1d: 18 CLC $2a1e: a5 57 LDA $57 $2a20: 65 69 ADC $69 $2a22: 65 46 ADC $46 $2a24: 85 57 STA $57 $2a26: d0 0c BNE GAMEOVER .U1: 20 2f 2a JSR WWE // Prints score $2a2b: a0 0a LDY #$0a $2a2d: a9 00 LDA #$00 .WWE: 29 0f AND #$0f $2a31: 4c fa 2f JMP PRINTNUMBER // When you have run out of lives .GAMEOVER: 20 7b 2a JSR PRINTANDPAUSE .PAUSE a5 ec LDA $ec $2a39: c9 e2 CMP #$e2 // SPACE You have to press S-P-A-C-E-!-!-! $2a3b: d0 fa BNE .PAUSE .ESCAPE: a9 04 LDA #$04 $2a3f: 85 46 STA $46 $2a41: a2 08 LDX #$08 $2a43: a9 00 LDA #$00 $2a45: 85 35 STA $BUCKET_FILLED $2a47: 9d 08 0a STA $0a08,X $2a4a: ca DEX $2a4b: 10 f6 BPL $2a43 $2a4d: a2 03 LDX #$03 $2a4f: a9 ff LDA #$ff $2a51: 9d c0 09 STA $CARRYING,X $2a54: ca DEX $2a55: 10 fa BPL $2a51 $2a57: 85 9c STA $HOLDING $2a59: 85 57 STA $57 $2a5b: a9 e8 LDA #$e8 $2a5d: 85 69 STA $69 // Tested in MAIN loop $2a5f: ea NOP $2a60: a2 2f LDX #$2f $2a62: 20 96 25 JSR .WY $2a65: ca DEX $2a66: e0 18 CPX #$18 $2a68: 10 f8 BPL $2a62 $2a6a: a2 0b LDX #$0b $2a6c: 20 9b 25 JSR .WWF $2a6f: a9 04 LDA #$04 $2a71: 95 00 STA $00,X $2a73: ca DEX $2a74: 10 f6 BPL $2a6c $2a76: a2 03 LDX #$03 $2a78: 4c dc 29 JMP .RESTART .PRINTANDPAUSE:20 8c 2a JSR YOUFELL $2a7e: a9 80 LDA #$80 $2a80: 85 72 STA $72 $2a82: a9 13 LDA #$13 // Disable events 80 times. //pause $2a84: 20 f4 ff JSR $fff4 $2a87: c6 72 DEC $72 $2a89: d0 f7 BNE $2a82 $2a8b: 60 RTS .YOUFELL: 20 f2 1e JSR SCORE $2a8f: a2 02 LDX #$02 $2a91: a0 e0 LDY #$e0 $2a93: 20 a4 1e JSR SETTEXTADDRESS $2a96: a5 75 LDA $ALIVE $2a98: c9 ff CMP #$ff $2a9a: f0 64 BEQ $2b00 $2a9c: a4 63 LDY $MEANSOFDEATH $2a9e: c0 06 CPY #$06 $2aa0: 10 17 BPL $2ab9 $2aa2: a2 07 LDX #$07 // "YOU" $2aa4: 20 15 2b JSR MESSAGES $2aa7: a2 02 LDX #$02 $2aa9: a0 f0 LDY #$f0 $2aab: 20 a4 1e JSR SETTEXTADDRESS $2aae: a4 63 LDY $MEANSOFDEATH $2ab0: be a6 0c LDX $0ca6,Y // "0SCORE, 1 LEFT, 2FELL(&63), 3STARVED(&68), 4DROWNED(&70), 5ARE DEAD(&78)" $2ab3: 20 15 2b JSR MESSAGES $2ab6: 4c d9 2a JMP $2ad9 $2ab9: a2 0b LDX #$0b // "THE" $2abb: 20 15 2b JSR MESSAGES $2abe: a2 02 LDX #$02 $2ac0: a0 f0 LDY #$f0 $2ac2: 20 a4 1e JSR SETTEXTADDRESS $2ac5: a4 63 LDY $MEANSOFDEATH $2ac7: be a6 0c LDX $0ca6,Y // 6"TROLL(&81), 7SPIDER(&87), 8WITCH(&8f)" $2aca: 20 15 2b JSR MESSAGES $2acd: a2 03 LDX #$03 $2acf: a0 7c LDY #$7c $2ad1: 20 a4 1e JSR SETTEXTADDRESS $2ad4: a2 1f LDX #$1f // "HAS KILLED YOU" $2ad6: 20 15 2b JSR MESSAGES $2ad9: a2 04 LDX #$04 $2adb: a0 20 LDY #$20 $2add: 20 a4 1e JSR SETTEXTADDRESS $2ae0: a5 46 LDA $46 $2ae2: f0 10 BEQ $2af4 $2ae4: a2 0f LDX #$0f $2ae6: c9 01 CMP #$01 $2ae8: f0 02 BEQ $2aec $2aea: a2 2e LDX #$2e // " LIVES LEFT" $2aec: 09 30 ORA #$30 $2aee: 20 ee ff JSR $ffee // PRINT $2af1: 4c 15 2b JMP MESSAGES $2af4: a2 04 LDX #$04 $2af6: a0 bc LDY #$bc $2af8: 20 a4 1e JSR SETTEXTADDRESS $2afb: a2 44 LDX #$44 $2afd: 4c 02 2b JMP $2b02 // This is the message you get on completion of the game. $2b00: a2 54 LDX #$54 // "TREASURE FOUND" $2b02: 20 15 2b JSR MESSAGES $2b05: a2 04 LDX #$04 $2b07: a0 28 LDY #$28 $2b09: 20 a4 1e JSR SETTEXTADDRESS $2b0c: a2 3a LDX #$3a // "GAME OVER" $2b0e: 4c 15 2b JMP MESSAGES $2b11: 20 ee ff JSR $ffee // PRINT $2b14: e8 INX .MESSAGES: bd 7c 0a LDA $0a7c,X $2b18: 10 f7 BPL $2b11 $2b1a: 60 RTS ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////