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