SUBSIDIARY ROUTINES ==================== /*---------------------------------------- * * Entry Point $00c0 * in: X out: N,Z *----------------------------------------*/ $00c0: a5 67 LDA $67 $00c2: 29 01 AND #$01 $00c4: 85 81 STA $81 $00c6: 8a TXA $00c7: 29 01 AND #$01 $00c9: c5 81 CMP $81 $00cb: 60 RTS /*---------------------------------------- * * Entry Point $0910 * *----------------------------------------*/ in: &71, &74, &77, &78 &85, &86 out: A=00,01,FF $0910: a9 51 LDA #$51 $0912: 38 SEC $0913: e5 74 SBC $74 $0915: 85 7c STA $7c $0917: e9 03 SBC #$03 $0919: 85 7b STA $7b $091b: a5 77 LDA $77 $091d: 38 SEC $091e: e5 85 SBC $85 $0920: 85 79 STA $SCREEN_EXTENT $0922: a5 78 LDA $78 $0924: e5 86 SBC $86 $0926: d0 14 BNE $093c $0928: a5 79 LDA $SCREEN_EXTENT $092a: c9 03 CMP #$03 $092c: 90 0b BCC $0939 $092e: c5 7c CMP $7c $0930: b0 0a BCS $093c $0932: c5 7b CMP $7b $0934: b0 03 BCS $0939 $0936: a9 ff LDA #$ff $0938: 60 RTS $0939: a9 01 LDA #$01 $093b: 60 RTS $093c: a9 00 LDA #$00 $093e: 60 RTS $093f: a5 71 LDA $71 $0941: 30 0a BMI $094d $0943: f0 04 BEQ $0949 $0945: de 30 0c DEC $RIKER,X $0948: 60 RTS $0949: fe 30 0c INC $RIKER,X $094c: 60 RTS $094d: c9 ff CMP #$ff $094f: f0 06 BEQ $0957 $0951: de 30 0c DEC $RIKER,X $0954: de 30 0c DEC $RIKER,X $0957: 60 RTS /*---------------------------------------- * * Entry Point $016a * *----------------------------------------*/ .SEC: 38 SEC $016b: 60 RTS /*----------------------------------------*/ /*---------------------------------------- * * Entry Point $087f * *----------------------------------------*/ .MODE: a9 16 LDA #$16 // $0882: 20 ee ff JSR $ffee // $0885: a9 02 LDA #$02 // $0887: 20 ee ff JSR $ffee // Mode 2 ( &3000 -> &7fff = &4fff bytes) $088a: a9 08 LDA #$08 $088c: 8d 00 fe STA $fe00 // SHELIA, Interlace and delay $088f: a9 c0 LDA #$c0 $0891: 8d 01 fe STA $fe01 // SHELIA, nonsense only first 6 bits used. // Normal, non-interlaced sync // No delay. $0893: a9 9b LDA #$9b $0895: a2 90 LDX #$90 $0897: 20 f4 ff JSR $fff4 // OSBYTE Write to video ULA palette register 97 $089a: a2 f0 LDX #$f0 $089c: 4c f4 ff JMP $fff4 // OSBYTE Write to video ULA palette register f7 /*----------------------------------------*/ /*---------------------------------------- * * Entry Point $03e0 (NOTE THIS IS ALSO KBD BUFFER) * * Clear memory from $3000 -> $ff00 ! ! ! * *----------------------------------------*/ $03e0: a9 00 LDA #$00 $03e2: aa TAX $03e3: 9d 00 30 STA $3000,X $03e6: e8 INX $03e7: d0 fa BNE $03e3 $03e9: ee e5 03 INC $03e5 $03ec: 10 f5 BPL $03e3 $03ee: 4c 28 15 JMP $1528 /*----------------------------------------*/ MAIN ROUTINES ============= $1528 is called after the relocation code at $4340 has run and called the small routine at $03e0. /*---------------------------------------- * * Entry Point, never called again..... * *----------------------------------------*/ $1528: 20 80 08 JSR MODE $152b: 20 cc 2b JSR COLOURS $152e: 4c 3d 2a JMP ESCAPE // Mode 2 Screen Layout:- // ----------------------- // 128 bytes wide // // // 8 bits * 32 // // /*----------------------------------------*/ /* /* Does the snazzy screen scroll /* /*----------------------------------------*/ .INIT: 20 6a 01 JSR SEC { SEC, RTS } $1534: a9 50 LDA #$50 $1536: 85 72 STA $TMP_72 .LOOP: 20 01 21 JSR MOVE16PIXELSLEFT // Generates SCRHI,SCRLO, only other call to this rout from DETECTKEYS $153b: 20 4f 21 JSR SETCRTC // $153e: 20 a5 20 JSR WRITESCREEN // $1541: c6 72 DEC $TMP_72 $1543: d0 f3 BNE LOOP // Do this 80 times - vertical scrolling /*---------------------------------------- * * Main loop * * 28/2/2006 /*----------------------------------------- .MAIN: a5 75 LDA $ALIVE // Starts at zero, set at 2337 to #&FF and 2800 $1547: 10 03 BPL $154c $1549: 4c 91 29 JMP LIVES // Jump here when dead $154c: a5 ec LDA $ec $154e: c9 f0 CMP #$f0 $1550: d0 03 BNE $1555 $1552: 4c 3d 2a JMP ESCAPE // ESCAPE pressed - do a restart $1555: e6 67 INC $67 // Initial value &67=#&00, compared in $00c0 $1557: d0 0a BNE SAVE // Carry on if not zero, not sure but is checked later on // Carried out first time round the loop (when =#&00) $1559: e6 68 INC $68 // and every 255 times round the MAIN loop $155b: a5 69 LDA $69 $155d: c9 01 CMP #$01 // Hmmm, $69 is reset to #$e8 when escaped pressed $155f: f0 02 BEQ RESTORE // =232 $1561: c6 69 DEC $69 // /*-----------------------------------*/ .SAVE: ae 17 0c LDX JTINDEX $1566: ad cf 0b LDA $0bcf $1569: dd f6 09 CMP $09f6,X $156c: d0 48 BNE PLAY $156e: 86 89 STX $89 // Used for restoring value in .RESTART ( when not called by 'ESCAPE ' ) $1570: bd 08 0a LDA $0a08,X $1573: 30 17 BMI $158c $1575: a9 ff LDA #$ff $1577: 9d 08 0a STA $0a08,X $157a: e6 57 INC $57 $157c: e0 00 CPX #$00 $157e: f0 08 BEQ $1588 $1580: e0 02 CPX #$02 $1582: f0 04 BEQ $1588 $1584: e0 04 CPX #$04 $1586: d0 04 BNE $158c /*-----------------------------------*/ $1588: a9 30 LDA #$30 $158a: 85 34 STA $34 /*-----------------------------------*/ $158c: a5 35 LDA $BUCKET_FILLED // For throwing at the witch $158e: 85 37 STA $37 /*---------------------------------------- * * Preseve values... to set a restore point * if you die... * *----------------------------------------*/ $1590: a2 03 LDX #$03 $1592: bd c0 09 LDA $CARRYING,X $1595: 9d f1 09 STA $09f1,X $1598: ca DEX $1599: 10 f7 BPL $1592 /*-----------------------------------*/ $159b: a5 9c LDA $HOLDING $159d: 85 14 STA $14 /*-----------------------------------*/ $159f: a2 0b LDX #$0b .LOOP: bd a0 0b LDA $RONALD,X $15a4: 9d 24 0d STA $0d24,X $15a7: bd e8 0b LDA $RICHARD,X $15aa: 9d f8 0c STA $0cf8,X $15ad: bd 30 0c LDA $RIKER,X $15b0: 9d 04 0d STA $0d04,X $15b3: ca DEX $15b4: 10 eb BPL LOOP // Execute one game "frame" // // // /*-----------------------------------*/ .PLAY: a9 ff LDA #$ff $15b8: 85 9d STA $9d $15ba: 85 30 STA $30 $15bc: 85 33 STA $33 $15be: a9 13 LDA #$13 $15c0: 20 f4 ff JSR $fff4 // OSBYTE - Disable events $15c3: ad 79 fe LDA $fe79 // VIA-B Timer2 MSB / mirrored location $15c6: 85 32 STA $32 // Save for later $15c8: 20 5a 1e JSR INVEN // Has "I" been pressed? $15cb: 20 ec 15 JSR JMPTABLE // Affects Red Demons and Green man $15ce: 20 ad 2d JSR SETPALETTE // Test &34 for Minus, Zero or 20 $15d1: 20 58 17 JSR DETECTKEYS // React to keypresses $15d4: 20 fb 20 JSR SCROLL3 // Adjust SCRHI SCRLO screen origin $15d7: 20 01 2c JSR TAKE // Need this to pick stuff up $15da: 20 ea 2c JSR SPRITEYIT // Without this get flicker/semi-invisible man $15dd: 20 92 20 JSR PACING // Speed Timing issues --- CALLS AND SETS THE CRTC SCREEN MEMORY $15e0: 20 e4 2c JSR M7 // Without this no man appears but you can scroll freely! manipulates 0c30 $15e3: 20 6e 1d JSR M8 $15e6: 20 b7 2f JSR SWITCH_ON_OBJ_PROP $15e9: 4c 45 15 JMP MAIN /*-----------------------------------*/ * Use .JTINDEX to get index into $0a11 for entry * * Range min #&00 max #&27 * * CONTents of $0a11:- * {$00,$03,$09,$0c,$12,$18,$24,$24,$21,$50,$1d,$d0,$c0,$b0, * $ff,$e0,$a0,$00,$20,$10,$00,$90,$00,$10,$10,$80,$00,$00, * $00,$02,$00,$03,$01,$00,$05,$02} * * On restart JTINDEX is #&03 so routine will jump to routine N5 /*-----------------------------------*/ .JMPTABLE : ac 17 0c LDY JTINDEX $15ef: b9 11 0a LDA $0a11,Y $15f2: 8d f6 15 STA $15f6 $15f5: 10 ff BPL $15f6 // Index into the jump table below /*----------------------------------------*/ $15f7: 4c 80 18 JMP N1 $15fa: 20 80 18 JSR N1 $15fd: 4c 1b 2b JMP STARVING $1600: 4c 7b 26 JMP SPIDERCHECK $1603: 20 7b 26 JSR SPIDERCHECK $1606: 4c 44 23 JMP N4_sprite $1609: 20 44 23 JSR N4_sprite $160c: 4c fc 22 JMP N5 // N5 is called on startup $160f: 20 44 23 JSR N4_sprite $1612: 20 15 23 JSR N6 $1615: 20 20 23 JSR N7 $1618: 4c 39 2e JMP AIR $161b: 20 39 2e JSR AIR $161e: 4c c5 25 JMP N9 /*----------------------------------------*/ .W4: a5 71 LDA $71 $1623: 30 7a BMI LOC1 $1625: bd 18 0d LDA $BARNEY,X $1628: c9 04 CMP #$04 $162a: 30 0d BMI LOC2 $162c: 20 c0 00 JSR $00c0 $162f: f0 08 BEQ LOC2 $1631: a9 ff LDA #$ff $1633: 85 71 STA $71 $1635: 85 70 STA $70 $1637: 18 CLC $1638: 60 RTS .LOC2: bd a0 0b LDA $RONALD,X $163c: 85 77 STA $77 $163e: 29 07 AND #$07 $1640: f0 5d BEQ .LOC1 $1642: 18 CLC $1643: 65 74 ADC $74 $1645: c9 08 CMP #$08 $1647: 10 56 BPL .LOC1 $1649: bd e8 0b LDA $RICHARD,X $164c: 85 78 STA $78 $164e: a5 71 LDA $71 $1650: f0 15 BEQ $1667 $1652: bd 30 0c LDA $RIKER,X $1655: 85 76 STA $76 //Used in &0769 $1657: c6 76 DEC $76 //Used in &0769 $1659: 30 44 BMI LOC1 $165b: 20 69 07 JSR $0769_&8b // &8b = 4 bits <--- DISPLAY $165e: d0 1f BNE $167f // If not air //Air $1660: 68 PLA } $1661: 68 PLA } Expedite RTS $1662: 4c 60 18 JMP $1860 $1665: 30 38 BMI .LOC1 // Never gets here $1667: bd 30 0c LDA $RIKER,X $166a: 18 CLC $166b: 65 73 ADC $73 $166d: 85 76 STA $76 //Used in &0769 $166f: 20 69 07 JSR $0769 $1672: c9 01 CMP #$01 $1674: f0 29 BEQ .LOC1 $1676: c9 04 CMP #$04 $1678: f0 14 BEQ $168e $167a: bd 30 0c LDA $RIKER,X $167d: 85 76 STA $76 //Used in &0769 // // Not air // $167f: 20 69 07 JSR $0769_&8b // &8b = 4 bits $1682: c9 0b CMP #$0b // Water+Ladder $1684: f0 08 BEQ $168e $1686: c9 06 CMP #$06 // Walkway $1688: 10 15 BPL LOC1 $168a: c9 04 CMP #$04 // Ladder $168c: 30 11 BMI LOC1 // // Water+Ladder // $168e: bd 30 0c LDA $RIKER,X $1691: 29 01 AND #$01 $1693: 18 CLC $1694: 69 04 ADC #$04 $1696: 9d 18 0d STA $BARNEY,X $1699: a9 ff LDA #$ff $169b: 85 70 STA $70 $169d: 18 CLC $169e: 60 RTS .LOC1: a9 ff LDA #$ff //Negate up/down $16a1: 85 71 STA $71 $16a3: 38 SEC $16a4: 60 RTS // Entry with Y set to index into zeropage... // _HOLDING_PROP4: a5 9e LDA $9e $16a7: 30 35 BMI $16de // RTS $16a9: a4 9c LDY $HOLDING $16ab: 30 31 BMI $16de // RTS $16ad: a5 50 LDA $50 $16af: d0 2d BNE $16de // RTS $16b1: b9 00 00 LDA $0000,Y $16b4: c9 04 CMP #$04 // Property 4 $16b6: f0 1f BEQ $16d7 $16b8: 48 PHA // Not property 4 $16b9: a5 70 LDA $70 $16bb: 99 00 00 STA $0000,Y $16be: 20 dc 2e JSR MEMORYBANK(X,Y) $16c1: 68 PLA $16c2: 99 00 00 STA $0000,Y $16c5: 84 72 STY $TMP_72 $16c7: 20 9a 21 JSR TRANSFER_0C30(Y) $16ca: 20 dc 2e JSR MEMORYBANK(X,Y) $16cd: 20 50 1c JSR returns79-7a $16d0: 20 3f 1c JSR CLCis&76lessthan1C $16d3: a4 72 LDY $TMP_72 $16d5: 90 07 BCC $16de // RTS $16d7: a9 ff LDA #$ff // property 4 $16d9: 85 71 STA $71 $16db: 85 70 STA $70 $16dd: 60 RTS $16de: 18 CLC $16df: 60 RTS .WBATH: a5 9e LDA $9e $16e2: 85 70 STA $70 // set-seventy $16e4: a2 2f LDX #$2f $16e6: 10 c9 BPL $16b1 // // Call with &9d,&79,&70,&7f // .W5: a2 2f LDX #$2f $16ea: a5 9d LDA $9d $16ec: 10 14 BPL $1702 $16ee: 20 98 21 JSR TRANSFER_0C30(Y)_PRE // Call with #$2f, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $16f1: 20 10 09 JSR $0910 $16f4: a5 79 LDA $SCREEN_EXTENT $16f6: c9 10 CMP #$10 $16f8: 30 04 BMI $16fe $16fa: c9 3b CMP #$3b $16fc: 30 04 BMI $1702 $16fe: a5 70 LDA $70 $1700: 85 9d STA $9d $1702: ad 47 0d LDA $0d47 $1705: 85 7f STA $7f $1707: 20 cc 2c JSR STORE-70-71-7F $170a: 60 RTS .returnsBARNEYX: a5 70 LDA $70 $170d: 30 11 BMI $1720 $170f: bd a0 0b LDA $RONALD,X $1712: 29 01 AND #$01 $1714: a4 50 LDY $50 $1716: f0 02 BEQ $171a $1718: 49 01 EOR #$01 $171a: 18 CLC $171b: 65 70 ADC $70 $171d: 9d 18 0d STA $BARNEY,X $1720: bd 18 0d LDA $BARNEY,X $1723: 60 RTS .is&09eq4: a5 09 LDA $09 $1726: c9 04 CMP #$04 $1728: d0 2d BNE $1757 // RTS $172a: ad 17 0c LDA JTINDEX $172d: cd f1 0b CMP $0bf1 $1730: d0 25 BNE $1757 // RTS $1732: ac 5f 0c LDY $0c5f $1735: 88 DEY $1736: cc 39 0c CPY $0c39 $1739: d0 1c BNE $1757 // RTS $173b: ad a9 0b LDA $0ba9 $173e: 38 SEC $173f: ed cf 0b SBC $0bcf $1742: 90 13 BCC $1757 // RTS $1744: c9 03 CMP #$03 // piece of scenery??? would be slope $1746: b0 0f BCS $1757 // RTS $1748: a9 ff LDA #$ff // Resetting falling flags $174a: 85 6d STA $6d $174c: 85 53 STA $53 $174e: 85 6c STA $FALLING $1750: a2 68 LDX #$68 // Sound command address block is 0968 $1752: 20 35 0a JSR PLAYSOUND $1755: 68 PLA // Hmm, are we pulling the return address of the stack so we return from the $1756: 68 PLA // call previous??? $1757: 60 RTS /*---------------------------------------- * * 1/3/2006 Keypress routine... Called from "PLAY" * *----------------------------------------*/ .DETECTKEYS: a2 2f LDX #$2f $175a: 20 75 20 JSR check0C30_SEC $175d: 90 03 BCC $1762 $175f: 4c 35 1f JMP MOREKEYS $1762: a5 63 LDA $MEANSOFDEATH $1764: 30 03 BMI $1769 $1766: 4c b5 27 JMP $27b5 $1769: a9 00 LDA #$00 $176b: a4 ec LDY $ec $176d: c0 c9 CPY #$c9 // Keypress - RETURN $176f: f0 02 BEQ $1773 $1771: 85 52 STA $52 $1773: a5 ed LDA $ed $1775: 20 24 2f JSR FKEYS $1778: 10 05 BPL $177f $177a: a5 ec LDA $ec $177c: 20 24 2f JSR FKEYS_returns_X $177f: a5 9e LDA $9e $1781: 30 0f BMI KEYPRESS_SCROLL $1783: 20 18 1d JSR THROWING(X) // only call to THROWING $1786: a5 ed LDA $ed $1788: 20 34 2f JSR PRSKEYS // (P)ickup, (R)etrieve, (S)tore $178b: 30 05 BMI KEYPRESS_SCROLL $178d: a5 ec LDA $ec $178f: 20 34 2f JSR PRSKEYS .KEYPRESS_SCROLL: a9 ff LDA #$ff $1794: 85 70 STA $70 $1796: 85 71 STA $71 $1798: a2 2f LDX #$2f $179a: a5 53 LDA $53 $179c: 30 03 BMI $17a1 // ????? $179e: 4c ce 1a JMP $1ace $17a1: 20 98 21 JSR TRANSFER_0C30(Y)_PRE // Call with #$2f, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $17a4: 20 10 09 JSR $0910 $17a7: a5 ec LDA $ec // Keypress "C" Scroll whole screen left... $17a9: c9 d2 CMP #$d2 $17ab: d0 0a BNE $17b7 $17ad: a5 79 LDA $SCREEN_EXTENT $17af: c9 10 CMP #$10 // extent left $17b1: 30 17 BMI $17ca $17b3: a9 02 LDA #$02 $17b5: 10 0e BPL $17c5 $17b7: a5 ec LDA $ec // Keypress "V" scroll whole screen right... $17b9: c9 e3 CMP #$e3 $17bb: d0 0d BNE $17ca $17bd: a5 79 LDA $SCREEN_EXTENT $17bf: c9 3b CMP #$3b // extent right $17c1: 10 07 BPL $17ca $17c3: a9 00 LDA #$00 $17c5: 85 9d STA $9d $17c7: 4c 75 18 JMP MOVE16PIXELSLEFT // scrolling // When already moved to maximum extent possible $17ca: a5 62 LDA $62 $17cc: 10 01 BPL $17cf $17ce: 60 RTS /*----------------------------------------*/ // Can jump left and right $17cf: a5 52 LDA $52 $17d1: d0 21 BNE $17f4 $17d3: a5 ec LDA $ec $17d5: c9 c9 CMP #$c9 // Keypress "RETURN" - Jump $17d7: d0 1b BNE $17f4 $17d9: a9 00 LDA #$00 // It is "RETURN" called from way back where $17db: 85 6d STA $6d $17dd: 85 53 STA $53 $17df: a9 01 LDA #$01 $17e1: 85 52 STA $52 $17e3: a5 ed LDA $ed // Rollover... $17e5: 20 85 2e JSR ZXKEYS // Set &70 or &71 if "ZX:/" pressed $17e8: a5 70 LDA $70 $17ea: 85 6f STA $6f $17ec: a2 70 LDX #$70 $17ee: 20 35 0a JSR PLAYSOUND // Sound command address block is 0970 $17f1: 4c 08 1b JMP AFTERKEYS // // Player is not jumping // $17f4: a5 ed LDA $ed // Keyboard rollover $17f6: 20 85 2e JSR ZXKEYS $17f9: 10 05 BPL $1800 $17fb: a5 ec LDA $ec $17fd: 20 85 2e JSR ZXKEYS $1800: a5 70 LDA $70 $1802: c5 62 CMP $62 // set after last screenwrite $1804: d0 06 BNE $180c $1806: a9 ff LDA #$ff $1808: 85 70 STA $70 $180a: 30 69 BMI MOVESCREEN $180c: a5 70 LDA $70 $180e: 30 27 BMI $1837 $1810: 20 98 21 JSR TRANSFER_0C30(Y)_PRE // Call with #$2f, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $1813: 30 22 BMI $1837 $1815: 20 8b 1c JSR W2 $1818: b0 10 BCS $182a $181a: 20 a5 16 JSR _HOLDING_PROP4 $181d: b0 56 BCS MOVESCREEN $181f: a2 b8 LDX #$b8 $1821: 20 35 0a JSR PLAYSOUND // Sound command address block is 09b8 $1824: 20 0b 17 JSR returnsBARNEYX $1827: 4c 6d 18 JMP $186d // $70 -> $9e $182a: a5 9e LDA $9e $182c: 30 17 BMI $1845 $182e: a5 6b LDA $6b $1830: 85 70 STA $70 $1832: 30 41 BMI MOVESCREEN $1834: 4c 60 18 JMP $1860 $1837: 20 21 16 JSR W4 $183a: a5 71 LDA $71 $183c: 30 37 BMI MOVESCREEN $183e: a2 a0 LDX #$a0 $1840: 20 35 0a JSR PLAYSOUND // Sound command address block is 09a0 $1843: 10 28 BPL $186d // $70 -> $9e $1845: a5 67 LDA $67 $1847: 29 01 AND #$01 $1849: d0 2a BNE MOVESCREEN $184b: a5 6b LDA $6b $184d: 85 70 STA $70 $184f: ad 47 0d LDA $0d47 $1852: 49 01 EOR #$01 $1854: 8d 47 0d STA $0d47 $1857: ad cf 0b LDA $0bcf $185a: 29 07 AND #$07 $185c: c9 05 CMP #$05 $185e: 30 15 BMI MOVESCREEN // Start falling $1860: a2 60 LDX #$60 $1862: 20 35 0a JSR PLAYSOUND // Sound command address block is 0960 $1865: a9 00 LDA #$00 $1867: 85 53 STA $53 $1869: 85 6c STA $FALLING $186b: f0 04 BEQ $1871 // Always $186d: a5 70 LDA $70 $186f: 85 9e STA $9e $1871: a5 70 LDA $70 $1873: 85 9d STA $9d .MOVESCREEN: 20 ac 2e JSR EIGHTINZP-HOLDING // 9e set to index // $70 holds 00,01 $1878: 20 e8 16 JSR W5 $187b: a2 2f LDX #$2f $187d: 86 62 STX $62 $187f: 60 RTS /*----------------------------------------*/ .N1: a9 9b LDA #$9b $1882: a2 a2 LDX #$a2 // OSBYTE - Not used by OS 1.2!!!!!!!! $1884: 20 f4 ff JSR $fff4 ///////////////////////////////// $1887: a9 03 LDA #$03 $1889: 85 65 STA $N1_65 $188b: a2 1b LDX #$1b .BATH: 20 9a 1a JSR BRIGHTON // references &0000,X $1890: c6 64 DEC $N1_64 // Contains X $1892: a6 64 LDX $N1_64 $1894: c6 65 DEC $N1_65 $1896: 10 f5 BPL BATH // Loop 3 times $1898: 60 RTS /*----------------------------------------*/ .KEYPRESS_LEFTRIGHT: a5 12 LDA $12 $189b: f0 61 BEQ $18fe $189d: c6 60 DEC $60 $189f: d0 06 BNE $18a7 $18a1: 20 ad 19 JSR func(X)_#&80->ZP-X $18a4: 4c fe 18 JMP $18fe $18a7: a5 9c LDA $HOLDING $18a9: d0 53 BNE $18fe // Sword $18ab: a9 ff LDA #$ff $18ad: 85 70 STA $70 $18af: a5 ec LDA $ec $18b1: 20 85 2e JSR ZXKEYS $18b4: a2 2f LDX #$2f $18b6: a5 70 LDA $70 $18b8: 30 04 BMI $18be // Neither "Z" or "X" pressed... $18ba: c5 9e CMP $9e // Don't know what $9e is... $18bc: d0 40 BNE $18fe $18be: a5 60 LDA $60 $18c0: 29 01 AND #$01 $18c2: d0 35 BNE $18f9 $18c4: a5 60 LDA $60 $18c6: 29 08 AND #$08 $18c8: d0 06 BNE $18d0 $18ca: a5 70 LDA $70 $18cc: 30 2b BMI $18f9 $18ce: 10 06 BPL $18d6 $18d0: a5 9e LDA $9e // "Z" as it is 00 $18d2: 49 02 EOR #$02 $18d4: 85 70 STA $70 $18d6: a2 2f LDX #$2f // "X" as it is 02 $18d8: 20 98 21 JSR TRANSFER_0C30(Y)_PRE // Call with #$2f, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $18db: 20 8b 1c JSR W2 $18de: b0 19 BCS $18f9 $18e0: a5 50 LDA $50 $18e2: 10 06 BPL $18ea $18e4: 20 c5 19 JSR TIMERX $18e7: 4c fe 18 JMP $18fe $18ea: a6 64 LDX $N1_64 $18ec: 20 98 21 JSR TRANSFER_0C30(Y)_PRE // Call with $N1_64, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $18ef: 20 8b 1c JSR W2 $18f2: b0 05 BCS $18f9 $18f4: a5 50 LDA $50 $18f6: 30 06 BMI $18fe $18f8: 60 RTS $18f9: a9 ff LDA #$ff $18fb: 85 70 STA $70 $18fd: 60 RTS $18fe: a0 0f LDY #$0f $1900: 20 9a 21 JSR TRANSFER_0C30(Y) $1903: 20 9d 22 JSR PLOTSPRITE $1906: a9 40 LDA #$40 $1908: 85 61 STA $61 $190a: 85 12 STA $12 $190c: 85 62 STA $62 $190e: a6 64 LDX $N1_64 $1910: 4c 4e 24 JMP BIGSCREEN $1913: a9 01 LDA #$01 $1915: 85 13 STA $13 $1917: b4 00 LDY $00,X $1919: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $191c: a5 77 LDA $77 $191e: d0 0a BNE $192a $1920: a5 76 LDA $76 //Used in &0769 $1922: d0 0d BNE $1931 $1924: 98 TYA $1925: 49 01 EOR #$01 $1927: 95 00 STA $00,X $1929: 60 RTS $192a: c9 60 CMP #$60 $192c: 90 03 BCC $1931 $192e: 20 48 24 JSR .V7 .V7: 20 97 24 JSR WP $244b: 4c 9f 24 JMP $249f .WP: a4 65 LDY $N1_65 $2499: a9 ff LDA #$ff $249b: 99 38 00 STA $0038,Y $249e: 60 RTS $249f: a4 65 LDY $N1_65 $24a1: a9 ff LDA #$ff $24a3: 99 40 00 STA $0040,Y $24a6: 60 RTS $1931: 4c 4e 24 JMP BIGSCREEN .WD: a5 63 LDA $MEANSOFDEATH $1936: 10 db BPL $1913 $1938: ad 17 0c LDA JTINDEX $193b: dd 40 0b CMP $0b40,X $193e: d0 d3 BNE $1913 $1940: a0 2f LDY #$2f $1942: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $1945: a5 77 LDA $77 $1947: dd 4d 0a CMP $0a4d,X $194a: b0 c7 BCS $1913 $194c: a5 76 LDA $76 //Used in &0769 $194e: dd 58 0a CMP $0a58,X $1951: b0 c0 BCS $1913 $1953: a9 00 LDA #$00 $1955: 85 50 STA $50 $1957: a5 9e LDA $9e $1959: 30 0a BMI $1965 $195b: c5 70 CMP $70 $195d: f0 06 BEQ $1965 $195f: a5 9c LDA $HOLDING $1961: d0 02 BNE $1965 // Branch if hands empty $1963: c6 50 DEC $50 $1965: bd 18 0d LDA $BARNEY,X $1968: c9 04 CMP #$04 $196a: 30 07 BMI $1973 $196c: a5 9e LDA $9e $196e: 30 09 BMI $1979 $1970: 4c 4e 24 JMP BIGSCREEN $1973: 29 02 AND #$02 $1975: c5 70 CMP $70 $1977: d0 04 BNE $197d $1979: e6 50 INC $50 $197b: 10 07 BPL $1984 $197d: a5 50 LDA $50 $197f: d0 03 BNE $1984 $1981: 4c 07 1a JMP $1a07 // BEQ &1a07 $1984: a4 9e LDY $9e $1986: a5 50 LDA $50 $1988: d0 0f BNE $1999 $198a: a5 76 LDA $76 //Used in &0769 $198c: d0 0b BNE $1999 $198e: a5 77 LDA $77 $1990: d9 e6 09 CMP $09e6,Y $1993: f0 3a BEQ $19cf $1995: 10 70 BPL $1a07 $1997: 30 53 BMI $19ec $1999: a5 76 LDA $76 //Used in &0769 $199b: c9 04 CMP #$04 $199d: 10 68 BPL $1a07 $199f: a5 77 LDA $77 $19a1: c9 04 CMP #$04 $19a3: 10 62 BPL $1a07 $19a5: a5 50 LDA $50 $19a7: f0 1c BEQ TIMERX $19a9: 10 0c BPL $19b7 // You are dead $19ab: 30 00 BMI func(X)_#&80->ZP-X .func(X)_#&80->ZP-X: a9 80 LDA #$80 $19af: 95 00 STA $00,X $19b1: a2 80 LDX #$80 $19b3: 20 35 0a JSR PLAYSOUND // Sound command address block is 0980 $19b6: 60 RTS $19b7: a9 00 LDA #$00 // You are dead -> ? $19b9: 85 63 STA $MEANSOFDEATH $19bb: a2 60 LDX #$60 $19bd: 20 35 0a JSR PLAYSOUND // Sound command address block is 0960 $19c0: a6 64 LDX $N1_64 $19c2: 4c 4e 24 JMP BIGSCREEN .TIMERX: a5 6d LDA $6d $19c7: 10 23 BPL $19ec $19c9: a5 71 LDA $71 $19cb: f0 e0 BEQ func(X)_#&80->ZP-X $19cd: d0 e8 BNE $19b7 // You are dead $19cf: 24 61 BIT $61 $19d1: 70 06 BVS $19d9 $19d3: a9 00 LDA #$00 $19d5: 85 12 STA $12 $19d7: f0 de BEQ $19b7 // You are dead, everytime $19d9: a5 6d LDA $6d $19db: 10 2a BPL $1a07 $19dd: a9 32 LDA #$32 // Timer value $19df: 85 60 STA $60 $19e1: a9 ff LDA #$ff $19e3: 85 62 STA $62 $19e5: 85 71 STA $71 $19e7: 85 70 STA $70 $19e9: 86 61 STX $61 $19eb: 60 RTS $19ec: a5 70 LDA $70 $19ee: 49 02 EOR #$02 $19f0: 85 70 STA $70 $19f2: 85 62 STA $62 $19f4: 20 98 21 JSR TRANSFER_0C30(Y)_PRE // Call with $61, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $19f7: 20 8b 1c JSR W2 $19fa: 90 17 BCC $1a13 $19fc: a2 2f LDX #$2f $19fe: a5 70 LDA $70 $1a00: 29 02 AND #$02 $1a02: 85 70 STA $70 $1a04: 4c e8 16 JMP .W5 $1a07: a5 5d LDA $5d $1a09: c9 ff CMP #$ff $1a0b: f0 03 BEQ $1a10 $1a0d: 4c 13 19 JMP $1913 $1a10: 4c 4e 24 JMP BIGSCREEN $1a13: a9 ff LDA #$ff $1a15: 85 61 STA $61 $1a17: 60 RTS .WE: a6 64 LDX $N1_64 $1a1a: e4 61 CPX $61 $1a1c: d0 25 BNE $1a43 $1a1e: 20 55 1a JSR W9 $1a21: a9 ff LDA #$ff $1a23: 85 71 STA $71 $1a25: a6 64 LDX $N1_64 $1a27: bd 18 0d LDA $BARNEY,X $1a2a: 49 01 EOR #$01 $1a2c: 9d 18 0d STA $BARNEY,X $1a2f: 18 CLC $1a30: 69 06 ADC #$06 $1a32: 85 7f STA $7f $1a34: 20 cc 2c JSR STORE-70-71-7F $1a37: ad 47 0d LDA $0d47 $1a3a: 49 01 EOR #$01 $1a3c: 8d 47 0d STA $0d47 $1a3f: 20 e8 16 JSR W5 $1a42: 60 RTS $1a43: a5 61 LDA $61 $1a45: 30 03 BMI $1a4a $1a47: 20 0b 17 JSR returnsBARNEYX $1a4a: bd 18 0d LDA $BARNEY,X $1a4d: 18 CLC $1a4e: 69 06 ADC #$06 $1a50: 85 7f STA $7f $1a52: 4c cc 2c JMP STORE-70-71-7F .W9: bd 18 0d LDA $BARNEY,X $1a58: 29 02 AND #$02 $1a5a: a8 TAY $1a5b: bd a0 0b LDA $RONALD,X $1a5e: 18 CLC $1a5f: 79 e2 09 ADC $09e2,Y $1a62: 8d af 0b STA $0baf $1a65: bd e8 0b LDA $RICHARD,X $1a68: 79 e3 09 ADC $09e3,Y $1a6b: 8d f7 0b STA $0bf7 $1a6e: bd 30 0c LDA $RIKER,X $1a71: 8d 3f 0c STA $0c3f $1a74: ee 3f 0c INC $0c3f $1a77: a5 60 LDA $60 $1a79: 29 07 AND #$07 $1a7b: d0 05 BNE $1a82 $1a7d: a2 a0 LDX #$a0 $1a7f: 20 35 0a JSR PLAYSOUND // Sound command address block is 09a0 $1a82: a5 60 LDA $60 $1a84: 29 04 AND #$04 $1a86: f0 04 BEQ $1a8c $1a88: a9 ba LDA #$ba $1a8a: d0 02 BNE $1a8e $1a8c: a9 b2 LDA #$b2 $1a8e: 8d 57 0d STA $0d57 $1a91: a2 0f LDX #$0f $1a93: a9 ff LDA #$ff $1a95: 85 71 STA $71 $1a97: 4c cc 2c JMP STORE-70-71-7F .BRIGHTON: 86 64 STX $N1_64 $1a9c: b5 00 LDA $00,X // Not object X $1a9e: 10 06 BPL $1aa6 $1aa0: 20 5d 25 JSR BRISTOL $1aa3: f0 1d BEQ $1ac2 $1aa5: 60 RTS $1aa6: e4 61 CPX $61 $1aa8: d0 06 BNE $1ab0 $1aaa: 20 99 18 JSR KEYPRESS_LEFTRIGHT $1aad: 4c c2 1a JMP $1ac2 $1ab0: 20 34 19 JSR WD $1ab3: a5 3e LDA $3e $1ab5: f0 0b BEQ $1ac2 $1ab7: a5 13 LDA $13 $1ab9: f0 07 BEQ $1ac2 $1abb: 46 13 LSR $13 $1abd: 20 c0 00 JSR $00c0 $1ac0: d0 0b BNE $1acd $1ac2: 20 18 1a JSR WE $1ac5: a5 61 LDA $61 $1ac7: 10 04 BPL $1acd $1ac9: a9 40 LDA #$40 $1acb: 85 61 STA $61 $1acd: 60 RTS $1ace: a5 6c LDA $FALLING $1ad0: 10 05 BPL $1ad7 $1ad2: a5 6d LDA $6d $1ad4: 10 32 BPL AFTERKEYS $1ad6: 60 RTS // Falling Rising $1ad7: 20 24 17 JSR is&09eq4 // does PLA/PLA if successful $1ada: 20 b3 25 JSR WG $1add: 90 18 BCC $1af7 // Hit the ground, then check how far we have fallen. $1adf: a5 6c LDA $FALLING // Fell-counter $1ae1: c9 10 CMP #$10 $1ae3: 90 04 BCC $1ae9 $1ae5: a9 02 LDA #$02 // Fell if &6c < 10 $1ae7: 85 63 STA $MEANSOFDEATH $1ae9: a9 ff LDA #$ff $1aeb: 85 6c STA $FALLING $1aed: 85 53 STA $53 $1aef: a2 68 LDX #$68 // Falling sound $1af1: 20 35 0a JSR PLAYSOUND // Sound command address block is 0968 $1af4: 4c 92 17 JMP KEYPRESS_SCROLL $1af7: 20 eb 1c JSR KEYPRESS_UP $1afa: 90 03 BCC $1aff $1afc: 4c 75 18 JMP MOVESCREEN $1aff: e6 6c INC $FALLING $1b01: a9 01 LDA #$01 $1b03: 85 71 STA $71 // Moving somewhat to the right? $1b05: 4c 75 18 JMP MOVESCREEN /*---------------------------------------- * * This is some kind of check after the keys * have been pressed to work out what to do next * I suspect this moves the screen left/right or up and down... * *----------------------------------------*/ .AFTERKEYS: ad 5f 0c LDA $0c5f $1b0b: c9 1c CMP #$1c $1b0d: 10 29 BPL SKIP // bit 7 not set $1b0f: a5 6f LDA $6f $1b11: 85 70 STA $70 $1b13: a5 6d LDA $6d $1b15: a0 00 LDY #$00 $1b17: c9 03 CMP #$03 // if return prssed this will be #&00 $1b19: 30 0b BMI $1b26 $1b1b: a0 ff LDY #$ff $1b1d: c9 05 CMP #$05 $1b1f: 30 05 BMI $1b26 $1b21: 20 24 17 JSR is&09eq4 // does PLA/PLA if successful $1b24: a0 01 LDY #$01 // Player is jumping $1b26: 84 71 STY $71 $1b28: 20 a5 16 JSR _HOLDING_PROP4 $1b2b: b0 0b BCS SKIP $1b2d: 20 98 21 JSR TRANSFER_0C30(Y)_PRE // Call with ???, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $1b30: 20 50 1c JSR returns79-7a $1b33: 20 5e 1b JSR LDA&70... $1b36: 90 12 BCC CONT .SKIP: a5 6d LDA $6d $1b3a: 38 SEC $1b3b: e9 04 SBC #$04 $1b3d: 10 02 BPL $1b41 // ?Fall or Rise? $1b3f: a9 00 LDA #$00 $1b41: 85 6c STA $FALLING $1b43: a9 ff LDA #$ff $1b45: 85 6d STA $6d $1b47: 4c d7 1a JMP $1ad7 .CONT: 20 eb 1c JSR KEYPRESS_UP $1b4d: 90 03 BCC $1b52 $1b4f: 4c 75 18 JMP MOVESCREEN $1b52: e6 6d INC $6d $1b54: a5 6f LDA $6f $1b56: 30 ad BMI $1b05 $1b58: 20 0b 17 JSR returnsBARNEYX $1b5b: 4c 6d 18 JMP $186d // X is passed in .LDA&70... : a5 70 LDA $70 $1b60: 10 02 BPL $1b64 // if its "ZX" $1b62: a9 00 LDA #$00 $1b64: 85 6e STA $6e // up/down $1b66: a5 71 LDA $71 $1b68: f0 38 BEQ $1ba2 ":" $1b6a: 30 02 BMI $1b6e // "/" $1b6c: c6 76 DEC $76 // jumps here if not moving up or down so run same code as for "down" $1b6e: a9 01 LDA #$01 $1b70: 85 72 STA $TMP_72 $1b72: 20 c4 1b JSR SET_&50 $1b75: b0 4c BCS $1bc3 // RTS [so returns carry will be set if &76 is -ve] $1b77: a5 70 LDA $70 $1b79: 30 0c BMI $1b87 // RTS - &70 never minus so never branches $1b7b: a5 76 LDA $76 //Used in &0769 $1b7d: 18 CLC $1b7e: 65 73 ADC $73 $1b80: 85 76 STA $76 //Used in &0769 $1b82: 20 3f 1c JSR CLCis&76lessthan1C $1b85: b0 3c BCS $1bc3 // RTS i.e wall or &76 is #&1c $1b87: a5 71 LDA $71 $1b89: 30 38 BMI $1bc3 // RTS // "/" part $1b8b: a5 79 LDA $SCREEN_EXTENT } $1b8d: 85 77 STA $77 } $1b8f: a5 7a LDA $7a } Same as for ":" $1b91: 85 78 STA $78 } $1b93: bd 30 0c LDA $RIKER,X $1b96: 85 76 STA $76 // $1b98: c6 76 DEC $76 // $1b9a: c6 72 DEC $TMP_72 $1b9c: 20 c4 1b JSR SET_&50 $1b9f: b0 22 BCS $1bc3 // RTS, huh? $1ba1: 60 RTS // // ":" $1ba2: e6 76 INC $76 // ":" Used in &0769 $1ba4: 20 3f 1c JSR CLCis&76lessthan1C $1ba7: b0 1a BCS $1bc3 // RTS $1ba9: a5 76 LDA $76 //Used in &0769 $1bab: 18 CLC $1bac: 65 73 ADC $73 $1bae: 85 76 STA $76 //Used in &0769 $1bb0: 20 3f 1c JSR CLCis&76lessthan1C $1bb3: b0 0e BCS $1bc3 // RTS // $1bb5: a5 79 LDA $SCREEN_EXTENT $1bb7: 85 77 STA $77 $1bb9: a5 7a LDA $7a $1bbb: 85 78 STA $78 $1bbd: 20 3f 1c JSR CLCis&76lessthan1C $1bc0: b0 01 BCS $1bc3 // Wall or &76 is = #&1c $1bc2: 18 CLC $1bc3: 60 RTS .SET_&50: a5 76 LDA $76 //Used in &0769 $1bc6: 30 75 BMI $1c3d // :/ up or down key indicator SEC and RTS $1bc8: 20 69 07 JSR $0769_&8b // &8b = 4 bits $1bcb: a8 TAY // // // $1bcc: b9 45 0a LDA $SNOOPY,Y $1bcf: 30 66 BMI $1c37 $1bd1: c0 01 CPY #$01 // Wall $1bd3: f0 68 BEQ $1c3d // RTS $1bd5: c9 40 CMP #$40 $1bd7: d0 1d BNE $1bf6 $1bd9: a5 5e LDA $5e $1bdb: 10 5a BPL $1c37 $1bdd: a5 76 LDA $76 //Used in &0769 $1bdf: 29 03 AND #$03 $1be1: c9 03 CMP #$03 $1be3: f0 58 BEQ $1c3d $1be5: a4 71 LDY $71 $1be7: f0 04 BEQ $1bed $1be9: a4 70 LDY $70 $1beb: 30 4a BMI $1c37 $1bed: 18 CLC $1bee: 65 73 ADC $73 $1bf0: c9 04 CMP #$04 $1bf2: 10 49 BPL $1c3d $1bf4: 30 41 BMI $1c37 $1bf6: 48 PHA $1bf7: a5 76 LDA $76 //Used in &0769 $1bf9: 29 fc AND #$fc $1bfb: 85 7c STA $7c $1bfd: 68 PLA $1bfe: c5 6e CMP $6e $1c00: f0 06 BEQ $1c08 $1c02: a4 72 LDY $TMP_72 $1c04: d0 31 BNE $1c37 $1c06: f0 04 BEQ $1c0c $1c08: a4 72 LDY $TMP_72 $1c0a: f0 2b BEQ $1c37 $1c0c: 48 PHA $1c0d: a5 77 LDA $77 $1c0f: 29 07 AND #$07 $1c11: a8 TAY $1c12: c8 INY $1c13: 98 TYA $1c14: 4a LSR $1c15: a8 TAY $1c16: 68 PLA $1c17: f0 05 BEQ $1c1e $1c19: b9 1a 0d LDA $0d1a,Y $1c1c: 10 03 BPL $1c21 $1c1e: b9 1f 0d LDA $0d1f,Y $1c21: 18 CLC $1c22: 65 7c ADC $7c $1c24: dd 30 0c CMP $RIKER,X $1c27: 30 08 BMI $1c31 $1c29: d0 0e BNE $1c39 $1c2b: a9 ff LDA #$ff $1c2d: 85 50 STA $50 $1c2f: 38 SEC $1c30: 60 RTS $1c31: a9 40 LDA #$40 $1c33: 85 50 STA $50 $1c35: 18 CLC $1c36: 60 RTS $1c37: 18 CLC $1c38: 60 RTS $1c39: a9 80 LDA #$80 $1c3b: 85 50 STA $50 $1c3d: 38 SEC $1c3e: 60 RTS // Either &76 is #&1c or there is a wall in the way // // otherwise Carry is Cleared .CLCis&76lessthan1C: a5 76 LDA $76 //Used in &0769 $1c41: c9 1c CMP #$1c $1c43: 10 09 BPL $1c4e $1c45: 20 69 07 JSR $0769_&8b // &8b = 4 bits $1c48: c9 01 CMP #$01 // SPRITEYLL $1c4a: f0 02 BEQ $1c4e $1c4c: 18 CLC $1c4d: 60 RTS $1c4e: 38 SEC $1c4f: 60 RTS .returns79-7a: c6 73 DEC $73 $1c52: c6 74 DEC $74 $1c54: a5 70 LDA $70 $1c56: 30 0a BMI $1c62 $1c58: d0 16 BNE $1c70 $1c5a: a5 77 LDA $77 $1c5c: d0 02 BNE $1c60 $1c5e: c6 78 DEC $78 $1c60: c6 77 DEC $77 $1c62: a5 77 LDA $77 $1c64: 18 CLC $1c65: 65 74 ADC $74 $1c67: 85 79 STA $SCREEN_EXTENT $1c69: a5 78 LDA $78 $1c6b: 69 00 ADC #$00 $1c6d: 85 7a STA $7a $1c6f: 60 RTS $1c70: a5 77 LDA $77 $1c72: 18 CLC $1c73: 69 01 ADC #$01 $1c75: 85 79 STA $SCREEN_EXTENT $1c77: a5 78 LDA $78 $1c79: 69 00 ADC #$00 $1c7b: 85 7a STA $7a $1c7d: a5 79 LDA $SCREEN_EXTENT $1c7f: 18 CLC $1c80: 65 74 ADC $74 $1c82: 85 77 STA $77 $1c84: a5 7a LDA $7a $1c86: 69 00 ADC #$00 $1c88: 85 78 STA $78 $1c8a: 60 RTS .W2: a5 70 LDA $70 $1c8d: 30 38 BMI $1cc7 $1c8f: 85 6e STA $6e $1c91: 20 50 1c JSR returns79-7a $1c94: a9 01 LDA #$01 $1c96: 85 72 STA $TMP_72 $1c98: a9 00 LDA #$00 $1c9a: 85 50 STA $50 $1c9c: a9 ff LDA #$ff $1c9e: 85 6b STA $6b $1ca0: 20 c4 1b JSR SET_&50 $1ca3: a5 50 LDA $50 $1ca5: d0 32 BNE $1cd9 $1ca7: b0 1e BCS $1cc7 $1ca9: c6 76 DEC $76 //Used in &0769 $1cab: 20 c4 1b JSR SET_&50 $1cae: b0 23 BCS $1cd3 $1cb0: a5 79 LDA $SCREEN_EXTENT $1cb2: 85 77 STA $77 $1cb4: a5 7a LDA $7a $1cb6: 85 78 STA $78 $1cb8: c6 72 DEC $TMP_72 $1cba: 20 c4 1b JSR SET_&50 $1cbd: a5 50 LDA $50 $1cbf: d0 18 BNE $1cd9 $1cc1: b0 10 BCS $1cd3 $1cc3: a5 70 LDA $70 $1cc5: 85 6b STA $6b $1cc7: a9 ff LDA #$ff $1cc9: 85 70 STA $70 $1ccb: 85 71 STA $71 $1ccd: 38 SEC $1cce: 60 RTS $1ccf: 85 71 STA $71 $1cd1: 18 CLC $1cd2: 60 RTS $1cd3: a9 ff LDA #$ff $1cd5: 85 71 STA $71 $1cd7: 18 CLC $1cd8: 60 RTS $1cd9: 24 50 BIT $50 $1cdb: 10 0a BPL $1ce7 $1cdd: 70 04 BVS $1ce3 $1cdf: a9 00 LDA #$00 $1ce1: 10 ec BPL $1ccf $1ce3: a9 ff LDA #$ff $1ce5: 30 e8 BMI $1ccf $1ce7: a9 01 LDA #$01 $1ce9: 10 e4 BPL $1ccf KEYPRESS_UP: a5 ec LDA $ec $1ced: c9 c8 CMP #$c8 // Keypress ":" $1cef: d0 25 BNE $1d16 $1cf1: a5 8b LDA $FURNITURE $1cf3: c9 04 CMP #$04 // LADDER $1cf5: d0 1f BNE $1d16 // CLC, RTS // // Climbing Ladder // $1cf7: bd a0 0b LDA $RONALD,X $1cfa: 29 07 AND #$07 $1cfc: c9 05 CMP #$05 $1cfe: 10 16 BPL $1d16 // CLC,RTS $1d00: a9 ff LDA #$ff // RESET various properties $1d02: 85 9e STA $9e $1d04: 85 6d STA $6d $1d06: 85 6c STA $FALLING $1d08: 85 53 STA $53 $1d0a: a9 05 LDA #$05 $1d0c: 8d 47 0d STA $0d47 $1d0f: a2 68 LDX #$68 $1d11: 20 35 0a JSR PLAYSOUND // Sound command address block is 0968 $1d14: 38 SEC $1d15: 60 RTS $1d16: 18 CLC $1d17: 60 RTS // X is // // .THROWING(X): a5 54 LDA $JUST_DROPPED $1d1a: 10 51 BPL $1d6d //RTS $1d1c: a5 ec LDA $ec $1d1e: 20 61 1d JSR ARROW_KEYS $1d21: f0 08 BEQ $1d2b $1d23: a5 ed LDA $ed $1d25: 20 61 1d JSR ARROW_KEYS $1d28: f0 01 BEQ $1d2b // i.e. CMP returns zero $1d2a: 60 RTS $1d2b: a4 9c LDY $HOLDING // We are throwing something.... $1d2d: 30 3e BMI $1d6d // RTS $1d2f: 84 54 STY $JUST_DROPPED $1d31: a9 00 LDA #$00 $1d33: 85 56 STA $DROP_FLAG_2 $1d35: a9 0e LDA #$0e $1d37: 99 00 00 STA $0000,Y // Show as throwing $1d3a: c0 0b CPY #$0b // Object is BUCKET BUCKET BUCKET $1d3c: d0 19 BNE $1d57 $1d3e: e0 04 CPX #$04 // Dropped ???? $1d40: f0 15 BEQ $1d57 // Just play the sound // // deal with being thrown UP,DOWN,LEFT,RIGHT // $1d42: a5 35 LDA $BUCKET_FILLED // Not Dropped but thrown $1d44: f0 11 BEQ $1d57 $1d46: a9 00 LDA #$00 $1d48: 85 35 STA $BUCKET_FILLED // Reset $1d4a: a0 0c LDY #$0c // Do all this when $BUCKET_FILLED set OBJECT c is SPRITEYTER $1d4c: 84 54 STY $JUST_DROPPED // Water has been dropped $1d4e: a2 2f LDX #$2f // and is moving... $1d50: a5 9e LDA $9e $1d52: 85 0c STA $0c $1d54: 4c dc 2e JMP MEMORYBANK(X,Y) $1d57: a2 98 LDX #$98 // Throwing noise $1d59: 20 35 0a JSR PLAYSOUND // Sound command address block is 0998 $1d5c: a9 ff LDA #$ff $1d5e: 85 9c STA $HOLDING $1d60: 60 RTS // Compare keypresses ($ec) with 09d4 // Enters with A = $ec // Stores key in &55 .ARROW_KEYS: a2 05 LDX #$05 $1d63: ca DEX $1d64: 30 07 BMI $1d6d $1d66: dd d4 09 CMP $09d4,X // 0,1,2,3,4 { 99, f9, b9, a9, b2 } $1d69: d0 f8 BNE $1d63 // <- -> /\ \/ D $1d6b: 86 55 STX $DIRECTION_THROWN $1d6d: 60 RTS .M8: a4 54 LDY $JUST_DROPPED $1d70: 30 45 BMI $1db7 // RTS $1d72: 20 9a 21 JSR TRANSFER_0C30(Y) $1d75: 20 10 09 JSR $0910 $1d78: f0 08 BEQ $1d82 $1d7a: 20 9d 22 JSR PLOTSPRITE $1d7d: a4 54 LDY $JUST_DROPPED $1d7f: 20 9a 21 JSR TRANSFER_0C30(Y) $1d82: a6 54 LDX $JUST_DROPPED $1d84: a9 ff LDA #$ff $1d86: 85 70 STA $70 $1d88: 85 71 STA $71 $1d8a: a5 55 LDA $DIRECTION_THROWN $1d8c: d0 2a BNE $1db8 $1d8e: 85 70 STA $70 // Left Arrow $1d90: a5 77 LDA $77 $1d92: d0 02 BNE $1d96 $1d94: c6 78 DEC $78 $1d96: c6 77 DEC $77 $1d98: a5 56 LDA $DROP_FLAG_2 $1d9a: d0 03 BNE $1d9f $1d9c: fe 30 0c INC $RIKER,X $1d9f: 20 50 1c JSR returns79-7a $1da2: a5 56 LDA $DROP_FLAG_2 $1da4: 29 07 AND #$07 $1da6: c9 07 CMP #$07 $1da8: d0 04 BNE $1dae $1daa: a9 01 LDA #$01 // "/" key $1dac: 85 71 STA $71 $1dae: 20 5e 1b JSR LDA&70... $1db1: 90 78 BCC $1e2b $1db3: a9 04 LDA #$04 // FOrce a "DROP" "D" - How, Why? $1db5: 85 55 STA $DIRECTION_THROWN $1db7: 60 RTS $1db8: c9 01 CMP #$01 $1dba: d0 0c BNE $1dc8 $1dbc: e6 77 INC $77 // Right Arrow $1dbe: d0 02 BNE $1dc2 $1dc0: e6 78 INC $78 $1dc2: a9 02 LDA #$02 $1dc4: 85 70 STA $70 $1dc6: 10 d0 BPL $1d98 $1dc8: c9 02 CMP #$02 $1dca: d0 1f BNE $1deb $1dcc: a5 56 LDA $DROP_FLAG_2 // Up Arrow $1dce: c9 08 CMP #$08 $1dd0: 30 05 BMI $1dd7 $1dd2: a9 04 LDA #$04 $1dd4: 85 55 STA $DIRECTION_THROWN $1dd6: 60 RTS $1dd7: a5 76 LDA $76 //Used in &0769 $1dd9: c9 1b CMP #$1b $1ddb: 10 f5 BPL $1dd2 $1ddd: a9 00 LDA #$00 $1ddf: 85 71 STA $71 $1de1: 20 50 1c JSR .returns79-7a $1de4: 20 5e 1b JSR .LDA&70... $1de7: b0 e9 BCS $1dd2 $1de9: 90 40 BCC $1e2b $1deb: c9 03 CMP #$03 $1ded: d0 30 BNE $1e1f // I.e conventional drop $1def: a5 56 LDA $DROP_FLAG_2 // DoBATH Arrow $1df1: c9 04 CMP #$04 $1df3: 30 05 BMI $1dfa $1df5: a9 04 LDA #$04 $1df7: 85 55 STA $DIRECTION_THROWN $1df9: 60 RTS $1dfa: a9 01 LDA #$01 $1dfc: 85 71 STA $71 $1dfe: 20 50 1c JSR .returns79-7a $1e01: c6 76 DEC $76 //Used in &0769 $1e03: 20 16 25 JSR .WM $1e06: 90 23 BCC $1e2b $1e08: a2 88 LDX #$88 $1e0a: 20 35 0a JSR PLAYSOUND // Sound command address block is 0988 $1e0d: a4 54 LDY $JUST_DROPPED $1e0f: a9 ff LDA #$ff $1e11: 85 54 STA $JUST_DROPPED $1e13: a9 04 LDA #$04 $1e15: 99 00 00 STA $0000,Y $1e18: c0 0c CPY #$0c // water $1e1a: d0 3a BNE $1e56 // RTS... most common path $1e1c: 4c 2e 2e JMP THROW_SPRITEYTER // Drop an item // // $1e1f: a9 01 LDA #$01 // Drop $1e21: 85 71 STA $71 $1e23: 20 50 1c JSR returns79-7a $1e26: 20 5e 1b JSR LDA&70... $1e29: b0 dd BCS $1e08 $1e2b: e6 56 INC $DROP_FLAG_2 $1e2d: 20 00 01 JSR $0100 $1e30: 20 00 01 JSR $0100 $1e33: a5 71 LDA $71 $1e35: 30 0a BMI $1e41 $1e37: f0 05 BEQ $1e3e $1e39: de 30 0c DEC $RIKER,X $1e3c: 10 03 BPL $1e41 $1e3e: fe 30 0c INC $RIKER,X $1e41: 20 98 21 JSR TRANSFER_0C30(Y)_PRE // Call with #$2f, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $1e44: 20 75 20 JSR check0C30_SEC $1e47: b0 0e BCS $1e57 $1e49: 20 10 09 JSR $0910 $1e4c: 10 08 BPL $1e56 $1e4e: bd 48 0d LDA $0d48,X $1e51: 85 7f STA $7f $1e53: 20 c0 21 JSR SPRITEYRROWKEYS_MAIN $1e56: 60 RTS $1e57: 4c 3d 20 JMP .UB .INVEN:a5 ec LDA $ec $1e5c: c9 a5 CMP #$a5 // Keypress "I" $1e5e: f0 01 BEQ INVEN1 $1e60: 60 RTS // // Handle the inventory option, flicks between Objects, score .INVEN1: a2 88 LDX #$88 $1e63: 20 35 0a JSR PLAYSOUND // Sound command address block is 0988 $1e66: a2 68 LDX #$68 $1e68: 20 35 0a JSR PLAYSOUND // Sound command address block is 0988 $1e6b: 20 7e 1e JSR PRINTOBJ $1e6e: 20 20 1f JSR INVEN3 $1e71: 20 f2 1e JSR SCORE $1e74: 20 20 1f JSR INVEN3 .LOOp a5 ec LDA $ec $1e79: c9 a5 CMP #$a5 // Until not pressing "I" $1e7b: f0 fa BEQ LOOP $1e7d: 60 RTS .PRINTOBJ: a2 00 LDX #$00 $1e80: a0 00 LDY #$00 $1e82: 20 a4 1e JSR SETTEXTADDRESS // (0,0) $1e85: a2 00 LDX #$00 $1e87: bd af 0c LDA $OBJECTS,X // &9c CONTains an index to the object we are holding $1e8a: c5 9c CMP $HOLDING $1e8c: f0 03 BEQ $1e91 $1e8e: e8 INX $1e8f: d0 f6 BNE $1e87 // 255 times $1e91: a0 ff LDY #$ff $1e93: e8 INX $1e94: c8 INY $1e95: bd af 0c LDA $OBJECTS,X $1e98: 30 09 BMI $1ea3 // If N set. i.e. when the 7th bit of Accumulator. i.e. #$FF $1e9a: c9 14 CMP #$14 $1e9c: 90 05 BCC $1ea3 $1e9e: 20 ee ff JSR $ffee // Print a string of stuff until #$14 is found $1ea1: d0 f0 BNE $1e93 $1ea3: 60 RTS MOREKEYS: a5 86 LDA $86 // HI $1f37: 85 78 STA $78 $1f39: a5 85 LDA $85 // LO $1f3b: 85 77 STA $77 $1f3d: ad 5f 0c LDA $0c5f // ITEM $1f40: f0 61 BEQ $1fa3 // RTS $1f42: a9 1c LDA #$1c $1f44: 85 76 STA $76 //Used in &0769 $1f46: 20 80 03 JSR $0380 // Generates SPRSCR $1f49: a2 2f LDX #$2f $1f4b: 20 3d 20 JSR UB $1f4e: a5 85 LDA $85 $1f50: 38 SEC $1f51: e9 80 SBC #$80 $1f53: 85 85 STA $85 $1f55: a5 86 LDA $86 $1f57: f9 2c 0a SBC $0a2c,Y $1f5a: 85 86 STA $86 $1f5c: a9 04 LDA #$04 $1f5e: 85 72 STA $TMP_72 $1f60: a9 04 LDA #$04 $1f62: 85 76 STA $76 //Used in &0769 $1f64: 20 fe 1f JSR UC $1f67: a2 00 LDX #$00 $1f69: 20 c3 03 JSR $03c3 $1f6c: 20 c3 03 JSR $03c3 $1f6f: e6 76 INC $76 //Used in &0769 $1f71: c6 72 DEC $TMP_72 $1f73: d0 ef BNE $1f64 $1f75: a9 18 LDA #$18 $1f77: 85 72 STA $TMP_72 $1f79: a5 87 LDA $SCRLO $1f7b: 38 SEC $1f7c: e9 50 SBC #$50 $1f7e: 85 87 STA $SCRLO $1f80: b0 02 BCS $1f84 $1f82: c6 88 DEC $SCRHI $1f84: 20 1f 21 JSR CHECKEXTENTS $1f87: 20 4f 21 JSR SETCRTC $1f8a: 20 fe 1f JSR UC $1f8d: a2 00 LDX #$00 $1f8f: 20 c3 03 JSR $03c3 $1f92: 20 c3 03 JSR $03c3 $1f95: e6 76 INC $76 //Used in &0769 $1f97: c6 72 DEC $TMP_72 $1f99: d0 de BNE $1f79 $1f9b: a2 02 LDX #$02 $1f9d: 20 c3 03 JSR $03c3 $1fa0: 4c df 1f JMP $1fdf //------------------------------------ $1fa3: a9 1f LDA #$1f $1fa5: 85 76 STA $76 //Used in &0769 $1fa7: 20 80 03 JSR $0380 // Generates SPRSCR $1faa: a2 2f LDX #$2f $1fac: 20 3d 20 JSR UB $1faf: a5 85 LDA $85 $1fb1: 18 CLC $1fb2: 69 80 ADC #$80 $1fb4: 85 85 STA $85 $1fb6: a5 86 LDA $86 $1fb8: 79 10 0d ADC $0d10,Y $1fbb: 85 86 STA $86 $1fbd: a9 18 LDA #$18 $1fbf: 85 72 STA $TMP_72 $1fc1: a9 17 LDA #$17 $1fc3: 85 76 STA $76 //Used in &0769 $1fc5: 20 fe 1f JSR UC $1fc8: a5 87 LDA $SCRLO $1fca: 18 CLC $1fcb: 69 50 ADC #$50 $1fcd: 85 87 STA $SCRLO $1fcf: 90 02 BCC $1fd3 $1fd1: e6 88 INC $SCRHI $1fd3: 20 1f 21 JSR CHECKEXTENTS $1fd6: 20 4f 21 JSR SETCRTC $1fd9: c6 76 DEC $76 //Used in &0769 $1fdb: c6 72 DEC $TMP_72 $1fdd: d0 e6 BNE $1fc5 $1fdf: a5 85 LDA $85 $1fe1: 85 77 STA $77 $1fe3: a5 86 LDA $86 $1fe5: 85 78 STA $78 $1fe7: a9 50 LDA #$50 $1fe9: 85 74 STA $74 $1feb: 20 69 21 JSR WRITESCRN1 $1fee: e6 77 INC $77 $1ff0: d0 02 BNE $1ff4 $1ff2: e6 78 INC $78 $1ff4: c6 74 DEC $74 $1ff6: d0 f3 BNE $1feb $1ff8: 20 01 2c JSR TAKE $1ffb: 4c 6b 29 JMP UF .UF: a9 05 LDA #$05 $296d: 85 65 STA $N1_65 $296f: 20 48 24 JSR V7 .V7: 20 97 24 JSR WP $244b: 4c 9f 24 JMP $249f .WP: a4 65 LDY $N1_65 $2499: a9 ff LDA #$ff $249b: 99 38 00 STA $0038,Y $249e: 60 RTS $249f: a4 65 LDY $N1_65 $24a1: a9 ff LDA #$ff $24a3: 99 40 00 STA $0040,Y $24a6: 60 RTS $2972: c6 65 DEC $N1_65 $2974: 10 f9 BPL $296f $2976: 60 RTS $2972: c6 65 DEC $N1_65 $2974: 10 f9 BPL $296f $2976: 60 RTS .UC: a5 85 LDA $85 $2000: 85 77 STA $77 $2002: a5 86 LDA $86 $2004: 85 78 STA $78 $2006: a5 76 LDA $76 //Used in &0769 $2008: c9 10 CMP #$10 $200a: d0 05 BNE .V1 $200c: 20 6a 01 JSR .SEC $200f: a5 76 LDA $76 //Used in &0769 .V1: 29 03 AND #$03 $2013: 85 7b STA $7b $2015: a9 50 LDA #$50 $2017: 85 5b STA $5b $2019: 20 69 07 JSR $0769_&8b // &8b = 4 bits $201c: a5 77 LDA $77 $201e: 29 07 AND #$07 $2020: 85 7c STA $7c $2022: d0 03 BNE $2027 $2024: 20 69 07 JSR $0769_&8b // &8b = 4 bits $2027: 20 1b 01 JSR $011b $202a: 20 8e 21 JSR COPYSPRITE $202d: a2 01 LDX #$01 $202f: 20 c3 03 JSR $03c3 $2032: e6 77 INC $77 $2034: d0 02 BNE $2038 $2036: e6 78 INC $78 $2038: c6 5b DEC $5b $203a: d0 e0 BNE $201c $203c: 60 RTS .UB: bc e8 0b LDY $RICHARD,X $2040: bd 30 0c LDA $RIKER,X $2043: f0 18 BEQ $205d $2045: bd a0 0b LDA $RONALD,X $2048: 38 SEC $2049: e9 80 SBC #$80 $204b: 9d a0 0b STA $RONALD,X $204e: bd e8 0b LDA $RICHARD,X $2051: f9 2c 0a SBC $0a2c,Y $2054: 9d e8 0b STA $RICHARD,X $2057: a9 01 LDA #$01 $2059: 9d 30 0c STA $RIKER,X $205c: 60 RTS $205d: bd a0 0b LDA $RONALD,X $2060: 18 CLC $2061: 69 80 ADC #$80 $2063: 9d a0 0b STA $RONALD,X $2066: bd e8 0b LDA $RICHARD,X $2069: 79 10 0d ADC $0d10,Y $206c: 9d e8 0b STA $RICHARD,X $206f: a9 18 LDA #$18 $2071: 9d 30 0c STA $RIKER,X $2074: 60 RTS .check0C30_SEC: bd 30 0c LDA $RIKER,X $2078: f0 06 BEQ $2080 $207a: c9 19 CMP #$19 $207c: 10 02 BPL $2080 $207e: 18 CLC $207f: 60 RTS $2080: bc e8 0b LDY $RICHARD,X $2083: bd a0 0b LDA $RONALD,X $2086: d9 23 0a CMP $0a23,Y $2089: 90 f3 BCC $207e $208b: d9 1a 0a CMP $0a1a,Y $208e: b0 ee BCS $207e $2090: 38 SEC $2091: 60 RTS // // If this task completes early then "idle" so it takes a fixed time. // .PACING: 45 21 JSR SETSCREENMEMORY $2095: a5 9d LDA $9d $2097: 10 0a BPL $20a3 $2099: a5 32 LDA $32 $209b: ed 79 fe SBC $fe79 // VIA-B Timer2 MSB $209e: c9 50 CMP #$50 // #&50 * #&FF + 1.5uS $20a0: 30 f7 BMI $2099 // Make sure at least 50 ticks have passed. $20a2: 60 RTS $20a3: f0 0f BEQ $20b4 /*---------------------------------------- * * * *----------------------------------------*/ .WRITESCREEN: a5 85 LDA $85 $20a7: 18 CLC $20a8: 69 4f ADC #$4f $20aa: 85 77 STA $77 $20ac: a5 86 LDA $86 $20ae: 69 00 ADC #$00 $20b0: 85 78 STA $78 $20b2: 10 08 BPL $20bc $20b4: a5 85 LDA $85 // Enter here if &9d is zero $20b6: 85 77 STA $77 $20b8: a5 86 LDA $86 $20ba: 85 78 STA $78 $20bc: 20 69 21 JSR WRITESCRN1 $20bf: a5 77 LDA $77 $20c1: 29 07 AND #$07 $20c3: 85 7c STA $7c $20c5: 20 69 07 JSR $0769_&8b // &8b = 4 bits $20c8: 4c d7 20 JMP $20d7 $20cb: 20 1b 01 JSR $011b $20ce: a0 07 LDY #$07 $20d0: b1 91 LDA ($SPRLO),Y $20d2: 91 81 STA ($SPRSCRLO),Y $20d4: 88 DEY $20d5: 10 f9 BPL $20d0 $20d7: c6 76 DEC $76 //Used in &0769 $20d9: 30 c7 BMI $20a2 // RTS $20db: 20 c3 03 JSR $03c3 $20de: a5 76 LDA $76 //Used in &0769 $20e0: 29 03 AND #$03 $20e2: 85 7b STA $7b $20e4: c9 03 CMP #$03 $20e6: f0 09 BEQ $20f1 $20e8: c6 10 DEC $10 $20ea: a4 10 LDY $10 $20ec: 20 34 01 JSR $0134 $20ef: d0 dd BNE $20ce $20f1: c6 11 DEC $11 // Used in &0769, derived from &76 $20f3: a4 11 LDY $11 $20f5: 20 99 07 JSR $0799 $20f8: 4c cb 20 JMP $20cb /*---------------------------------------- * * 1/3/2006 * *----------------------------------------*/ .SCROLL3: a5 9d LDA $9d $20fd: 30 69 BMI $2168 // If less than zero do RTS $20ff: f0 0e BEQ SCROLL2 // If zero // else /*---------------------------------------- * * Generates &83,&84 * *----------------------------------------*/ // At startup // // Registers 12 and 13 in the 6845 CRTC CONTroller // HI-LO respectivly hold the screen start address. // To Scroll the screen, check the SCRHI // // MODE 2 is 160*256 pixels. // each screen location CONTains tBIGSCREEN pixels. // // MODE 2 has 80 characters a row and 32 rows. // each character has 8 scan lines. // // .MOVE16PIXELSLEFT: e6 85 INC $85 // #&d0 $2103: d0 02 BNE $2107 $2105: e6 86 INC $86 // #&02 $2107: e6 87 INC $SCRLO // Screen is going to move 2 pixels to the right $2109: d0 02 BNE $210d $210b: e6 88 INC $SCRHI // #&06 $210d: d0 10 BNE CHECKEXTENTS /*----------------------------------------*/ // SCRHI has gone full circle // SCROLL2: a5 85 LDA $85 // #&d1 $2111: d0 02 BNE $2115 $2113: c6 86 DEC $86 $2115: c6 85 DEC $85 $2117: a5 87 LDA $SCRLO $2119: d0 02 BNE $211d $211b: c6 88 DEC $SCRHI $211d: c6 87 DEC $SCRLO .CHECKEXTENTS: a5 88 LDA $SCRHI $2121: c9 06 CMP #$06 // Corresponds to &3000 (i.e. #&3000/#&8) $2123: 10 06 BPL $212b // If greater than 6 $2125: a9 0f LDA #$0f $2127: 85 88 STA $SCRHI $2129: 10 08 BPL $2133 $212b: c9 10 CMP #$10 // Corresponds to right extent - &8000 $212d: 30 04 BMI $2133 // $212f: a9 06 LDA #$06 $2131: 85 88 STA $SCRHI // // // $2133: a5 88 LDA $SCRHI // #&06 $2135: 85 84 STA $84 $2137: a5 87 LDA $SCRLO // #&01 after incremented $2139: 0a ASL $213a: 26 84 ROL $84 $213c: 0a ASL $213d: 26 84 ROL $84 $213f: 0a ASL $2140: 26 84 ROL $84 // Multiply by eight $2142: 85 83 STA $83 $2144: 60 RTS /*---------------------------------------------- * * Screen Scrolling * * * &88 - Screen address High Byte * &87 - Screen address Low Byte * 28/2/2006 /*---------------------------------------------- .SETSCREENMEMORY: a5 32 LDA $32 $2147: 38 SEC $2148: ed 79 fe SBC $fe79 // VIA-B Timer2 MSB $214b: c9 3b CMP #$3b $214d: 10 05 BPL $2154 .SETCRTC: a9 13 LDA #$13 // OSBYTE call / disable events $2151: 20 f4 ff JSR $fff4 $2154: a9 0c LDA #$0c // 13 - Wait for the Vertical sync... $2156: 8d 00 fe STA $fe00 // SHELIA 6845 CRTC address register (out of 18 registers) // Displayed screen start address register $2159: a5 88 LDA $SCRHI $215b: 8d 01 fe STA $fe01 // Horizontal displayed characters per line $215e: a9 0d LDA #$0d $2160: 8d 00 fe STA $fe00 // Horizontal sync $2163: a5 87 LDA $SCRLO $2165: 8d 01 fe STA $fe01 // Horizontal displayed characters per line $2168: 60 RTS // #&1f is decimal 31. // // The following happens 31 times:- // // 7 bytes of 'blank' copied to screen memory (&81),0 - (&81),7 // // // .WRITESCRN1: a9 1f LDA #$1f $216b: 85 76 STA $76 //Used in &0769 $216d: 20 80 03 JSR $0380 // Generates SPRSCR $2170: a2 02 LDX #$02 $2172: a0 07 LDY #$07 $2174: a9 00 LDA #$00 $2176: 91 81 STA ($SPRSCRLO),Y $2178: 88 DEY $2179: 10 fb BPL $2176 $217b: 20 c3 03 JSR $03c3 $217e: c6 76 DEC $76 //Used in &0769 // Used in 0769 $2180: a5 76 LDA $76 //Used in &0769 $2182: c9 1c CMP #$1c $2184: d0 ec BNE $2172 $2186: a9 12 LDA #$12 $2188: 85 92 STA $SPRHI // ROM SPRITE $218a: a9 20 LDA #$20 $218c: 85 91 STA $SPRLO //------------------------------------ .COPYSPRITE: a0 07 LDY #$07 $2190: b1 91 LDA ($SPRLO),Y $2192: 91 81 STA ($SPRSCRLO),Y $2194: 88 DEY $2195: 10 f9 BPL $2190 $2197: 60 RTS /*---------------------------------------- * * Sets $73, $74, $76, $77, $78, $80 * Set X before calling * *----------------------------------------*/ .TRANSFER_0C30(Y)_PRE: 8a TXA $2199: a8 TAY .TRANSFER_0C30(Y): b9 30 0c LDA $RIKER,Y $219d: 85 76 STA $76 // Used in &0769 $219f: b9 a0 0b LDA $RONALD,Y $21a2: 85 77 STA $77 $21a4: b9 e8 0b LDA $RICHARD,Y $21a7: 85 78 STA $78 .$(Y)_&73_&74_&78_[$0c78]: b9 78 0c LDA $0c78,Y $21ac: 4a LSR $21ad: 4a LSR $21ae: 85 74 STA $74 $21b0: b9 78 0c LDA $0c78,Y $21b3: 29 03 AND #$03 $21b5: 85 73 STA $73 $21b7: a9 0e LDA #$0e $21b9: 85 80 STA $80 $21bb: 60 RTS // // // .SPRITEYRROWKEYS: a9 06 LDA #$06 $21be: 10 35 BPL $21f5 // Always .SPRITEYRROWKEYS_MAIN: 20 69 07 JSR $0769_&8b // &8b = 4 bits $21c3: 85 8a STA $8a $21c5: a5 77 LDA $77 $21c7: 29 07 AND #$07 $21c9: 85 8b STA $FURNITURE $21cb: a9 08 LDA #$08 $21cd: 38 SEC $21ce: e5 8b SBC $FURNITURE $21d0: 85 7b STA $7b $21d2: a5 74 LDA $74 $21d4: 38 SEC $21d5: e5 7b SBC $7b $21d7: 85 7b STA $7b $21d9: a5 77 LDA $77 $21db: 29 f8 AND #$f8 $21dd: 18 CLC $21de: 69 08 ADC #$08 $21e0: 85 77 STA $77 $21e2: 90 02 BCC $21e6 $21e4: e6 78 INC $78 $21e6: 20 69 07 JSR $0769_&8b // &8b = 4 bits $21e9: bd a0 0b LDA $RONALD,X $21ec: 85 77 STA $77 $21ee: bd e8 0b LDA $RICHARD,X $21f1: 85 78 STA $78 $21f3: a9 00 LDA #$00 $21f5: 8d 10 22 STA $2210 // A = #&06 $21f8: a5 76 LDA $76 // Used in &0769 $21fa: 18 CLC $21fb: 65 73 ADC $73 $21fd: 85 76 STA $76 // Used in &0769 $21ff: c6 76 DEC $76 //Used in &0769 $2201: a2 01 LDX #$01 $2203: a9 00 LDA #$00 $2205: 85 5b STA $5b $2207: a5 74 LDA $74 $2209: 85 95 STA $95 $220b: 20 80 03 JSR $0380 // Generates SPRSCR $220e: 18 CLC $220f: 90 fe BCC $220f // Self modified from 21f5, BCC 2217 $2211: 20 39 22 JSR V4 $2214: 4c 1a 22 JMP $221a $2217: 20 6b 22 JSR V5 // When A=#&06 at first entry to ARROWKEYS $221a: e6 5b INC $5b $221c: c6 95 DEC $95 $221e: f0 08 BEQ $2228 $2220: a2 01 LDX #$01 $2222: 20 c3 03 JSR $03c3 $2225: 4c 0e 22 JMP $220e $2228: c6 73 DEC $73 $222a: f0 08 BEQ $2234 $222c: a5 74 LDA $74 $222e: 85 95 STA $95 $2230: c6 76 DEC $76 // Used in &0769 $2232: 10 d7 BPL $220b $2234: a9 ff LDA #$ff $2236: 85 66 STA $66 $2238: 60 RTS .V4: 20 4e 01 JSR $014e // sets &8f,&90 $223c: a5 66 LDA $66 $223e: f0 1f BEQ $225f $2240: a5 7b LDA $7b $2242: c5 95 CMP $95 $2244: 10 04 BPL $224a $2246: a4 8a LDY $8a $2248: 10 02 BPL $224c $224a: a4 8b LDY $FURNITURE $224c: b9 55 0a LDA $0a55,Y $224f: f0 0e BEQ $225f $2251: a0 07 LDY #$07 $2253: b1 81 LDA ($SPRSCRLO),Y $2255: d0 04 BNE $225b $2257: b1 8f LDA ($8f),Y $2259: 91 81 STA ($SPRSCRLO),Y $225b: 88 DEY $225c: 10 f5 BPL $2253 $225e: 60 RTS $225f: a0 07 LDY #$07 // Going to copy 8 bytes $2261: b1 8f LDA ($8f),Y $2263: f0 02 BEQ $2267 // i.e. RTS $2265: 91 81 STA ($SPRSCRLO),Y $2267: 88 DEY $2268: 10 f7 BPL $2261 // When bit 7 not set $226a: 60 RTS .V5: 20 4e 01 JSR $014e // sets &8f,&90 $226e: a0 07 LDY #$07 $2270: b1 8f LDA ($8f),Y $2272: 91 81 STA ($SPRSCRLO),Y $2274: 88 DEY $2275: 10 f9 BPL $2270 $2277: 60 RTS .WRITE_TO_SCR: a5 74 LDA $74 $227a: 85 95 STA $95 $227c: 20 80 03 JSR $0380 // Generates SPRSCR $227f: a0 07 LDY #$07 $2281: a9 00 LDA #$00 $2283: 91 81 STA ($SPRSCRLO),Y $2285: 88 DEY $2286: 10 fb BPL $2283 $2288: c6 95 DEC $95 $228a: f0 08 BEQ $2294 $228c: a2 01 LDX #$01 $228e: 20 c3 03 JSR $03c3 $2291: 4c 7f 22 JMP $227f $2294: c6 73 DEC $73 $2296: f0 04 BEQ $229c $2298: e6 76 INC $76 // Used in &0769 $229a: 10 dc BPL WRITE_TO_SCR $229c: 60 RTS .PLOTSPRITE: a5 77 LDA $77 $229f: 85 97 STA $97 $22a1: a5 78 LDA $78 $22a3: 85 98 STA $98 $22a5: a5 73 LDA $73 $22a7: 85 96 STA $96 $22a9: 18 CLC $22aa: 65 76 ADC $76 // Used in &0769 $22ac: 85 76 STA $76 //Used in &0769 $22ae: c6 76 DEC $76 //Used in &0769 $22b0: a5 76 LDA $76 //Used in &0769 $22b2: 29 03 AND #$03 $22b4: 85 7b STA $7b $22b6: a5 77 LDA $77 $22b8: 29 07 AND #$07 $22ba: 85 7c STA $7c $22bc: a5 74 LDA $74 $22be: 85 95 STA $95 $22c0: 20 80 03 JSR $0380 // Generates SPRSCR // Access the OS12 mult tables. $22c3: 20 69 07 JSR $0769_&8b // &8b = 4 bits $22c6: 20 1b 01 JSR $011b // $22c9: a0 07 LDY #$07 $22cb: b1 91 LDA ($SPRLO),Y $22cd: 91 81 STA ($SPRSCRLO),Y $22cf: 88 DEY $22d0: 10 f9 BPL $22cb $22d2: c6 95 DEC $95 $22d4: f0 19 BEQ $22ef $22d6: e6 77 INC $77 $22d8: d0 02 BNE $22dc $22da: e6 78 INC $78 $22dc: a2 01 LDX #$01 $22de: 20 c3 03 JSR $03c3 // $22e1: a5 77 LDA $77 $22e3: 29 07 AND #$07 $22e5: 85 7c STA $7c $22e7: f0 da BEQ $22c3 $22e9: 20 2a 01 JSR $012a // $22ec: 4c c9 22 JMP $22c9 $22ef: a5 97 LDA $97 $22f1: 85 77 STA $77 $22f3: a5 98 LDA $98 $22f5: 85 78 STA $78 $22f7: c6 96 DEC $96 $22f9: d0 b3 BNE $22ae $22fb: 60 RTS //-----------------------------------------------// .N5: a9 9b LDA #$9b $22fe: a2 a1 LDX #$a1 $2300: 20 f4 ff JSR $fff4 // Write #$a1 EOR #&07 is #$a6 to register 1 palette - sets to cyan $2303: a2 1f LDX #$1f $2305: a9 01 LDA #$01 $2307: 85 65 STA $N1_65 $2309: 20 8d 18 JSR BATH $230c: a5 63 LDA $MEANSOFDEATH $230e: d0 04 BNE $2314 // if still alive $2310: a9 05 LDA #$05 // You are dead $2312: 85 63 STA $MEANSOFDEATH $2314: 60 RTS .N6: a9 9b LDA #$9b $2317: a2 a3 LDX #$a3 $2319: 20 f4 ff JSR $fff4 $231c: a2 21 LDX #$21 $231e: d0 e5 BNE $2305 // always .N7: ad aa 0b LDA $0baa $2323: c9 aa CMP #$aa $2325: 30 0f BMI $2336 $2327: c9 ac CMP #$ac $2329: 10 0b BPL $2336 $232b: ad 3a 0c LDA $0c3a $232e: c9 10 CMP #$10 $2330: 10 04 BPL $2336 $2332: c9 0c CMP #$0c $2334: 10 01 BPL $2337 $2336: 60 RTS $2337: a9 ff LDA #$ff $2339: 85 75 STA $ALIVE //DEAD $233b: a2 2a LDX #$2a $233d: a9 1d LDA #$1d $233f: 85 7f STA $7f $2341: 4c cc 2c JMP STORE-70-71-7F .N4_sprite : a9 05 LDA #$05 $2346: 85 65 STA $N1_65 $2348: a2 22 LDX #$22 $234a: 86 64 STX $N1_64 $234c: a0 2f LDY #$2f $234e: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $2351: a5 77 LDA $77 $2353: c9 03 CMP #$03 $2355: b0 0a BCS $2361 $2357: a5 76 LDA $76 // Used in &0769 $2359: c9 03 CMP #$03 $235b: b0 04 BCS $2361 $235d: a9 06 LDA #$06 // Troll $235f: 85 63 STA $MEANSOFDEATH $2361: a4 22 LDY $22 $2363: c0 02 CPY #$02 $2365: 30 6e BMI $23d5 $2367: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $236a: a5 77 LDA $77 $236c: d0 41 BNE $23af $236e: a5 76 LDA $76 // Used in &0769 $2370: d0 3d BNE $23af $2372: a4 59 LDY $59 $2374: 20 9a 21 JSR TRANSFER_0C30(Y) $2377: 20 10 09 JSR $0910 $237a: f0 03 BEQ $237f $237c: 20 9d 22 JSR PLOTSPRITE $237f: a6 59 LDX $59 $2381: a9 04 LDA #$04 $2383: 9d 30 0c STA $RIKER,X $2386: 95 00 STA $00,X $2388: a5 59 LDA $59 $238a: 0a ASL $238b: 6d c2 0b ADC $0bc2 $238e: 9d a0 0b STA $RONALD,X $2391: a9 ff LDA #$ff $2393: 85 59 STA $59 $2395: a9 00 LDA #$00 $2397: 85 22 STA $22 $2399: 60 RTS $239a: a2 22 LDX #$22 $239c: a0 16 LDY #$16 $239e: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $23a1: a5 77 LDA $77 $23a3: d0 11 BNE $23b6 $23a5: a5 76 LDA $76 // Used in &0769 $23a7: d0 0d BNE $23b6 $23a9: 46 22 LSR $22 $23ab: 20 48 24 JSR .V7 .V7: 20 97 24 JSR WP $244b: 4c 9f 24 JMP $249f .WP: a4 65 LDY $N1_65 $2499: a9 ff LDA #$ff $249b: 99 38 00 STA $0038,Y $249e: 60 RTS $249f: a4 65 LDY $N1_65 $24a1: a9 ff LDA #$ff $24a3: 99 40 00 STA $0040,Y $24a6: 60 RTS $23ae: 60 RTS $23af: a2 58 LDX #$58 $23b1: 20 35 0a JSR PLAYSOUND // Sound command address block is 0958 $23b4: a2 22 LDX #$22 $23b6: 20 4e 24 JSR BIGSCREEN $23b9: 20 0b 17 JSR returnsBARNEYX $23bc: 18 CLC $23bd: 69 0c ADC #$0c $23bf: 85 7f STA $7f $23c1: 20 cc 2c JSR STORE-70-71-7F $23c4: a4 59 LDY $59 $23c6: 30 d1 BMI $2399 $23c8: ad 3a 0d LDA $0d3a $23cb: 29 06 AND #$06 $23cd: c9 04 CMP #$04 $23cf: d0 01 BNE $23d2 $23d1: 4a LSR $23d2: 4c c1 2e JMP $2ec1 $23d5: a2 16 LDX #$16 $23d7: a0 04 LDY #$04 $23d9: b9 00 00 LDA $0000,Y $23dc: c9 06 CMP #$06 $23de: f0 14 BEQ $23f4 $23e0: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $23e3: 30 0f BMI $23f4 $23e5: a5 77 LDA $77 $23e7: a6 22 LDX $22 $23e9: d5 15 CMP $15,X $23eb: b0 07 BCS $23f4 $23ed: b9 30 0c LDA $RIKER,Y $23f0: c9 0c CMP #$0c $23f2: 10 18 BPL $240c $23f4: a2 16 LDX #$16 $23f6: 88 DEY $23f7: c0 01 CPY #$01 $23f9: d0 de BNE $23d9 $23fb: a5 63 LDA $MEANSOFDEATH $23fd: 10 9b BPL $239a $23ff: a0 2f LDY #$2f $2401: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $2404: a5 77 LDA $77 $2406: a6 22 LDX $22 $2408: d5 15 CMP $15,X $240a: b0 8e BCS $239a $240c: a2 22 LDX #$22 $240e: a9 01 LDA #$01 $2410: 85 22 STA $22 $2412: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $2415: a5 77 LDA $77 $2417: c9 02 CMP #$02 $2419: b0 94 BCS $23af $241b: a5 76 LDA $76 // Used in &0769 $241d: c9 03 CMP #$03 $241f: 10 8e BPL $23af $2421: a2 ff LDX #$ff $2423: 84 59 STY $59 $2425: b9 00 00 LDA $0000,Y $2428: c9 03 CMP #$03 $242a: 30 08 BMI $2434 $242c: c9 0e CMP #$0e $242e: d0 06 BNE $2436 $2430: 86 54 STX $JUST_DROPPED $2432: 30 02 BMI $2436 $2434: 86 9c STX $HOLDING $2436: a9 08 LDA #$08 $2438: 99 00 00 STA $0000,Y $243b: a9 15 LDA #$15 $243d: 85 22 STA $22 $243f: 20 48 24 JSR .V7 .V7: 20 97 24 JSR WP $244b: 4c 9f 24 JMP $249f .WP: a4 65 LDY $N1_65 $2499: a9 ff LDA #$ff $249b: 99 38 00 STA $0038,Y $249e: 60 RTS $249f: a4 65 LDY $N1_65 $24a1: a9 ff LDA #$ff $24a3: 99 40 00 STA $0040,Y $24a6: 60 RTS $2442: a2 88 LDX #$88 $2444: 20 35 0a JSR PLAYSOUND // Sound command address block is 0988 $2447: 60 RTS .V7: 20 97 24 JSR WP $244b: 4c 9f 24 JMP $249f .WP: a4 65 LDY $N1_65 $2499: a9 ff LDA #$ff $249b: 99 38 00 STA $0038,Y $249e: 60 RTS $249f: a4 65 LDY $N1_65 $24a1: a9 ff LDA #$ff $24a3: 99 40 00 STA $0040,Y $24a6: 60 RTS .BIGSCREEN: 20 28 25 JSR SETSCRNADDR // This is the only place that calls SETSCRNADDR $2451: 30 04 BMI $2457 $2453: 90 1c BCC $2471 $2455: b0 2e BCS $2485 $2457: 20 44 25 JSR WR $245a: b0 08 BCS $2464 $245c: a4 65 LDY $N1_65 $245e: a5 71 LDA $71 $2460: 99 40 00 STA $0040,Y $2463: 60 RTS $2464: 20 57 25 JSR .WS $2467: 90 2d BCC $2496 $2469: 20 b3 24 JSR MANIPSCRNADDR $246c: a5 82 LDA $SPRSCRHI $246e: 30 37 BMI $24a7 $2470: 60 RTS $2471: b9 40 00 LDA $0040,Y $2474: 30 02 BMI $2478 $2476: 85 71 STA $71 $2478: 20 44 25 JSR WR $247b: 90 1a BCC WP $247d: 20 57 25 JSR WS $2480: 90 14 BCC $2496 $2482: 4c b3 24 JMP MANIPSCRNADDR $2485: 20 57 25 JSR WS $2488: 90 15 BCC $249f $248a: a4 65 LDY $N1_65 $248c: b9 40 00 LDA $0040,Y $248f: 85 71 STA $71 $2491: 20 44 25 JSR WR $2494: b0 09 BCS $249f $2496: 60 RTS .WP: a4 65 LDY $N1_65 $2499: a9 ff LDA #$ff $249b: 99 38 00 STA $0038,Y $249e: 60 RTS $249f: a4 65 LDY $N1_65 $24a1: a9 ff LDA #$ff $24a3: 99 40 00 STA $0040,Y $24a6: 60 RTS $24a7: a4 65 LDY $N1_65 $24a9: a5 82 LDA $SPRSCRHI $24ab: 29 01 AND #$01 $24ad: 49 01 EOR #$01 $24af: 99 40 00 STA $0040,Y $24b2: 60 RTS .MANIPSCRNADDR: a4 65 LDY $N1_65 $24b5: b9 38 00 LDA $0038,Y $24b8: 10 02 BPL $24bc $24ba: a5 81 LDA $SPRSCRLO $24bc: 29 02 AND #$02 $24be: 49 02 EOR #$02 $24c0: 99 38 00 STA $0038,Y $24c3: 60 RTS .WW: 20 28 25 JSR SETSCRNADDR $24c7: 30 19 BMI $24e2 $24c9: 90 2e BCC $24f9 $24cb: a9 ff LDA #$ff $24cd: 85 71 STA $71 $24cf: 20 16 25 JSR WM $24d2: 90 cb BCC $249f $24d4: a5 40 LDA $40 $24d6: 85 71 STA $71 $24d8: a9 ff LDA #$ff $24da: 85 70 STA $70 $24dc: 20 16 25 JSR WM $24df: b0 c6 BCS $24a7 $24e1: 60 RTS $24e2: 20 16 25 JSR WM $24e5: 90 40 BCC $2527 $24e7: a5 70 LDA $70 $24e9: 30 c8 BMI MANIPSCRNADDR $24eb: a9 ff LDA #$ff $24ed: 85 71 STA $71 $24ef: 20 16 25 JSR WM $24f2: 90 33 BCC $2527 $24f4: a9 00 LDA #$00 $24f6: 85 40 STA $40 $24f8: 60 RTS $24f9: a5 40 LDA $40 $24fb: 30 02 BMI $24ff $24fd: 85 71 STA $71 $24ff: a9 ff LDA #$ff $2501: 85 70 STA $70 $2503: 20 16 25 JSR WM $2506: 90 8f BCC WP $2508: a5 38 LDA $38 $250a: 85 70 STA $70 $250c: a9 ff LDA #$ff $250e: 85 71 STA $71 $2510: 20 16 25 JSR WM $2513: b0 9e BCS MANIPSCRNADDR $2515: 60 RTS .WM: a9 01 LDA #$01 $2518: 85 5e STA $5e $251a: 20 98 21 JSR TRANSFER_0C30(Y)_PRE // Call with #$2f, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $251d: 20 50 1c JSR returns79-7a $2520: 20 5e 1b JSR LDA&70... $2523: a9 ff LDA #$ff $2525: 85 5e STA $5e $2527: 60 RTS // // Called with $70,$71 // .SETSCRNADDR: a4 65 LDY $N1_65 $252a: 18 CLC $252b: a5 70 LDA $70 $252d: 85 81 STA $SPRSCRLO $252f: a5 71 LDA $71 $2531: 85 82 STA $SPRSCRHI $2533: b9 38 00 LDA $0038,Y $2536: 10 09 BPL $2541 $2538: b9 40 00 LDA $0040,Y $253b: 30 03 BMI $2540 $253d: 38 SEC $253e: 85 71 STA $71 $2540: 60 RTS $2541: 85 70 STA $70 $2543: 60 RTS .WR: bd a0 0b LDA $RONALD,X $2547: 29 07 AND #$07 $2549: c9 03 CMP #$03 $254b: d0 08 BNE $2555 $254d: 8a TXA $254e: a8 TAY $254f: 20 a9 21 JSR $(Y)_&73_&74_&78_[$0c78] $2552: 4c 21 16 JMP W4 $2555: 38 SEC $2556: 60 RTS .WS: 20 98 21 JSR TRANSFER_0C30(Y)_PRE // Call with #$2f, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $255a: 4c 8b 1c JMP W2 .SPRITEY: c9 ff CMP #$ff $255f: f0 29 BEQ .WX $2561: a9 ff LDA #$ff $2563: 85 70 STA $70 $2565: a9 01 LDA #$01 $2567: 85 71 STA $71 $2569: bd 30 0c LDA $RIKER,X $256c: f0 03 BEQ $2571 $256e: a9 00 LDA #$00 $2570: 60 RTS $2571: a9 ff LDA #$ff $2573: 95 00 STA $00,X $2575: 20 98 21 JSR TRANSFER_0C30(Y)_PRE $2578: e6 73 INC $73 $257a: 20 9d 22 JSR PLOTSPRITE $257d: a6 64 LDX $N1_64 $257f: a5 68 LDA $68 $2581: 9d 18 0d STA $BARNEY,X $2584: a2 88 LDX #$88 $2586: 20 35 0a JSR PLAYSOUND // Sound command address block is 0988 $2589: 60 RTS .WX: a5 68 LDA $68 $258c: 38 SEC $258d: fd 18 0d SBC $BARNEY,X $2590: c9 02 CMP #$02 $2592: b0 02 BCS MEMORY_BANK_COPY_PRE $2594: 90 f3 BCC $2589 .MEMORY_BANK_COPY_PRE: a9 03 LDA #$03 $2598: 9d 18 0d STA $BARNEY,X .MEMORY_BANK_COPY: bd 10 0b LDA $0b10,X $259e: 9d a0 0b STA $RONALD,X $25a1: bd 40 0b LDA $0b40,X $25a4: 9d e8 0b STA $RICHARD,X $25a7: bd 70 0b LDA $0b70,X $25aa: 9d 30 0c STA $RIKER,X .MEMORY_BANK_COPY_SMALL: bd 80 0e LDA $0e80,X $25b0: 95 00 STA $00,X $25b2: 60 RTS // // .WG: 20 98 21 JSR TRANSFER_0C30(Y)_PRE // Call with #$2f, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $25b6: a9 01 LDA #$01 $25b8: 85 71 STA $71 $25ba: a9 ff LDA #$ff $25bc: 85 70 STA $70 $25be: 20 50 1c JSR returns79-7a $25c1: 20 5e 1b JSR LDA&70... $25c4: 60 RTS .N9: a2 23 LDX #$23 $25c7: 86 64 STX $N1_64 $25c9: a9 00 LDA #$00 $25cb: 85 65 STA $N1_65 $25cd: a5 63 LDA $MEANSOFDEATH $25cf: 30 06 BMI $25d7 $25d1: 20 02 2e JSR PALETTE2 $25d4: 4c 5a 26 JMP $265a $25d7: a5 23 LDA $23z $25d9: 30 36 BMI $2611 $25db: a0 0c LDY #$0c // set earlier for bucket-"OF"-water ! !! ! !?!?!?!?!? $25dd: c4 54 CPY $JUST_DROPPED $25df: d0 5a BNE $263b // Is bucket of water $25e1: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $25e4: a5 70 LDA $70 $25e6: 29 02 AND #$02 $25e8: 4a LSR $25e9: a8 TAY $25ea: a5 76 LDA $76 // Used in &0769 $25ec: c9 02 CMP #$02 $25ee: 90 0c BCC $25fc $25f0: c9 03 CMP #$03 $25f2: b0 47 BCS $263b $25f4: a5 77 LDA $77 $25f6: c9 0c CMP #$0c $25f8: b0 41 BCS $263b $25fa: 90 1f BCC $261b $25fc: a5 71 LDA $71 $25fe: c9 01 CMP #$01 $2600: f0 f4 BEQ $25f6 $2602: a5 77 LDA $77 $2604: d9 ed 09 CMP $09ed,Y $2607: b0 ed BCS $25f6 $2609: a2 80 LDX #$80 $260b: 86 23 STX $23z // Is 23 important what is default value? $260d: 20 35 0a JSR PLAYSOUND // Sound command address block is 0980 $2610: 60 RTS $2611: c9 ff CMP #$ff $2613: f0 fb BEQ $2610 $2615: 20 5d 25 JSR .SPRITEY $2618: f0 56 BEQ $2670 $261a: 60 RTS $261b: a5 55 LDA $DIRECTION_THROWN // set to #&04 elsewhere $261d: c9 02 CMP #$02 $261f: 10 0c BPL $262d // $DIRECTION_THROWN > 2 $2621: 0a ASL $2622: 85 70 STA $70 // Used in call to .WW $2624: a9 00 LDA #$00 $2626: 85 71 STA $71 $2628: 20 48 24 JSR V7 // Used in call to .WW .V7: 20 97 24 JSR WP $244b: 4c 9f 24 JMP $249f .WP: a4 65 LDY $N1_65 $2499: a9 ff LDA #$ff $249b: 99 38 00 STA $0038,Y $249e: 60 RTS $249f: a4 65 LDY $N1_65 $24a1: a9 ff LDA #$ff $24a3: 99 40 00 STA $0040,Y $24a6: 60 RTS $262b: 30 3c BMI $2669 // Always //---------------------------------------------------// $262d: a5 70 LDA $70 $262f: 10 02 BPL $2633 $2631: a9 00 LDA #$00 $2633: 49 02 EOR #$02 $2635: 85 70 STA $70 $2637: a5 55 LDA $DIRECTION_THROWN $2639: d0 e9 BNE $2624 // Not bucket of water // // Collision Detection? // // To die by with $76 needs to be 4 &77 greater than 40 and greater than 0a // $263b: a0 2f LDY #$2f $263d: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $2640: a5 77 LDA $77 $2642: c9 40 CMP #$40 $2644: b0 14 BCS $265a $2646: c9 0a CMP #$0a $2648: b0 1a BCS $2664 $264a: a5 76 LDA $76 // Used in &0769 $264c: c9 04 CMP #$04 $264e: b0 14 BCS $2664 $2650: a9 08 LDA #$08 // Witch $2652: 85 63 STA $MEANSOFDEATH $2654: 20 48 24 JSR V7 .V7: 20 97 24 JSR WP $244b: 4c 9f 24 JMP $249f .WP: a4 65 LDY $N1_65 $2499: a9 ff LDA #$ff $249b: 99 38 00 STA $0038,Y $249e: 60 RTS $249f: a4 65 LDY $N1_65 $24a1: a9 ff LDA #$ff $24a3: 99 40 00 STA $0040,Y $24a6: 60 RTS $2657: 4c 09 2e JMP $2e09 $265a: a2 23 LDX #$23 $265c: a0 14 LDY #$14 $265e: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $2661: 4c 69 26 JMP $2669 $2664: a2 78 LDX #$78 $2666: 20 35 0a JSR PLAYSOUND // Sound command address block is 0978 $2669: a2 23 LDX #$23 $266b: 20 c4 24 JSR .WW $266e: b0 a0 BCS $2610 $2670: 20 0b 17 JSR .returnsBARNEYX $2673: 18 CLC $2674: 69 12 ADC #$12 $2676: 85 7f STA $7f $2678: 4c cc 2c JMP .STORE-70-71-7F .SPIDERCHECK: a9 03 LDA #$03 $267d: 85 65 STA $N1_65 $267f: a2 29 LDX #$29 $2681: 86 64 STX $N1_64 $2683: 20 c0 00 JSR $00c0 $2686: d0 70 BNE $26f8 $2688: a0 08 LDY #$08 $268a: b9 00 00 LDA $0000,Y // Object 8 is a torch $268d: c9 06 CMP #$06 $268f: f0 30 BEQ $26c1 $2691: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $2694: a6 65 LDX $N1_65 $2696: a5 77 LDA $77 $2698: c9 04 CMP #$04 $269a: b0 25 BCS $26c1 $269c: a5 76 LDA $76 //Used in &0769 $269e: c9 03 CMP #$03 $26a0: 10 1f BPL $26c1 $26a2: c9 02 CMP #$02 $26a4: 30 08 BMI $26ae $26a6: a5 71 LDA $71 $26a8: 49 01 EOR #$01 $26aa: 95 40 STA $40,X $26ac: 10 1a BPL $26c8 $26ae: a5 70 LDA $70 $26b0: 49 02 EOR #$02 $26b2: 95 38 STA $38,X $26b4: bd 56 0c LDA $0c56,X $26b7: c9 04 CMP #$04 $26b9: d0 0d BNE $26c8 $26bb: a9 12 LDA #$12 $26bd: 95 26 STA $26,X $26bf: d0 07 BNE $26c8 $26c1: a6 64 LDX $N1_64 $26c3: 88 DEY $26c4: c0 04 CPY #$04 $26c6: d0 c2 BNE $268a // Loop $26c8: a6 64 LDX $N1_64 $26ca: b4 00 LDY $00,X $26cc: 10 06 BPL $26d4 $26ce: 20 8a 25 JSR .WX $26d1: 4c f8 26 JMP $26f8 $26d4: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $26d7: a5 77 LDA $77 $26d9: d0 0f BNE $26ea $26db: a5 76 LDA $76 //Used in &0769 $26dd: d0 0b BNE $26ea $26df: 20 48 24 JSR .V7 .V7: 20 97 24 JSR WP $244b: 4c 9f 24 JMP $249f .WP: a4 65 LDY $N1_65 $2499: a9 ff LDA #$ff $249b: 99 38 00 STA $0038,Y $249e: 60 RTS $249f: a4 65 LDY $N1_65 $24a1: a9 ff LDA #$ff $24a3: 99 40 00 STA $0040,Y $24a6: 60 RTS $26e2: b5 00 LDA $00,X $26e4: 49 01 EOR #$01 $26e6: 95 00 STA $00,X $26e8: d0 0e BNE $26f8 $26ea: 20 4e 24 JSR BIGSCREEN $26ed: 20 0b 17 JSR returnsBARNEYX $26f0: 18 CLC $26f1: 69 16 ADC #$16 $26f3: 85 7f STA $7f $26f5: 20 cc 2c JSR STORE-70-71-7F $26f8: c6 64 DEC $N1_64 $26fa: a6 64 LDX $N1_64 $26fc: c6 65 DEC $N1_65 $26fe: 30 03 BMI $2703 // Spider check $2700: 4c 83 26 JMP $2683 $2703: a2 25 LDX #$25 $2705: 86 64 STX $N1_64 $2707: a9 ff LDA #$ff // LOOP point $2709: 85 70 STA $70 $270b: b5 00 LDA $00,X $270d: 30 22 BMI $2731 $270f: d0 5d BNE $276e // Spider check $2711: bd 30 0c LDA $RIKER,X $2714: c9 16 CMP #$16 $2716: f0 14 BEQ $272c $2718: a9 00 LDA #$00 $271a: 85 71 STA $71 $271c: a9 1c LDA #$1c $271e: 85 7f STA $7f $2720: 20 cc 2c JSR STORE-70-71-7F $2723: c6 64 DEC $N1_64 $2725: a6 64 LDX $N1_64 $2727: e0 23 CPX #$23 $2729: d0 dc BNE $2707 $272b: 60 RTS $272c: a9 ff LDA #$ff $272e: 95 00 STA $00,X $2730: 60 RTS $2731: a5 63 LDA $MEANSOFDEATH $2733: 10 0c BPL $2741 $2735: bc cb 09 LDY $09cb,X $2738: a2 2f LDX #$2f $273a: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $273d: a5 77 LDA $77 $273f: f0 1f BEQ $2760 $2741: a2 29 LDX #$29 $2743: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $2746: a5 77 LDA $77 $2748: f0 16 BEQ $2760 $274a: ca DEX $274b: e0 25 CPX #$25 $274d: d0 f4 BNE $2743 $274f: a6 64 LDX $N1_64 $2751: 20 c0 00 JSR $00c0 $2754: d0 cd BNE $2723 $2756: b5 00 LDA $00,X $2758: 85 70 STA $70 $275a: c9 ff CMP #$ff $275c: d0 c5 BNE $2723 $275e: f0 ba BEQ $271a $2760: 8a TXA $2761: a4 64 LDY $N1_64 $2763: 99 00 00 STA $0000,Y $2766: a2 80 LDX #$80 $2768: 20 35 0a JSR PLAYSOUND // Sound command address block is 0980 $276b: 4c 23 27 JMP $2723 $276e: bd 30 0c LDA $RIKER,X $2771: c9 08 CMP #$08 $2773: f0 19 BEQ $278e // Check to see if killed by the spider $2775: b4 00 LDY $00,X $2777: fe a0 0b INC $RONALD,X $277a: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $277d: de a0 0b DEC $RONALD,X $2780: a9 80 LDA #$80 $2782: 85 71 STA $71 $2784: a9 1c LDA #$1c $2786: 85 7f STA $7f $2788: 20 cc 2c JSR STORE-70-71-7F $278b: 4c 23 27 JMP $2723 $278e: b4 00 LDY $00,X $2790: c0 2f CPY #$2f $2792: f0 1b BEQ $27af // Killed by the spider $2794: a9 ff LDA #$ff $2796: 99 00 00 STA $0000,Y $2799: a5 68 LDA $68 $279b: 99 18 0d STA $BARNEY,Y $279e: a9 00 LDA #$00 $27a0: 95 00 STA $00,X $27a2: a2 88 LDX #$88 $27a4: 20 35 0a JSR PLAYSOUND // Sound command address block is 0988 $27a7: a2 90 LDX #$90 $27a9: 20 35 0a JSR PLAYSOUND // Sound command address block is 0990 $27ac: 4c 23 27 JMP $2723 $27af: a9 07 LDA #$07 // Spider $27b1: 85 63 STA $MEANSOFDEATH $27b3: d0 e9 BNE $279e $27b5: d0 37 BNE $27ee $27b7: a5 5d LDA $5d $27b9: 30 03 BMI $27be $27bb: 4c cd 28 JMP $28cd $27be: a9 01 LDA #$01 $27c0: 85 71 STA $71 $27c2: a9 ff LDA #$ff $27c4: 85 70 STA $70 $27c6: 20 16 25 JSR WM // Interested in the carry $27c9: b0 05 BCS $27d0 $27cb: e6 6c INC $FALLING $27cd: 4c e8 16 JMP W5 $27d0: a5 6c LDA $FALLING $27d2: 30 09 BMI $27dd $27d4: c9 0e CMP #$0e $27d6: 90 05 BCC $27dd // Haven't fallen $27d8: a9 02 LDA #$02 // Fell $27da: 85 63 STA $MEANSOFDEATH $27dc: 60 RTS $27dd: a9 ff LDA #$ff $27df: 85 6c STA $FALLING $27e1: a5 5d LDA $5d $27e3: c9 80 CMP #$80 $27e5: d0 5d BNE $2844 $27e7: a9 01 LDA #$01 $27e9: 85 63 STA $MEANSOFDEATH $27eb: 4c 6b 29 JMP .UF $27ee: 20 b3 25 JSR .WG $27f1: b0 5a BCS $284d $27f3: 4c e8 16 JMP .W5 $27f6: a2 1d LDX #$1d $27f8: 20 96 25 JSR .MEMORY_BANK_COPY_PRE $27fb: a2 1c LDX #$1c $27fd: a5 1c LDA $1c $27ff: 10 03 BPL $2804 $2801: 20 96 25 JSR .MEMORY_BANK_COPY_PRE $2804: a2 2f LDX #$2f $2806: a9 00 LDA #$00 $2808: 85 5d STA $5d $280a: 85 99 STA $99 $280c: ad cf 0b LDA $0bcf $280f: 38 SEC $2810: e9 06 SBC #$06 $2812: 8d e4 0b STA $0be4 $2815: ad 17 0c LDA JTINDEX $2818: e9 00 SBC #$00 $281a: 8d 2c 0c STA $0c2c $281d: ad cf 0b LDA $0bcf $2820: 18 CLC $2821: 69 06 ADC #$06 $2823: 8d e5 0b STA $0be5 $2826: ad 17 0c LDA JTINDEX $2829: 69 00 ADC #$00 $282b: 8d 2d 0c STA $0c2d $282e: ad 5f 0c LDA $0c5f $2831: 8d 74 0c STA $0c74 $2834: 8d 75 0c STA $0c75 $2837: 20 6b 29 JSR .UF $283a: a9 45 LDA #$45 $283c: 85 1d STA $1d $283e: a9 44 LDA #$44 $2840: 85 1c STA $1c $2842: 10 aa BPL $27ee $2844: a5 47 LDA $47 $2846: 30 ae BMI $27f6 $2848: a9 05 LDA #$05 // Are dead $284a: 85 63 STA $MEANSOFDEATH $284c: 60 RTS // // Interesting // $284d: a4 75 LDY $ALIVE $284f: d0 08 BNE $2859 // Branch if $ALIVE not zero $2851: a2 90 LDX #$90 // $ALIVE is zero $2853: 20 35 0a JSR PLAYSOUND // Sound command address block is 0990 $2856: 20 77 29 JSR DROP_D $2859: a4 75 LDY $ALIVE $285b: e6 75 INC $ALIVE $285d: a5 5d LDA $5d $285f: f0 2d BEQ $288e $2861: a5 63 LDA $MEANSOFDEATH $2863: c9 01 CMP #$01 // Don't know this means $2865: d0 06 BNE $286d $2867: c0 60 CPY #$60 $2869: f0 4b BEQ $28b6 // if $ALIVE = #&60 $286b: d0 21 BNE $288e $286d: 98 TYA $286e: c9 20 CMP #$20 $2870: f0 1f BEQ $2891 $2872: 10 37 BPL $28ab $2874: 29 03 AND #$03 $2876: d0 0d BNE $2885 $2878: ad 74 09 LDA $0974 $287b: 69 02 ADC #$02 $287d: 8d 74 09 STA $0974 $2880: a2 70 LDX #$70 $2882: 20 35 0a JSR PLAYSOUND // Sound command address block is 0970 $2885: a5 75 LDA $ALIVE $2887: 29 04 AND #$04 $2889: 4a LSR $288a: 85 7f STA $7f $288c: 10 1f BPL $28ad $288e: 98 TYA $288f: d0 1a BNE $28ab $2891: 20 98 21 JSR .TRANSFER_0C30(Y)_PRE // Call with #$2f, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $2894: a5 77 LDA $77 $2896: 8d b7 0b STA $0bb7 $2899: a5 78 LDA $78 $289b: 8d ff 0b STA $0bff $289e: a5 76 LDA $76 //Used in &0769 $28a0: 8d 47 0c STA $0c47 $28a3: a9 64 LDA #$64 $28a5: 8d 74 09 STA $0974 $28a8: 20 9d 22 JSR PLOTSPRITE $28ab: a2 17 LDX #$17 $28ad: a9 ff LDA #$ff $28af: 85 70 STA $70 $28b1: 85 71 STA $71 $28b3: 4c cc 2c JMP STORE-70-71-7F $28b6: a0 17 LDY #$17 // $ALIVE = &60 $28b8: 20 9a 21 JSR TRANSFER_0C30(Y) $28bb: 20 9d 22 JSR PLOTSPRITE $28be: a9 00 LDA #$00 $28c0: 85 75 STA $ALIVE // DEAD $28c2: a9 ff LDA #$ff $28c4: 85 63 STA $MEANSOFDEATH $28c6: a9 02 LDA #$02 $28c8: 85 70 STA $70 // "X" $28ca: 4c d9 17 JMP $17d9 $28cd: a5 99 LDA $99 $28cf: f0 15 BEQ $28e6 $28d1: a5 54 LDA $JUST_DROPPED $28d3: 10 11 BPL $28e6 $28d5: c6 99 DEC $99 $28d7: 20 89 2f JSR .WSPRITEY $28da: a4 9c LDY $HOLDING $28dc: 30 08 BMI $28e6 $28de: a2 2f LDX #$2f $28e0: 20 d4 2e JSR BMOUTH $28e3: 20 77 29 JSR DROP $28e6: a9 05 LDA #$05 $28e8: 85 65 STA $N1_65 $28ea: a2 1d LDX #$1d $28ec: 86 64 STX $N1_64 $28ee: b4 00 LDY $00,X $28f0: 30 19 BMI $290b $28f2: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $28f5: a5 77 LDA $77 $28f7: d0 08 BNE $2901 $28f9: e6 5d INC $5d $28fb: a9 ff LDA #$ff $28fd: 95 00 STA $00,X $28ff: 30 0a BMI $290b $2901: a9 01 LDA #$01 $2903: 85 71 STA $71 $2905: 20 4e 24 JSR .BIGSCREEN $2908: 20 18 1a JSR .WE $290b: c6 65 DEC $N1_65 $290d: a6 64 LDX $N1_64 $290f: ca DEX $2910: e0 1b CPX #$1b $2912: d0 d8 BNE $28ec $2914: a5 5d LDA $5d $2916: c9 02 CMP #$02 $2918: 30 91 BMI $28ab $291a: d0 13 BNE $292f $291c: a0 17 LDY #$17 $291e: 20 9a 21 JSR TRANSFER_0C30(Y) $2921: 20 9d 22 JSR PLOTSPRITE $2924: a9 46 LDA #$46 $2926: 85 1d STA $1d $2928: 85 1c STA $1c $292a: e6 5d INC $5d $292c: 4c 6b 29 JMP .UF $292f: c9 04 CMP #$04 $2931: d0 06 BNE $2939 $2933: 85 99 STA $99 $2935: a9 47 LDA #$47 $2937: d0 ed BNE $2926 $2939: c9 06 CMP #$06 $293b: d0 1d BNE $295a $293d: a9 01 LDA #$01 $293f: 85 63 STA $MEANSOFDEATH $2941: a9 00 LDA #$00 $2943: 85 75 STA $ALIVE //DEAD $2945: a9 18 LDA #$18 $2947: 85 47 STA $47 $2949: a2 1c LDX #$1c $294b: 20 ad 25 JSR .MEMORY_BANK_COPY_SMALL $294e: a2 1d LDX #$1d $2950: 20 ad 25 JSR .MEMORY_BANK_COPY_SMALL $2953: a9 80 LDA #$80 $2955: 85 5d STA $5d $2957: 4c 6b 29 JMP .UF $295a: a4 1d LDY $1d $295c: a2 2f LDX #$2f $295e: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $2961: a9 ff LDA #$ff $2963: 85 71 STA $71 $2965: 20 4e 24 JSR .BIGSCREEN $2968: 4c 1f 18 JMP $181f .UF: a9 05 LDA #$05 $296d: 85 65 STA $N1_65 $296f: 20 48 24 JSR .V7 .V7: 20 97 24 JSR WP $244b: 4c 9f 24 JMP $249f .WP: a4 65 LDY $N1_65 $2499: a9 ff LDA #$ff $249b: 99 38 00 STA $0038,Y $249e: 60 RTS $249f: a4 65 LDY $N1_65 $24a1: a9 ff LDA #$ff $24a3: 99 40 00 STA $0040,Y $24a6: 60 RTS $2972: c6 65 DEC $N1_65 $2974: 10 f9 BPL $296f $2976: 60 RTS .DROP: a2 2f LDX #$2f $2979: a4 9c LDY $HOLDING $297b: 30 13 BMI $2990 // Return if holding nothing $297d: 84 54 STY $JUST_DROPPED $297f: a9 00 LDA #$00 $2981: 85 56 STA $DROP_FLAG_2 $2983: a9 0e LDA #$0e $2985: 99 00 00 STA $0000,Y $2988: a9 ff LDA #$ff $298a: 85 9c STA $HOLDING $298c: a9 03 LDA #$03 $298e: 85 55 STA $DIRECTION_THROWN $2990: 60 RTS // Object &54, #&03 &55, #&00 &56 // .STARVING: a5 5d LDA $5d $2b1d: 30 01 BMI $2b20 $2b1f: 60 RTS $2b20: c9 ff CMP #$ff $2b22: f0 59 BEQ $2b7d $2b24: a5 47 LDA $47 $2b26: 30 0c BMI $2b34 // Good alive $2b28: c6 60 DEC $60 $2b2a: d0 08 BNE $2b34 $2b2c: c6 47 DEC $47 // Starve counter $2b2e: d0 04 BNE $2b34 $2b30: a9 03 LDA #$03 // Starved $2b32: 85 63 STA $MEANSOFDEATH $2b34: ad 5f 0c LDA $0c5f $2b37: c9 08 CMP #$08 $2b39: 90 07 BCC $2b42 $2b3b: ad cf 0b LDA $0bcf $2b3e: c9 90 CMP #$90 $2b40: b0 06 BCS $2b48 $2b42: a9 ff LDA #$ff $2b44: 85 5d STA $5d // Reset? $2b46: d0 35 BNE $2b7d $2b48: a5 3e LDA $3e $2b4a: f0 31 BEQ $2b7d $2b4c: a5 08 LDA $08 $2b4e: c9 04 CMP #$04 $2b50: d0 15 BNE $2b67 $2b52: a2 2b LDX #$2b $2b54: a0 08 LDY #$08 $2b56: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 $2b59: a5 77 LDA $77 $2b5b: c9 04 CMP #$04 $2b5d: b0 08 BCS $2b67 $2b5f: a9 00 LDA #$00 $2b61: 85 3e STA $3e $2b63: 86 1d STX $1d $2b65: f0 16 BEQ $2b7d $2b67: ad 39 0c LDA $0c39 $2b6a: c9 12 CMP #$12 $2b6c: d0 0f BNE $2b7d $2b6e: ad a9 0b LDA $0ba9 $2b71: c9 b0 CMP #$b0 $2b73: 90 08 BCC $2b7d $2b75: c9 b3 CMP #$b3 $2b77: b0 04 BCS $2b7d $2b79: a9 08 LDA #$08 $2b7b: 85 3f STA $3f $2b7d: 20 e4 2b JSR WWH $2b80: 20 b8 2b JSR WWI $2b83: 20 8d 2b JSR S2RITEY $2b86: a2 1c LDX #$1c $2b88: c6 65 DEC $N1_65 $2b8a: 4c 9a 1a JMP BRIGHTON .S2RITEY : a2 1d LDX #$1d $2b8f: a9 05 LDA #$05 $2b91: 85 65 STA $N1_65 $2b93: ad bd 0b LDA $0bbd $2b96: c9 c3 CMP #$c3 $2b98: 90 1b BCC $2bb5 $2b9a: a9 01 LDA #$01 $2b9c: 85 3e STA $3e $2b9e: a0 08 LDY #$08 $2ba0: 20 9a 21 JSR TRANSFER_0C30(Y) $2ba3: 20 10 09 JSR $0910 $2ba6: f0 03 BEQ $2bab $2ba8: 20 9d 22 JSR PLOTSPRITE $2bab: a9 0a LDA #$0a $2bad: 8d f0 0b STA $0bf0 $2bb0: a2 1d LDX #$1d $2bb2: 20 ad 25 JSR MEMORY_BANK_COPY_SMALL $2bb5: 4c 9a 1a JMP BRIGHTON .WWI: a5 3e LDA $3e $2bba: 30 27 BMI $2be3 $2bbc: d0 0e BNE COLOURS $2bbe: a5 67 LDA $67 $2bc0: 29 08 AND #$08 $2bc2: f0 04 BEQ $2bc8 $2bc4: a0 05 LDY #$05 $2bc6: 10 0a BPL $2bd2 $2bc8: a0 02 LDY #$02 $2bca: 10 06 BPL $2bd2 .COLOURS: a9 ff LDA #$ff $2bce: 85 3e STA $3e $2bd0: a0 08 LDY #$08 $2bd2: a9 02 LDA #$02 $2bd4: 85 72 STA $TMP_72 $2bd6: a9 9b LDA #$9b .LOOP: be 7f 0d LDX $0d7f,Y $2bdb: 20 f4 ff JSR $fff4 // OSBYTE set up pallete { e0 d0 c0 e3 d1 c7 e1 d3 c7 } $2bde: 88 DEY // EOR 7 { e7 d7 c7 e4 d6 c0 e6 d4 c0 } $2bdf: c6 72 DEC $TMP_72 $2be1: 10 f5 BPL LOOP $2be3: 60 RTS .WWH: a6 3f LDX $3f $2be6: 30 18 BMI $2c00 $2be8: a9 01 LDA #$01 $2bea: 85 71 STA $71 $2bec: a9 ff LDA #$ff $2bee: 85 70 STA $70 $2bf0: 20 16 25 JSR WM $2bf3: b0 03 BCS $2bf8 $2bf5: 4c cc 2c JMP STORE-70-71-7F $2bf8: a9 ff LDA #$ff $2bfa: 85 3f STA $3f $2bfc: 60 RTS $2bfd: de 30 0c DEC $RIKER,X $2c00: 60 RTS .TAKE: a9 1d LDA #$1d $2c03: 85 76 STA $76 // Used in &0769 $2c05: a6 9b LDX $9b $2c07: 30 1a BMI $2c23 // No index $2c09: bd c5 09 LDA $09c5,X $2c0c: 85 77 STA $77 $2c0e: bd ca 09 LDA $09ca,X $2c11: 85 78 STA $78 $2c13: bc c0 09 LDY $CARRYING,X $2c16: a9 ff LDA #$ff $2c18: 85 9b STA $9b $2c1a: 9d c0 09 STA $CARRYING,X $2c1d: 20 a9 21 JSR $(Y)_&73_&74_&78_[$0c78] $2c20: 20 78 22 JSR WRITE_TO_SCR $2c23: a5 32 LDA $32 // Waiting $2c25: 38 SEC $2c26: ed 79 fe SBC $fe79 // VIA-B MSB of timer $2c29: c9 0d CMP #$0d $2c2b: 30 f6 BMI $2c23 $2c2d: a2 02 LDX #$02 $2c2f: a0 03 LDY #$03 $2c31: a5 85 LDA $85 $2c33: 18 CLC $2c34: 69 46 ADC #$46 $2c36: 8d c8 09 STA $09c8 $2c39: a5 86 LDA $86 $2c3b: 69 00 ADC #$00 $2c3d: 8d cd 09 STA $09cd $2c40: b9 c5 09 LDA $09c5,Y // = 09c8 , 09c7 , 09c6 $2c43: 38 SEC $2c44: e9 0a SBC #$0a $2c46: 9d c5 09 STA $09c5,X // = 09c7 , 09c6 , 09c5 $2c49: b9 ca 09 LDA $09ca,Y // = 09cd , 09cc , 09cb $2c4c: e9 00 SBC #$00 $2c4e: 9d ca 09 STA $09ca,X // = 09cc , 09cb , 09ca $2c51: 88 DEY $2c52: ca DEX $2c53: 10 eb BPL $2c40 // Two times $2c55: a2 03 LDX #$03 $2c57: bc c0 09 LDY $CARRYING,X $2c5a: 30 48 BMI $2ca4 // DEX and loop back to 2c57 $2c5c: b9 48 0d LDA $0d48,Y $2c5f: 85 7f STA $7f $2c61: 20 a9 21 JSR $(Y)_&73_&74_&78_[$0c78] $2c64: a9 1d LDA #$1d $2c66: 85 76 STA $76 //Used in &0769 $2c68: bd c5 09 LDA $09c5,X $2c6b: 85 77 STA $77 $2c6d: bd ca 09 LDA $09ca,X $2c70: 85 78 STA $78 $2c72: 86 96 STX $96 $2c74: 20 bc 21 JSR SPRITEYRROWKEYS $2c77: a5 9d LDA $9d $2c79: 30 27 BMI $2ca2 $2c7b: f0 0b BEQ $2c88 $2c7d: a5 77 LDA $77 $2c7f: d0 02 BNE $2c83 $2c81: c6 78 DEC $78 $2c83: c6 77 DEC $77 $2c85: 4c 93 2c JMP $2c93 $2c88: a5 77 LDA $77 $2c8a: 18 CLC $2c8b: 65 74 ADC $74 $2c8d: 85 77 STA $77 $2c8f: 90 02 BCC $2c93 $2c91: e6 78 INC $78 $2c93: a9 03 LDA #$03 $2c95: 85 73 STA $73 $2c97: a9 01 LDA #$01 $2c99: 85 74 STA $74 $2c9b: a9 1d LDA #$1d $2c9d: 85 76 STA $76 //Used in &0769 $2c9f: 20 78 22 JSR WRITE_TO_SCR $2ca2: a6 96 LDX $96 $2ca4: ca DEX // Got here if carrying slot was empty $2ca5: 10 b0 BPL $2c57 $2ca7: a6 99 LDX $99 // carrying slot empty $2ca9: e0 04 CPX #$04 $2cab: 10 1e BPL $2ccb // RTS $2cad: 20 92 01 JSR $0192 $0192: a9 1c LDA #$1c $0194: 85 76 STA $76 $0196: bd c5 09 LDA $09c5,X $0199: 38 SEC $019a: e9 01 SBC #$01 $019c: 85 77 STA $77 $019e: bd ca 09 LDA $09ca,X $01a1: e9 00 SBC #$00 $01a4: 85 78 STA $78 $01a6: a9 01 LDA #$01 $01a8: 85 73 STA $73 $01aa: a9 05 LDA #$05 $01ac: 85 74 STA $74 $01ae: a9 0e LDA #$0e $01b0: 85 80 STA $80 $01b2: 60 RTS $2cb0: a9 c6 LDA #$c6 $2cb2: 85 7f STA $7f $2cb4: 20 bc 21 JSR SPRITEYRROWKEYS $2cb7: a6 9a LDX $9a $2cb9: e4 99 CPX $99 $2cbb: f0 0e BEQ $2ccb $2cbd: 20 92 01 JSR $0192 $2cc0: a9 dc LDA #$dc $2cc2: 85 7f STA $7f $2cc4: 20 bc 21 JSR SPRITEYRROWKEYS $2cc7: a5 99 LDA $99 $2cc9: 85 9a STA $9a $2ccb: 60 RTS /*----------------------------------------* * Called with &70,&71,&7F,X * * * *----------------------------------------*/ .STORE-70-71-7F: e6 30 INC $30 // Set to #&ff every "PLAY" $2cce: a4 30 LDY $30 $2cd0: a5 70 LDA $70 $2cd2: 99 88 08 STA $0888,Y $2cd5: a5 71 LDA $71 $2cd7: 99 90 08 STA $0890,Y $2cda: a5 7f LDA $7f $2cdc: 99 98 08 STA $0898,Y $2cdf: 8a TXA $2ce0: 99 80 08 STA MODE,Y $2ce3: 60 RTS .M7: a9 ff LDA #$ff $2ce6: 85 5a STA $5a $2ce8: 30 0e BMI SPRITEYITs3 // Will always do this as bit 7 of A is set .SPRITEYIT: a9 18 LDA #$18 $2cec: 85 6a STA $6a $2cee: a9 00 LDA #$00 $2cf0: 85 5a STA $5a .SPRITEYITs6: a5 30 LDA $30 $2cf4: 85 31 STA $TMP_31 $2cf6: e6 31 INC $TMP_31 .SPRITEYITs3: a5 5a LDA $5a $2cfa: 30 19 BMI SPRITEYITs1 // If bit 7 is set $2cfc: a5 32 LDA $32 $2cfe: 38 SEC // Set carry $2cff: ed 79 fe SBC $fe79 // VIA-B MSB of timer $2d02: c9 3b CMP #$3b $2d04: 30 01 BMI .SPRITEYITs2 // If bit 7 is set, i.e. time is up $2d06: 60 RTS .SPRITEYITs2: 4a LSR $2d08: 85 79 STA $SCREEN_EXTENT $2d0a: a9 32 LDA #$32 $2d0c: 38 SEC $2d0d: e5 79 SBC $SCREEN_EXTENT $2d0f: e5 6a SBC $6a $2d11: c9 11 CMP #$11 $2d13: 10 e3 BPL .SPRITEYITs3 .SPRITEYITs1: c6 31 DEC $TMP_31 $2d17: 30 17 BMI $2d30 $2d19: a4 31 LDY $TMP_31 $2d1b: be 80 08 LDX MODE,Y $2d1e: 30 f5 BMI SPRITEYITs1 $2d20: b9 88 08 LDA $0888,Y $2d23: c9 80 CMP #$80 $2d25: f0 4b BEQ .SPRITEYITs4 $2d27: bd 30 0c LDA $RIKER,X $2d2a: c5 6a CMP $6a $2d2c: 10 14 BPL .SPRITEYITs5 $2d2e: 30 e5 BMI .SPRITEYITs1 $2d30: a5 33 LDA $33 $2d32: 49 ff EOR #$ff $2d34: 85 33 STA $33 $2d36: f0 ba BEQ .SPRITEYITs6 $2d38: a5 6a LDA $6a $2d3a: 38 SEC $2d3b: e9 04 SBC #$04 $2d3d: 85 6a STA $6a $2d3f: 10 b1 BPL .SPRITEYITs6 $2d41: 60 RTS .SPRITEYITs5: 20 98 21 JSR .TRANSFER_0C30(Y)_PRE // Call with #$2f, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $2d45: 20 10 09 JSR $0910 $2d48: 08 PHP $2d49: f0 03 BEQ .SPRITEYITs7 $2d4b: 20 9d 22 JSR PLOTSPRITE .SPRITEYITs7: a4 31 LDY $TMP_31 $2d50: be 80 08 LDX .MODE,Y $2d53: 28 PLP $2d54: 30 05 BMI .SPRITEYITs8 $2d56: a9 ff LDA #$ff $2d58: 99 80 08 STA .MODE,Y .SPRITEYITs8: b9 88 08 LDA $0888,Y $2d5e: 85 70 STA $70 $2d60: b9 90 08 LDA $0890,Y $2d63: 85 71 STA $71 $2d65: 20 00 01 JSR $0100 $2d68: 20 3f 09 JSR $093f $2d6b: a9 80 LDA #$80 $2d6d: 99 88 08 STA $0888,Y $2d70: 30 86 BMI .SPRITEYITs3 .SPRITEYITs4: 20 98 21 JSR .TRANSFER_0C30(Y)_PRE // Call with #$2f, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $2d75: a4 31 LDY $TMP_31 $2d77: be 80 08 LDX MODE,Y $2d7a: a9 ff LDA #$ff $2d7c: 99 80 08 STA MODE,Y $2d7f: e0 18 CPX #$18 $2d81: 10 07 BPL .SPRITEYITs9 $2d83: bd 48 0d LDA $0d48,X $2d86: 85 7f STA $7f $2d88: d0 15 BNE .SPRITEYITsA .SPRITEYITs9: b9 98 08 LDA $0898,Y $2d8d: a8 TAY $2d8e: b9 60 0d LDA $0d60,Y $2d91: 85 7f STA $7f $2d93: c0 0c CPY #$0c $2d95: 10 04 BPL .SPRITEYITsB $2d97: a9 0d LDA #$0d $2d99: d0 02 BNE .SPRITEYITsC .SPRITEYITsB: a9 0e LDA #$0e .SPRITEYITsC: 85 80 STA $80 .SPRITEYITsA: b5 00 LDA $00,X $2da1: 10 04 BPL .SPRITEYITsD $2da3: a9 00 LDA #$00 $2da5: 85 66 STA $66 .SPRITEYITsD: 20 c0 21 JSR .SPRITEYRROWKEYS_MAIN $2daa: 4c f8 2c JMP .SPRITEYITs3 .SETPALETTE: a5 34 LDA $34 $2daf: 30 42 BMI $2df3 // RTS $2db1: c6 34 DEC $34 $2db3: a5 34 LDA $34 $2db5: f0 63 BEQ $2e1a $2db7: c9 20 CMP #$20 $2db9: f0 03 BEQ $2dbe $2dbb: 10 37 BPL $2df4 // Most likely outcome $2dbd: 60 RTS // Never gets here! $2dbe: ad 17 0c LDA JTINDEX $2dc1: 8d f6 0b STA $0bf6 $2dc4: 8d f5 0b STA $0bf5 $2dc7: 4a LSR $2dc8: a8 TAY $2dc9: b9 89 0c LDA $0c89,Y $2dcc: 8d ae 0b STA $0bae $2dcf: 18 CLC $2dd0: 69 07 ADC #$07 $2dd2: 8d ad 0b STA $0bad $2dd5: b9 8c 0c LDA $0c8c,Y $2dd8: 8d 3e 0c STA $0c3e $2ddb: 18 CLC $2ddc: 69 02 ADC #$02 $2dde: 8d 3d 0c STA $0c3d $2de1: b9 5c 0d LDA $0d5c,Y $2de4: 8d 55 0d STA $0d55 $2de7: f0 05 BEQ $2dee $2de9: a2 0d LDX #$0d $2deb: 20 cc 2c JSR STORE-70-71-7F $2dee: a2 0e LDX #$0e $2df0: 4c cc 2c JMP STORE-70-71-7F $2df3: 60 RTS $2df4: c9 28 CMP #$28 $2df6: 10 06 BPL $2dfe $2df8: 29 02 AND #$02 $2dfa: d0 0d BNE $2e09 $2dfc: f0 04 BEQ PALETTE2 $2dfe: 29 04 AND #$04 $2e00: d0 07 BNE $2e09 .PALETTE2: a9 9b LDA #$9b $2e04: a2 00 LDX #$00 $2e06: 4c f4 ff JMP $fff4 // Write to video ULA palette - register 1 value 0 /*----------------------------------------*/ $2e09: a2 a8 LDX #$a8 $2e0b: 20 35 0a JSR PLAYSOUND // Sound command address block is 09a8 $2e0e: a2 b0 LDX #$b0 $2e10: 20 35 0a JSR PLAYSOUND // Sound command address block is 09b0 $2e13: a9 9b LDA #$9b // Write to video ULA palette - register 1 value 7 $2e15: a2 07 LDX #$07 $2e17: 4c f4 ff JMP $fff4 /*----------------------------------------*/ $2e1a: a2 0e LDX #$0e $2e1c: 20 98 21 JSR TRANSFER_0C30(Y)_PRE // Call with #$2f, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $2e1f: 20 10 09 JSR $0910 $2e22: f0 03 BEQ $2e27 $2e24: 20 9d 22 JSR PLOTSPRITE $2e27: a0 0d LDY #$0d $2e29: ad 55 0d LDA $0d55 $2e2c: f0 c5 BEQ $2df3 // // When $JUST_DROPPED = #&0c THROW_SPRITEYTER: 20 9a 21 JSR TRANSFER_0C30(Y) $2e31: 20 10 09 JSR $0910 $2e34: f0 bd BEQ $2df3 // RTS $2e36: 4c 9d 22 JMP PLOTSPRITE // Write to SCR and return .AIR: a2 2f LDX #$2f $2e3b: 20 98 21 JSR TRANSFER_0C30(Y)_PRE // Call with #$2f, TRANSFER_0C30(Y)_PRE sets {$73, $74, $76, $77, $78, $80} $2e3e: 20 69 07 JSR $0769_&8b // &8b = 4 bits $2e41: c9 0b CMP #$0b // !Ladder into Water! $2e43: 30 24 BMI $2e69 // Palette // // We are in water... $2e45: a5 63 LDA $MEANSOFDEATH $2e47: c9 04 CMP #$04 // Drowned $2e49: 90 04 BCC $2e4f $2e4b: c9 07 CMP #$07 // means of death < 4 $2e4d: 90 35 BCC $2e84 // RTS $2e4f: a9 ff LDA #$ff // $2e51: 85 63 STA $MEANSOFDEATH $2e53: a9 9b LDA #$9b $2e55: a2 94 LDX #$94 $2e57: 20 f4 ff JSR $fff4 // Palette $2e5a: a5 9c LDA $HOLDING $2e5c: c9 01 CMP #$01 // Air $2e5e: f0 10 BEQ $2e70 $2e60: c6 36 DEC $LUNG_CAPACITY $2e62: d0 10 BNE $2e74 $2e64: a9 04 LDA #$04 $2e66: 85 63 STA $MEANSOFDEATH // DROWNED $2e68: 60 RTS $2e69: a9 9b LDA #$9b $2e6b: a2 90 LDX #$90 $2e6d: 20 f4 ff JSR $fff4 $2e70: a9 1e LDA #$1e // Air $2e72: 85 36 STA $LUNG_CAPACITY $2e74: a0 0b LDY #$0b $2e76: 20 9a 21 JSR TRANSFER_0C30(Y) $2e79: 20 69 07 JSR $0769_&8b // &8b = 4 bits $2e7c: c9 0b CMP #$0b // !Ladder into Water! $2e7e: 30 04 BMI $2e84 $2e80: a9 01 LDA #$01 $2e82: 85 35 STA $BUCKET_FILLED $2e84: 60 RTS .ZXKEYS: c9 e1 CMP #$e1 // "Z" $2e87: d0 05 BNE $2e8e $2e89: a9 00 LDA #$00 $2e8b: 85 70 STA $70 $2e8d: 60 RTS $2e8e: c9 c2 CMP #$c2 // "X" $2e90: d0 05 BNE $2e97 $2e92: a9 02 LDA #$02 $2e94: 85 70 STA $70 $2e96: 60 RTS $2e97: c9 c8 CMP #$c8 // ":" $2e99: d0 05 BNE $2ea0 $2e9b: a9 00 LDA #$00 $2e9d: 85 71 STA $71 $2e9f: 60 RTS $2ea0: c9 e8 CMP #$e8 // "/" $2ea2: d0 05 BNE $2ea9 $2ea4: a9 01 LDA #$01 $2ea6: 85 71 STA $71 $2ea8: 60 RTS $2ea9: a9 ff LDA #$ff $2eab: 60 RTS // // // .EIGHTINZP-HOLDING: a4 9c LDY $HOLDING $2eae: 30 73 BMI $2f23 // RTS $2eb0: a5 9e LDA $9e $2eb2: 10 0d BPL $2ec1 $2eb4: b9 00 00 LDA $0000,Y $2eb7: c9 06 CMP #$06 // TORCH $2eb9: f0 21 BEQ MEMORYBANK(X,Y) $2ebb: a9 08 LDA #$08 $2ebd: 99 00 00 STA $0000,Y $2ec0: 60 RTS $2ec1: d9 00 00 CMP $0000,Y $2ec4: f0 0e BEQ BMOUTH $2ec6: 99 00 00 STA $0000,Y $2ec9: 20 9a 21 JSR WWM $2ecc: 20 10 09 JSR $0910 $2ecf: 10 03 BPL BMOUTH $2ed1: 4c 9d 22 JMP WRITESCSTARVING .BMOUTH: 20 dc 2e JSR MEMORYBANK(X,Y) $2ed7: 98 TYA $2ed8: aa TAX $2ed9: 4c cc 2c JMP STORE-70-71-7F // X is operator // Y is the object // // &09dd // &09da // &0d48 // &0c30 // &08a0 // // Store:- // // &0d48,obj // &0c30,obj // &0ba0,obj // &0be8,obj -- includes carry // .MEMORYBANK(X,Y): c0 02 X=2f Y=0b (Bucket of water, just drops down) CPY #$02 $2ede: 10 0f BPL $2eef $2ee0: a5 9e LDA $9e $2ee2: f0 05 BEQ $2ee9 $2ee4: b9 dd 09 LDA $09dd,Y $2ee7: d0 03 BNE $2eec $2ee9: b9 da 09 LDA $09da,Y $2eec: 99 48 0d STA $0d48,Y $2eef: bd 30 0c LDA $RIKER,X $2ef2: 18 CLC $2ef3: 69 01 ADC #$01 $2ef5: 99 30 0c STA $RIKER,Y $2ef8: b9 00 00 LDA $0000,Y // What state is the object in? $2efb: d0 14 BNE $2f11 // Branch for all values except zero. // Object property is zero $2efd: bd a0 0b LDA $RONALD,X $2f00: 38 SEC $2f01: f9 a0 08 SBC $08a0,Y $2f04: 99 a0 0b STA $RONALD,Y $2f07: bd e8 0b LDA $RICHARD,X $2f0a: e9 00 SBC #$00 $2f0c: 99 e8 0b STA $RICHARDARD,Y $2f0f: 10 12 BPL $2f23 // RTS $2f11: bd a0 0b LDA $RONALD,X $2f14: 18 CLC $2f15: 79 b0 08 ADC $08b0,Y $2f18: 99 a0 0b STA $RONALD,Y $2f1b: bd e8 0b LDA $RICHARD,X $2f1e: 69 00 ADC #$00 $2f20: 99 e8 0b STA $RICHARD,Y $2f23: 60 RTS /*------------------------------------ * Called with Keypress in Accumulator * BIGSCREENrk out which function key was pressed... * and stores in &99 * X is returned as the index of the keypressed * 28/02/2006 *------------------------------------*/ .FKEYS: a2 03 LDX #$03 .LOOP: dd cf 09 CMP $09cf,X // { f3, f2, f1, a0 } $2f29: f0 05 BEQ CONT // Keys F3, F2, F1, F0 $2f2b: ca DEX $2f2c: 30 05 BMI END // When X is #&FF $2f2e: 10 f6 BPL LOOP .CONT: 8a TXA $2f31: 85 99 STA $99 // If match, store index in &99 .END: 60 RTS .PRSKEYS: c9 b7 CMP #$b7 // "P" Pick up $2f36: d0 4d BNE $2f85 $2f38: a0 0b LDY #$0b // "Bucket" for each "object" // // // Iterate through all objects... $2f3a: a2 2f LDX #$2f $2f3c: b9 00 00 LDA $0000,Y $2f3f: c9 04 CMP #$04 // property #&4 on object BUCKET $2f41: d0 19 BNE $2f5c // loop round again $2f43: 20 af 07 JSR func(X,Y)_&70_&71_&76_&77 // // in: X,Y // out: &70,&71,&76,&77 // func(X,Y)_&70_&71_&76_&77: a9 ff LDA #$ff $07b1: 85 70 STA $70 $07b3: 85 71 STA $71 $07b5: b9 a0 0b LDA $RONALD,Y // Y=#&0b $07b8: 38 SEC $07b9: fd a0 0b SBC $RONALD,X // X=#&2f $07bc: 85 77 STA $77 $07be: b9 e8 0b LDA $RICHARD,Y $07c1: fd e8 0b SBC $RICHARD,X $07c4: f0 11 BEQ $07d7 $07c6: c9 ff CMP #$ff $07c8: d0 31 BNE $07fb // RTS - #&FF -> &77 $07ca: a9 00 LDA #$00 $07cc: 85 70 STA $70 $07ce: 38 SEC $07cf: e5 77 SBC $77 $07d1: 85 77 STA $77 $07d3: f0 26 BEQ $07fb // RTS - #&FF -> &77 $07d5: d0 08 BNE $07df $07d7: a5 77 LDA $77 $07d9: f0 04 BEQ $07df $07db: a9 02 LDA #$02 $07dd: 85 70 STA $70 $07df: bd 30 0c LDA $RIKER,X $07e2: 38 SEC $07e3: f9 30 0c SBC $RIKER,Y $07e6: 85 76 STA $76 $07e8: f0 10 BEQ $07fa // RTS $07ea: b0 0a BCS $07f6 // RTS - #&01 -> &71 $07ec: a9 00 LDA #$00 $07ee: 85 71 STA $71 $07f0: 38 SEC $07f1: e5 76 SBC $76 $07f3: 85 76 STA $76 $07f5: 60 RTS /*----------------------------------------*/ $07f6: a9 01 LDA #$01 $07f8: 85 71 STA $71 $07fa: 60 RTS $07fb: a9 ff LDA #$ff $07fd: 85 77 STA $77 $07ff: 60 RTS $2f46: a5 71 LDA $71 $2f48: c9 01 CMP #$01 $2f4a: f0 10 BEQ $2f5c // loop round $2f4c: a5 76 LDA $76 // Used in &0769 $2f4e: c9 02 CMP #$02 $2f50: 10 0a BPL $2f5c // loop round $2f52: a6 77 LDX $77 $2f54: a5 70 LDA $70 $2f56: f0 08 BEQ $2f60 "PATH 2" $2f58: e0 05 CPX #$05 $2f5a: 90 0c BCC $2f68 // Do-it! "PATH 1" // Not bucket with property 4 $2f5c: 88 DEY $2f5d: 10 db BPL $2f3a $2f5f: 60 RTS $2f60: 20 a9 21 JSR $(Y)_&73_&74_&78_[$0c78] $2f63: ca DEX $2f64: e4 74 CPX $74 $2f66: b0 f4 BCS $2f5c // loop round // // // After all this we can pick it up! $2f68: a5 9c LDA $HOLDING $2f6a: 10 03 BPL STOREOBJ // Bit 7 zero shift out currently held object $2f6c: 84 9c STY $HOLDING $2f6e: 60 RTS // We've picked something up but we are already holding something else // .STOREOBJ: a2 03 LDX #$03 $2f71: bd c0 09 LDA $CARRYING,X $2f74: 10 0b BPL $2f81 // DEX and loop back to 2f71 $2f76: 98 TYA $2f77: 9d c0 09 STA $CARRYING,X $2f7a: a9 08 LDA #$08 $2f7c: 99 00 00 STA $0000,Y $2f7f: 10 03 BPL $2f84 $2f81: ca DEX $2f82: 10 ed BPL $2f71 $2f84: 60 RTS $2f85: c9 b3 CMP #$b3 // more keys "R" retrieve from store $2f87: d0 19 BNE $2fa2 .WSPRITEY: a6 99 LDX $99 $2f8b: a5 9c LDA $HOLDING $2f8d: 10 12 BPL $2fa1 $2f8f: bc c0 09 LDY $CARRYING,X $2f92: 30 0d BMI $2fa1 $2f94: 20 e0 16 JSR WBATH $2f97: b0 08 BCS $2fa1 $2f99: a6 99 LDX $99 $2f9b: 86 9b STX $9b $2f9d: 84 9c STY $HOLDING $2f9f: a9 ff LDA #$ff $2fa1: 60 RTS $2fa2: c9 d1 CMP #$d1 // "S" Store? $2fa4: d0 0e BNE $2fb4 $2fa6: a4 9c LDY $HOLDING $2fa8: 30 0a BMI $2fb4 $2faa: 20 6f 2f JSR STOREOBJ $2fad: 8a TXA $2fae: 30 04 BMI $2fb4 $2fb0: a9 ff LDA #$ff $2fb2: 85 9c STA $HOLDING $2fb4: a9 00 LDA #$00 $2fb6: 60 RTS /*---------------------------------------- * * Funny kind of indexed addressing? * *----------------------------------------*/ .SWITCH_ON_OBJ_PROP: a0 0b LDY #$0b // bucket $2fb9: 84 96 STY $96 $2fbb: b9 48 0d LDA $0d48,Y $2fbe: 85 7f STA $7f $2fc0: b9 00 00 LDA $0000,Y // object status $2fc3: 8d c7 2f STA $2fc7 $2fc6: 10 ff BPL $2fc7 + Property $2fc8: 10 1b BPL $2fe5 (0) Next object $2fca: 10 19 BPL $2fe5 (2) Next object $2fcc: 10 0a BPL $2fd8 (4) $2fce: 10 15 BPL $2fe5 (6) Next object $2fd0: 10 1a BPL $2fec (8) $2fd2: 10 11 BPL $2fe5 (a) Next object $2fd4: 10 de BPL $2fb4 (c) RTS -- LDA #&00 $2fd6: 10 0d BPL $2fe5 (e) Next object $2fd8: 20 9a 21 JSR TRANSFER_0C30(Y) $2fdb: 98 TYA $2fdc: aa TAX $2fdd: 20 10 09 JSR $0910 // What does this do $2fe0: 10 03 BPL $2fe5 $2fe2: 20 c0 21 JSR SPRITEYRROWKEYS_MAIN $2fe5: c6 96 DEC $96 $2fe7: a4 96 LDY $96 $2fe9: 10 d0 BPL $2fbb // Branch through all objects $2feb: 60 RTS $2fec: a9 06 LDA #$06 $2fee: 99 00 00 STA $0000,Y // property 6? $2ff1: 20 9a 21 JSR TRANSFER_0C30(Y) $2ff4: 20 9d 22 JSR PLOTSPRITE $2ff7: 4c e5 2f JMP $2fe5 .PRINTNUMBER: d8 CLD $2ffb: 09 30 ORA #$30 $2ffd: 4c ee ff JMP $ffee // Print a number // THE SCORE