BT II - Healing Temples

Any developer realated stuff
Post Reply
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

BT II - Healing Temples

Post by Darendor »

BT2 Character Disk
"FILE0938400" PRG HEALING TEMPLE FILE
#$EA | 234 | EOR all bytes against 11101010
6 blocks; 1499 bytes (70EA to 76C5 Inclusive; 9A00 to ??? memory)

UPDATE: Weber G has explained pretty much every single line of the code in a post further down.

The various healing temples are contained in this file.

The instruction at 9CA7 baffles me; it points to a text that is at...executable code?? Huh? :?

Also, there's a fair number of subroutines and whatnot here that I have no clue what they do. I mean, educated guesses would be that they reset a character's status flags to "normal" and remove gold and whatnot...

Code: Select all

.C:9a00  A2 17       LDX #$17
.C:9a02  20 1B 08    JSR $081B		Display picture #$17
.C:9a05  20 A1 9C    JSR $9CA1
.C:9a08  20 E1 08    JSR $08E1
.C:9a0b  A0 9C       LDY #$9C
.C:9a0d  A2 D0       LDX #$D0
.C:9a0f  20 06 08    JSR $0806		"Welcome, oh weary ones..."
.C:9a12  20 78 08    JSR $0878		Get keypress
.C:9a15  20 87 08    JSR $0887		Evaluate keypress
.C:9a18  C9 C5       CMP #$C5
.C:9a1a  D0 14       BNE $9A30		Exit? No?  Go $9a30
.C:9a1c  A6 24       LDX $24		Begin exit routine
.C:9a1e  BD 9D 9C    LDA $9C9D,X
.C:9a21  85 24       STA $24		Spin party 180 degrees
.C:9a23  20 85 9C    JSR $9C85
.C:9a26  A9 00       LDA #$00
.C:9a28  85 2F       STA $2F
.C:9a2a  20 E1 08    JSR $08E1
.C:9a2d  4C 00 90    JMP $9000		Back to main engine.
.C:9a30  C9 C8       CMP #$C8
.C:9a32  F0 11       BEQ $9A45		Healing? Yes?  Go $9a45
.C:9a34  C9 B0       CMP #$B0
.C:9a36  90 DA       BCC $9A12		Number less than 1?  Go $9a12
.C:9a38  C9 B7       CMP #$B7
.C:9a3a  B0 D6       BCS $9A12		Number more than 6?  Go $9a12
.C:9a3c  38          SEC
.C:9a3d  E9 B0       SBC #$B0
.C:9a3f  20 51 08    JSR $0851
.C:9a42  4C 00 9A    JMP $9A00		Back to beginning.
.C:9a45  A0 9D       LDY #$9D
.C:9a47  A2 3A       LDX #$3A
.C:9a49  20 06 08    JSR $0806		"Who needs healing?..."
.C:9a4c  20 78 08    JSR $0878		Get keypress
.C:9a4f  C9 B0       CMP #$B0
.C:9a51  90 BF       BCC $9A12		Number less than 0?  Go $9a12
.C:9a53  C9 B7       CMP #$B7
.C:9a55  B0 BB       BCS $9A12		Number more than 6?  Gi $9a12
.C:9a57  38          SEC
.C:9a58  E9 B0       SBC #$B0
.C:9a5a  0A          ASL A
.C:9a5b  AA          TAX
.C:9a5c  BD D0 9F    LDA $9FD0,X
.C:9a5f  85 9B       STA $9B
.C:9a61  BD D1 9F    LDA $9FD1,X
.C:9a64  85 9C       STA $9C
.C:9a66  A0 00       LDY #$00
.C:9a68  B1 9B       LDA ($9B),Y
.C:9a6a  F0 A6       BEQ $9A12
.C:9a6c  20 E1 08    JSR $08E1
.C:9a6f  A6 9B       LDX $9B
.C:9a71  A4 9C       LDY $9C
.C:9a73  20 06 08    JSR $0806		?????????????????
.C:9a76  A0 3E       LDY #$3E
.C:9a78  B1 9B       LDA ($9B),Y
.C:9a7a  D0 1C       BNE $9A98
.C:9a7c  A0 10       LDY #$10
.C:9a7e  A2 00       LDX #$00
.C:9a80  B1 9B       LDA ($9B),Y
.C:9a82  DD 64 9E    CMP $9E64,X
.C:9a85  D0 0E       BNE $9A95
.C:9a87  C8          INY
.C:9a88  E8          INX
.C:9a89  E0 04       CPX #$04
.C:9a8b  90 F3       BCC $9A80
.C:9a8d  A0 3E       LDY #$3E
.C:9a8f  A9 02       LDA #$02
.C:9a91  91 9B       STA ($9B),Y
.C:9a93  D0 03       BNE $9A98
.C:9a95  4C F1 9B    JMP $9BF1
.C:9a98  48          PHA
.C:9a99  A0 9D       LDY #$9D
.C:9a9b  A2 75       LDX #$75
.C:9a9d  20 06 08    JSR $0806		" is in bad shape, indeed..."
.C:9aa0  68          PLA
.C:9aa1  0A          ASL A
.C:9aa2  AA          TAX
.C:9aa3  BD 9D 9D    LDA $9D9D,X
.C:9aa6  85 6E       STA $6E
.C:9aa8  BD 9E 9D    LDA $9D9E,X
.C:9aab  85 6F       STA $6F
.C:9aad  A9 00       LDA #$00
.C:9aaf  85 63       STA $63
.C:9ab1  85 64       STA $64
.C:9ab3  A9 0D       LDA #$0D
.C:9ab5  85 6B       STA $6B
.C:9ab7  A0 38       LDY #$38
.C:9ab9  B1 9B       LDA ($9B),Y
.C:9abb  C9 0B       CMP #$0B
.C:9abd  90 07       BCC $9AC6
.C:9abf  A0 66       LDY #$66
.C:9ac1  B1 9B       LDA ($9B),Y
.C:9ac3  4C CF 9A    JMP $9ACF
.C:9ac6  A0 22       LDY #$22
.C:9ac8  B1 9B       LDA ($9B),Y
.C:9aca  D0 09       BNE $9AD5
.C:9acc  C8          INY
.C:9acd  B1 9B       LDA ($9B),Y
.C:9acf  C9 0E       CMP #$0E
.C:9ad1  B0 02       BCS $9AD5
.C:9ad3  85 6B       STA $6B
.C:9ad5  A5 6E       LDA $6E
.C:9ad7  18          CLC
.C:9ad8  65 63       ADC $63
.C:9ada  85 63       STA $63
.C:9adc  A5 6F       LDA $6F
.C:9ade  65 64       ADC $64
.C:9ae0  85 64       STA $64
.C:9ae2  C6 6B       DEC $6B
.C:9ae4  D0 EF       BNE $9AD5
.C:9ae6  20 30 08    JSR $0830
.C:9ae9  A0 9D       LDY #$9D
.C:9aeb  A2 AF       LDX #$AF
.C:9aed  20 06 08    JSR $0806		" in gold.  Who will pay?..."
.C:9af0  20 8D 08    JSR $088D
.C:9af3  90 03       BCC $9AF8
.C:9af5  4C 08 9A    JMP $9A08
.C:9af8  84 6E       STY $6E
.C:9afa  85 6F       STA $6F
.C:9afc  A0 00       LDY #$00
.C:9afe  B1 6E       LDA ($6E),Y
.C:9b00  F0 EE       BEQ $9AF0
.C:9b02  A5 9B       LDA $9B
.C:9b04  48          PHA
.C:9b05  A5 9C       LDA $9C
.C:9b07  48          PHA
.C:9b08  A5 6E       LDA $6E
.C:9b0a  85 9B       STA $9B
.C:9b0c  A5 6F       LDA $6F
.C:9b0e  85 9C       STA $9C
.C:9b10  A0 24       LDY #$24
.C:9b12  84 8F       STY $8F
.C:9b14  20 21 08    JSR $0821
.C:9b17  90 1B       BCC $9B34
.C:9b19  68          PLA
.C:9b1a  85 9C       STA $9C
.C:9b1c  68          PLA
.C:9b1d  85 9B       STA $9B
.C:9b1f  20 0C 08    JSR $080C
.C:9b22  20 0C 08    JSR $080C
.C:9b25  A0 9E       LDY #$9E
.C:9b27  A2 68       LDX #$68
.C:9b29  20 06 08    JSR $0806		"Not enough gold..."
.C:9b2c  A9 09       LDA #$09
.C:9b2e  20 1A 09    JSR $091A
.C:9b31  4C 6C 9A    JMP $9A6C
.C:9b34  20 24 08    JSR $0824
.C:9b37  68          PLA
.C:9b38  85 9C       STA $9C
.C:9b3a  68          PLA
.C:9b3b  85 9B       STA $9B
.C:9b3d  A0 3E       LDY #$3E
.C:9b3f  B1 9B       LDA ($9B),Y
.C:9b41  F0 61       BEQ $9BA4
.C:9b43  48          PHA
.C:9b44  A9 00       LDA #$00
.C:9b46  91 9B       STA ($9B),Y
.C:9b48  A0 4E       LDY #$4E
.C:9b4a  91 9B       STA ($9B),Y
.C:9b4c  68          PLA
.C:9b4d  C9 02       CMP #$02
.C:9b4f  F0 0D       BEQ $9B5E
.C:9b51  C9 06       CMP #$06
.C:9b53  D0 22       BNE $9B77
.C:9b55  A0 32       LDY #$32
.C:9b57  A9 00       LDA #$00
.C:9b59  91 9B       STA ($9B),Y
.C:9b5b  C8          INY
.C:9b5c  D0 24       BNE $9B82
.C:9b5e  A5 9B       LDA $9B
.C:9b60  18          CLC
.C:9b61  69 50       ADC #$50
.C:9b63  85 50       STA $50
.C:9b65  A5 9C       LDA $9C
.C:9b67  69 00       ADC #$00
.C:9b69  85 51       STA $51
.C:9b6b  A0 10       LDY #$10
.C:9b6d  A2 04       LDX #$04
.C:9b6f  B1 50       LDA ($50),Y
.C:9b71  91 9B       STA ($9B),Y
.C:9b73  C8          INY
.C:9b74  CA          DEX
.C:9b74  CA          DEX
.C:9b75  D0 F8       BNE $9B6F
.C:9b77  A0 32       LDY #$32
.C:9b79  B1 9B       LDA ($9B),Y
.C:9b7b  D0 09       BNE $9B86
.C:9b7d  C8          INY
.C:9b7e  B1 9B       LDA ($9B),Y
.C:9b80  D0 04       BNE $9B86
.C:9b82  A9 01       LDA #$01
.C:9b84  91 9B       STA ($9B),Y
.C:9b86  A0 9D       LDY #$9D
.C:9b88  A2 CE       LDX #$CE
.C:9b8a  20 06 08    JSR $0806		"The priests lay hands on..."
.C:9b8d  A9 06       LDA #$06
.C:9b8f  20 1A 09    JSR $091A
.C:9b92  A0 9D       LDY #$9D
.C:9b94  A2 F2       LDX #$F2
.C:9b96  20 06 08    JSR $0806		"...and he is healed!"
.C:9b99  A9 06       LDA #$06
.C:9b9b  20 1A 09    JSR $091A
.C:9b9e  20 48 08    JSR $0848
.C:9ba1  4C 08 9A    JMP $9A08
.C:9ba4  A5 C9       LDA $C9
.C:9ba6  F0 35       BEQ $9BDD
.C:9ba8  C6 C9       DEC $C9
.C:9baa  A0 20       LDY #$20
.C:9bac  B1 9B       LDA ($9B),Y
.C:9bae  85 64       STA $64
.C:9bb0  A0 22       LDY #$22
.C:9bb2  91 9B       STA ($9B),Y
.C:9bb4  A0 21       LDY #$21
.C:9bb6  B1 9B       LDA ($9B),Y
.C:9bb8  85 63       STA $63
.C:9bba  A0 23       LDY #$23
.C:9bbc  91 9B       STA ($9B),Y
.C:9bbe  C6 63       DEC $63
.C:9bc0  A5 63       LDA $63
.C:9bc2  C9 FF       CMP #$FF
.C:9bc4  D0 02       BNE $9BC8
.C:9bc6  C6 64       DEC $64
.C:9bc8  20 6C 08    JSR $086C
.C:9bcb  A0 14       LDY #$14
.C:9bcd  A2 00       LDX #$00
.C:9bcf  BD 80 03    LDA $0380,X
.C:9bd2  91 9B       STA ($9B),Y
.C:9bd4  C8          INY
.C:9bd5  E8          INX
.C:9bd6  E0 0C       CPX #$0C
.C:9bd8  90 F5       BCC $9BCF
.C:9bda  4C 86 9B    JMP $9B86
.C:9bdd  A0 30       LDY #$30
.C:9bdf  B1 9B       LDA ($9B),Y
.C:9be1  48          PHA
.C:9be2  C8          INY
.C:9be3  B1 9B       LDA ($9B),Y
.C:9be5  AA          TAX
.C:9be6  C8          INY
.C:9be7  68          PLA
.C:9be8  91 9B       STA ($9B),Y
.C:9bea  C8          INY
.C:9beb  8A          TXA
.C:9bec  91 9B       STA ($9B),Y
.C:9bee  4C 86 9B    JMP $9B86
.C:9bf1  A9 00       LDA #$00
.C:9bf3  85 C9       STA $C9
.C:9bf5  A0 31       LDY #$31
.C:9bf7  B1 9B       LDA ($9B),Y
.C:9bf9  C8          INY
.C:9bfa  C8          INY
.C:9bfb  38          SEC
.C:9bfc  F1 9B       SBC ($9B),Y
.C:9bfe  85 6E       STA $6E
.C:9c00  A0 30       LDY #$30
.C:9c02  B1 9B       LDA ($9B),Y
.C:9c04  C8          INY
.C:9c05  C8          INY
.C:9c06  F1 9B       SBC ($9B),Y
.C:9c08  85 6F       STA $6F
.C:9c0a  A5 6E       LDA $6E
.C:9c0c  D0 44       BNE $9C52
.C:9c0e  A5 6F       LDA $6F
.C:9c10  D0 40       BNE $9C52
.C:9c12  A0 38       LDY #$38
.C:9c14  B1 9B       LDA ($9B),Y
.C:9c16  C9 0B       CMP #$0B
.C:9c18  B0 29       BCS $9C43
.C:9c1a  A0 20       LDY #$20
.C:9c1c  B1 9B       LDA ($9B),Y
.C:9c1e  A0 22       LDY #$22
.C:9c20  D1 9B       CMP ($9B),Y
.C:9c22  F0 05       BEQ $9C29
.C:9c24  B0 0F       BCS $9C35
.C:9c26  4C 43 9C    JMP $9C43
.C:9c29  A0 21       LDY #$21
.C:9c2b  B1 9B       LDA ($9B),Y
.C:9c2d  A0 23       LDY #$23
.C:9c2f  D1 9B       CMP ($9B),Y
.C:9c31  F0 10       BEQ $9C43
.C:9c33  90 0E       BCC $9C43
.C:9c35  E6 C9       INC $C9
.C:9c37  A0 9E       LDY #$9E
.C:9c39  A2 35       LDX #$35
.C:9c3b  20 06 08    JSR $0806		" has been drained of life..."
.C:9c3e  A9 08       LDA #$08
.C:9c40  4C A1 9A    JMP $9AA1
.C:9c43  A0 9D       LDY #$9D
.C:9c45  A2 56       LDX #$56
.C:9c47  20 06 08    JSR $0806		" does not require any..."
.C:9c4a  A9 09       LDA #$09
.C:9c4c  20 1A 09    JSR $091A
.C:9c4f  4C 08 9A    JMP $9A08
.C:9c52  A0 9E       LDY #$9E
.C:9c54  A2 07       LDX #$07
.C:9c56  20 06 08    JSR $0806		" has wounds which need..."
.C:9c59  A9 00       LDA #$00
.C:9c5b  85 63       STA $63
.C:9c5d  85 64       STA $64
.C:9c5f  A9 0A       LDA #$0A
.C:9c61  18          CLC
.C:9c62  65 63       ADC $63
.C:9c64  85 63       STA $63
.C:9c66  90 02       BCC $9C6A
.C:9c68  E6 64       INC $64
.C:9c6a  A5 6E       LDA $6E
.C:9c6c  38          SEC
.C:9c6d  E9 01       SBC #$01
.C:9c6f  85 6E       STA $6E
.C:9c71  90 0A       BCC $9C7D
.C:9c73  C9 00       CMP #$00
.C:9c75  D0 E8       BNE $9C5F
.C:9c77  A5 6F       LDA $6F
.C:9c79  F0 07       BEQ $9C82
.C:9c7b  D0 E2       BNE $9C5F
.C:9c7d  C6 6F       DEC $6F
.C:9c7f  4C 5F 9C    JMP $9C5F
.C:9c82  4C E6 9A    JMP $9AE6
.C:9c85  A5 24       LDA $24
.C:9c87  F0 0B       BEQ $9C94
.C:9c89  C9 01       CMP #$01
.C:9c8b  F0 0D       BEQ $9C9A
.C:9c8d  C9 02       CMP #$02
.C:9c8f  F0 06       BEQ $9C97
.C:9c91  C6 29       DEC $29
.C:9c93  60          RTS
.C:9c94  E6 28       INC $28
.C:9c96  60          RTS
.C:9c97  C6 28       DEC $28
.C:9c99  60          RTS
.C:9c9a  E6 29       INC $29
.C:9c9c  60          RTS
.C:9c9d  02          JAM
.C:9c9e  03 00       SLO ($00,X)
.C:9ca0  01 
.C:9ca1  A2 00       LDX #$00
.C:9ca3  A0 00       LDY #$00
.C:9ca5  A5 28       LDA $28
.C:9ca7  DD 7A 9E    CMP $9E7A,X
.C:9caa  D0 0E       BNE $9CBA
.C:9cac  A5 29       LDA $29
.C:9cae  DD 7B 9E    CMP $9E7B,X
.C:9cb1  D0 07       BNE $9CBA
.C:9cb3  A5 A8       LDA $A8
.C:9cb5  D9 A2 9E    CMP $9EA2,Y
.C:9cb8  F0 09       BEQ $9CC3
.C:9cba  E8          INX
.C:9cbb  E8          INX
.C:9cbc  C8          INY
.C:9cbd  C0 14       CPY #$14
.C:9cbf  90 E4       BCC $9CA5
.C:9cc1  A2 00       LDX #$00
.C:9cc3  BD B6 9E    LDA $9EB6,X
.C:9cc6  85 58       STA $58
.C:9cc8  BD B7 9E    LDA $9EB7,X
.C:9ccb  85 59       STA $59
.C:9ccd  4C 0F 08    JMP $080F		Display caption depending on party's N & E location
.C:9cd0  D7 E5       DCP $E5,X		[W][e]
.C:9cd2  EC E3 EF    CPX $EFE3		[l][c][o]
.C:9cd5  ED E5 AC    SBC $ACE5		[m][e][,
.C:9cd8  A0 EF       LDY #$EF		[_][o]
.C:9cda  E8          INX		[h]
.C:9cdb  A0 F7       LDY #$F7		[_][w]
.C:9cdd  E5 E1       SBC $E1		[e][a]
.C:9cdf  F2          JAM		[r]
.C:9ce0  F9 A0 EF    SBC $EFA0,Y	[y][_][o]
.C:9ce3  EE E5 F3    INC $F3E5		[n][e][s]
.C:9ce6  AC A0 F4    LDY $F4A0		[,][_][t]
.C:9ce9  EF A0 EF    ISB $EFA0		[o][_][o]
.C:9cec  F5 F2       SBC $F2,X		[u][r]
.C:9cee  A0 E8       LDY #$E8		[_][h]
.C:9cf0  F5 ED       SBC $ED,X		[u][m]
.C:9cf2  E2 EC       NOOP #$EC		[b][l]
.C:9cf4  E5 A0       SBC $A0		[e][_]
.C:9cf6  F4 E5       NOOP $E5,X		[t][e]
.C:9cf8  ED F0 EC    SBC $ECF0		[m][p][l]
.C:9cfb  E5 AE       SBC $AE		[e][.]
.C:9cfd  A0 C8       LDY #$C8		[_][H]
.C:9cff  EF F7 A0    ISB $A0F7		[o][w][_]
.C:9d02  ED E1 F9    SBC $F9E1		[m][a][y]
.C:9d05  A0 F7       LDY #$F7		[_][w]
.C:9d07  E5 A0       SBC $A0		[e][_]
.C:9d09  E8          INX		[h]
.C:9d0a  E5 EC       SBC $EC		[e][l]
.C:9d0c  F0 BF       BEQ $9CCD		[p][?]
.C:9d0e  00          BRK		[CR]
.C:9d0f  00          BRK		[CR]
.C:9d10  A8          TAY		[(]
.C:9d11  C8          INY		[H]
.C:9d12  A9 E5       LDA #$E5		[)][e]
.C:9d14  E1 EC       SBC ($EC,X)	[a][l]
.C:9d16  A0 ED       LDY #$ED		[_][m]
.C:9d18  E5 ED       SBC $ED		[e][m]
.C:9d1a  E2 E5       NOOP #$E5		[b][e]
.C:9d1c  F2          JAM		[r]
.C:9d1d  00          BRK		[CR]
.C:9d1e  A8          TAY		[(]
.C:9d1f  B0 AD       BCS $9CCE		[0][-]
.C:9d21  B6 A9       LDX $A9,Y		[6][)]
.C:9d23  A0 D6       LDY #$D6		[_][V]
.C:9d25  E9 E5       SBC #$E5		[i][e]
.C:9d27  F7 A0       ISB $A0,X		[w][_]
.C:9d29  EF F2 00    ISB $00F2		[o][r][CR]
.C:9d2c  A8          TAY		[(]
.C:9d2d  C5 A9       CMP $A9		[E][)]
.C:9d2f  F8          SED		[x]
.C:9d30  E9 F4       SBC #$F4		[i][t]
.C:9d32  A0 F4       LDY #$F4		[_][t]
.C:9d34  E5 ED       SBC $ED		[e][m]
.C:9d36  F0 EC       BEQ $9D24		[p][l]
.C:9d38  E5 FF       SBC $FF		[e][Input]
.C:9d3a  00          BRK		[CR]
.C:9d3b  00          BRK		[CR]
.C:9d3c  D7 E8       DCP $E8,X		[W][h]
.C:9d3e  EF A0 EE    ISB $EEA0		[o][_][n]
.C:9d41  E5 E5       SBC $E5		[e][e]
.C:9d43  E4 F3       CPX $F3		[d][s]
.C:9d45  A0 E8       LDY #$E8		[_][h]
.C:9d47  E5 E1       SBC $E1		[e][a]
.C:9d49  EC E9 EE    CPX $EEE9		[l][i][n]
.C:9d4c  E7 BF       ISB $BF		[g][?]
.C:9d4e  A0 A3       LDY #$A3		[_][#]
.C:9d50  A8          TAY		[(]
.C:9d51  B0 AD       BCS $9D00		[0][-]
.C:9d53  B6 A9       LDX $A9,Y		[6][)]
.C:9d55  DC A0 E4    NOOP $E4A0,X	[EOT][_][d]
.C:9d58  EF E5 F3    ISB $F3E5		[o][e][s]
.C:9d5b  A0 EE       LDY #$EE		[_][n]
.C:9d5d  EF F4 A0    ISB $A0F4		[o][t][_]
.C:9d60  F2          JAM		[r]
.C:9d61  E5 F1       SBC $F1		[e][q]
.C:9d63  F5 E9       SBC $E9,X		[u][i]
.C:9d65  F2          JAM		[r]
.C:9d66  E5 A0       SBC $A0		[e][_]
.C:9d68  E1 EE       SBC ($EE,X)	[a][n]
.C:9d6a  F9 A0 E8    SBC $E8A0,Y	[y][_][h]
.C:9d6d  E5 E1       SBC $E1		[e][a]
.C:9d6f  EC E9 EE    CPX $EEE9		[l][i][n]
.C:9d72  E7 AE       ISB $AE		[g][.]
.C:9d74  FF A0 E9    ISB $E9A0,X	[Input][_][i]
.C:9d77  F3 A0       ISB ($A0),Y	[s][_]
.C:9d79  E9 EE       SBC #$EE		[i][n]
.C:9d7b  A0 E2       LDY #$E2		[_][b]
.C:9d7d  E1 E4       SBC ($E4,X)	[a][d]
.C:9d7f  A0 F3       LDY #$F3		[_][s]
.C:9d81  E8          INX		[h]
.C:9d82  E1 F0       SBC ($F0,X)	[a][p]
.C:9d84  E5 AC       SBC $AC		[e][,]
.C:9d86  A0 E9       LDY #$E9		[_][i]
.C:9d88  EE E4 E5    INC $E5E4		[n][d][e]
.C:9d8b  E5 E4       SBC $E4		[e][d]
.C:9d8d  AE A0 C9    LDX $C9A0		[.][_][I]
.C:9d90  F4 A0       NOOP $A0,X		[t][_]
.C:9d92  F7 E9       ISB $E9,X		[w][i]
.C:9d94  EC EC A0    CPX $A0EC		[l][l][_]
.C:9d97  E3 EF       ISB ($EF,X)	[c][o]
.C:9d99  F3 F4       ISB ($F4),Y	[s][t]
.C:9d9b  A0 FF       LDY #$FF		[_][Input]
.C:9d9d  00          BRK
.C:9d9e  00          BRK
.C:9d9f  90 01       BCC $9DA2
.C:9da1  2C 01 84    BIT $8401
.C:9da4  03 60       SLO ($60,X)
.C:9da6  04 DC       NOOP $DC
.C:9da8  00          BRK
.C:9da9  F4 01       NOOP $01,X
.C:9dab  58          CLI
.C:9dac  02          JAM
.C:9dad  84 03       STY $03
.C:9daf  A0 E9       LDY #$E9		[_][i]
.C:9db1  EE A0 E7    INC $E7A0		[n][_][g]
.C:9db4  EF EC E4    ISB $E4EC		[o][l][d]
.C:9db7  AE A0 D7    LDX $D7A0		[.][_][W]
.C:9dba  E8          INX		[h]
.C:9dbb  EF A0 F7    ISB $F7A0		[o][_][w]
.C:9dbe  E9 EC       SBC #$EC		[i][l]
.C:9dc0  EC A0 F0    CPX $F0A0		[l][_][p]
.C:9dc3  E1 F9       SBC ($F9,X)	[a][y]
.C:9dc5  BF A0 A3    LAX $A3A0,Y	[?][_][#]
.C:9dc8  A8          TAY		[(]
.C:9dc9  B0 AD       BCS $9D78		[0][-]
.C:9dcb  B6 A9       LDX $A9,Y		[6][)]
.C:9dcd  FF 00 00    ISB $0000,X	[Input][CR][CR]
.C:9dd0  D4 E8       NOOP $E8,X		[T][h]
.C:9dd2  E5 A0       SBC $A0		[e][_]
.C:9dd4  F0 F2       BEQ $9DC8		[p][r]
.C:9dd6  E9 E5       SBC #$E5		[i][e]
.C:9dd8  F3 F4       ISB ($F4),Y	[s][t]
.C:9dda  F3 A0       ISB ($A0),Y	[s][_]
.C:9ddc  EC E1 F9    CPX $F9E1		[l][a][y]
.C:9ddf  A0 E8       LDY #$E8		[_][h]
.C:9de1  E1 EE       SBC ($EE,X)	[a][n]
.C:9de3  E4 F3       CPX $F3		[d][s]
.C:9de5  A0 EF       LDY #$EF		[_][o]
.C:9de7  EE A0 E8    INC $E8A0		[n][_][h]
.C:9dea  E9 ED       SBC #$ED		[i][m]
.C:9dec  AE AE AE    LDX $AEAE		[.][.][.]
.C:9def  00          BRK		[CR]
.C:9df0  00          BRK		[CR]
.C:9df1  FF AE AE    ISB $AEAE,X	[Input][.][.]
.C:9df4  AE E1 EE    LDX $EEE1		[.][a][n]
.C:9df7  E4 A0       CPX $A0		[d][_]
.C:9df9  E8          INX		[h]
.C:9dfa  E5 A0       SBC $A0		[e][_]
.C:9dfc  E9 F3       SBC #$F3		[i][s]
.C:9dfe  A0 E8       LDY #$E8		[_][h]
.C:9e00  E5 E1       SBC $E1		[e][a]
.C:9e02  EC E5 E4    CPX $E4E5		[l][e][d]
.C:9e05  A1 FF       LDA ($FF,X)	[!][Input]
.C:9e07  A0 E8       LDY #$E8		[_][h]
.C:9e09  E1 F3       SBC ($F3,X)	[a][s]
.C:9e0b  A0 F7       LDY #$F7		[_][w]
.C:9e0d  EF F5 EE    ISB $EEF5		[o][u][n]
.C:9e10  E4 F3       CPX $F3		[d][s]
.C:9e12  A0 F7       LDY #$F7		[_][w]
.C:9e14  E8          INX		[h]
.C:9e15  E9 E3       SBC #$E3		[i][c]
.C:9e17  E8          INX		[h]
.C:9e18  A0 EE       LDY #$EE		[_][n]
.C:9e1a  E5 E5       SBC $E5		[e][e]
.C:9e1c  E4 A0       CPX $A0		[d][_]
.C:9e1e  F4 E5       NOOP $E5,X		[t][e]
.C:9e20  EE E4 E9    INC $E9E4		[n][d][i]
.C:9e23  EE E7 AE    INC $AEE7		[n][g][.]
.C:9e26  A0 C9       LDY #$C9		[_][I]
.C:9e28  F4 A0       NOOP $A0,X		[t][_]
.C:9e2a  F7 E9       ISB $E9,X		[w][i]
.C:9e2c  EC EC A0    CPX $A0EC		[l][l]
.C:9e2f  E3 EF       ISB ($EF,X)	[c][o]
.C:9e31  F3 F4       ISB ($F4),Y	[s][t]
.C:9e33  A0 FF       LDY #$FF		[_][Input]
.C:9e35  A0 E8       LDY #$E8		[_][h]
.C:9e37  E1 F3       SBC ($F3,X)	[a][s]
.C:9e39  A0 E2       LDY #$E2		[_][b]
.C:9e3b  E5 E5       SBC $E5		[e][e]
.C:9e3d  EE A0 E4    INC $E4A0		[n][_][d]
.C:9e40  F2          JAM		[r]
.C:9e41  E1 E9       SBC ($E9,X)	[a][i]
.C:9e43  EE E5 E4    INC $E4E5		[n][e][d]
.C:9e46  A0 EF       LDY #$EF		[_][o]
.C:9e48  E6 A0       INC $A0		[f][_]
.C:9e4a  EC E9 E6    CPX $E6E9		[l][i][f]
.C:9e4d  E5 A0       SBC $A0		[e][_]
.C:9e4f  E6 EF       INC $EF		[f][o]
.C:9e51  F2          JAM		[r]
.C:9e52  E3 E5       ISB ($E5,X)	[c][e]
.C:9e54  AE A0 C9    LDX $C9A0		[.][_][I]
.C:9e57  F4 A0       NOOP $A0,X		[t][_]
.C:9e59  F7 E9       ISB $E9,X		[w][i]
.C:9e5b  EC EC A0    CPX $A0EC		[l][l[_]
.C:9e5e  E3 EF       ISB ($EF,X)	[c][o]
.C:9e60  F3 F4       ISB ($F4),Y	[s][t]
.C:9e62  A0 FF       LDY #$FF		[_][Input]
.C:9e64  08          PHP
.C:9e65  41 08       EOR ($08,X)
.C:9e67  40          RTI
.C:9e68  CE EF F4    DEC $F4EF		[N][o][t]
.C:9e6b  A0 E5       LDY #$E5		[_][e]
.C:9e6d  EE EF F5    INC $F5EF		[n][o][u]
.C:9e70  E7 E8       ISB $E8		[g][h]
.C:9e72  A0 E7       LDY #$E7		[_][g]
.C:9e74  EF EC E4    ISB $E4EC		[o][l][d]
.C:9e77  AE A0 FF    LDX $FFA0		[.][_][Input]
.C:9e7a  FF FF 0E    ISB $0EFF,X
.C:9e7d  00          BRK
.C:9e7e  0D 0D 02    ORA $020D
.C:9e81  06 09       ASL $09
.C:9e83  02          JAM
.C:9e84  09 0C       ORA #$0C
.C:9e86  01 0C       ORA ($0C,X)
.C:9e88  0D 08 0A    ORA $0A08
.C:9e8b  08          PHP
.C:9e8c  08          PHP
.C:9e8d  02          JAM
.C:9e8e  08          PHP
.C:9e8f  0D 0D 08    ORA $080D
.C:9e92  0C 0C 08    NOOP $080C
.C:9e95  0C 06 03    NOOP $0306
.C:9e98  04 0A       NOOP $0A
.C:9e9a  02          JAM
.C:9e9b  0D 0C 03    ORA $030C
.C:9e9e  06 00       ASL $00
.C:9ea0  06 05       ASL $05
.C:9ea2  00          BRK
.C:9ea3  01 01       ORA ($01,X)
.C:9ea5  01 02       ORA ($02,X)
.C:9ea7  02          JAM
.C:9ea8  02          JAM
.C:9ea9  03 03       SLO ($03,X)
.C:9eab  03 03       SLO ($03,X)
.C:9ead  04 05       NOOP $05
.C:9eaf  05 05       ORA $05
.C:9eb1  05 05       ORA $05
.C:9eb3  06 06       ASL $06
.C:9eb5  06 DE       ASL $DE
.C:9eb7  9E E5 9E    SHX $9EE5,Y
.C:9eba  F2          JAM
.C:9ebb  9E FF 9E    SHX $9EFF,Y
.C:9ebe  0D 9F 1B    ORA $1B9F
.C:9ec1  9F 23 9F    SHA $9F23,Y
.C:9ec4  2C 9F 3A    BIT $3A9F
.C:9ec7  9F 48 9F    SHA $9F48,Y
.C:9eca  54 9F       NOOP $9F,X
.C:9ecc  62          JAM
.C:9ecd  9F 6F 9F    SHA $9F6F,Y
.C:9ed0  7B 9F 87    RRA $879F,Y
.C:9ed3  9F 93 9F    SHA $9F93,Y
.C:9ed6  9E 9F AB    SHX $AB9F,Y
.C:9ed9  9F B7 9F    SHA $9FB7,Y
.C:9edc  C5 9F       CMP $9F
.C:9ede  D4 E5       NOOP $E5,X		[T][e]
.C:9ee0  ED F0 EC    SBC $ECF0		[m][p][l]
.C:9ee3  E5 DC       SBC $DC		[e][EOT]
.C:9ee5  D6 F2       DEC $F2,X		[V][r]
.C:9ee7  EF EF ED    ISB $EDEF		[o][o][m]
.C:9eea  A0 D4       LDY #$D4		[_][T]
.C:9eec  E5 ED       SBC $ED		[e][m]
.C:9eee  F0 EC       BEQ $9EDC		[p][l]
.C:9ef0  E5 DC       SBC $DC		[e][EOT]
.C:9ef2  C6 E9       DEC $E9		[F][i]
.C:9ef4  F8          SED		[x]
.C:9ef5  E5 F2       SBC $F2		[e][r]
.C:9ef7  A0 D4       LDY #$D4		[_][T]
.C:9ef9  E5 ED       SBC $ED		[e][m]
.C:9efb  F0 EC       BEQ $9EE9		[p][l]
.C:9efd  E5 DC       SBC $DC		[e][EOT]
.C:9eff  C2 F2       NOOP #$F2		[B][r]
.C:9f01  EF F4 E8    ISB $E8F4		[o][t][h]
.C:9f04  F2          JAM		[r]
.C:9f05  EC F9 A0    CPX $A0F9		[l][y][_]
.C:9f08  CC EF F6    CPY $F6EF		[L][o][v]
.C:9f0b  E5 DC       SBC $DC		[e][EOT]
.C:9f0d  D4 E5       NOOP $E5,X		[T][e]
.C:9f0f  ED F0 EC    SBC $ECF0		[m][p][l]
.C:9f12  E5 A0       SBC $A0		[e][_]
.C:9f14  EF E6 A0    ISB $A0E6		[o][f][_]
.C:9f17  D2          JAM		[R]
.C:9f18  EF EB DC    ISB $DCEB		[o][k][EOT]
.C:9f1b  CF EE E5    DCP $E5EE		[O][n][e]
.C:9f1e  A0 C7       LDY #$C7		[_][G]
.C:9f20  EF E4 DC    ISB $DCE4		[o][d][EOT]
.C:9f23  D4 E8       NOOP $E8,X		[T][h]
.C:9f25  E5 A0       SBC $A0		[e][_]
.C:9f27  C9 A0       CMP #$A0		[I][_]
.C:9f29  C1 CD       CMP ($CD,X)	[A][M]
.C:9f2b  DC B1 CF    NOOP $CFB1,X	[EOT][1][0]
.C:9f2e  B1 A0       LDA ($A0),Y	[1][_]
.C:9f30  C2 EC       NOOP #$EC		[B][l]
.C:9f32  E5 F3       SBC $F3		[e][s]
.C:9f34  F3 E9       ISB ($E9),Y	[s][i]
.C:9f36  EE E7 F3    INC $F3E7		[n][g][s]
.C:9f39  DC B1 CF    NOOP $CFB1,X	[EOT][1][0]
.C:9f3c  B2          JAM		[2]
.C:9f3d  A0 C2       LDY #$C2		[_][B]
.C:9f3f  EC E5 F3    CPX $F3E5		[l][e][s]
.C:9f42  F3 E9       ISB ($E9),Y	[s][i]
.C:9f44  EE E7 F3    INC $F3E7		[n][g][s]
.C:9f47  DC D4 E8    NOOP $E8D4,X	[EOT][T][h]
.C:9f4a  E5 A0       SBC $A0		[e][_]
.C:9f4c  CD E1 E4    CMP $E4E1		[M][a][d]
.C:9f4f  A0 E7       LDY #$E7		[_][g]
.C:9f51  EF E4 DC    ISB $DCE4		[o][d][EOT]
.C:9f54  D3 E8       DCP ($E8),Y	[S][h]
.C:9f56  E1 E4       SBC ($E4,X)	[a][d]
.C:9f58  EF F7 A0    ISB $A0F7		[o][w][_]
.C:9f5b  D4 E5       NOOP $E5,X		[T][e]
.C:9f5d  ED F0 EC    SBC $ECF0		[m][p][l]
.C:9f60  E5 DC       SBC $DC		[e][EOT]
.C:9f62  C2 EF       NOOP #$EF		[B][o]
.C:9f64  E7 F5       ISB $F5		[g][u]
.C:9f66  F3 A0       ISB ($A0),Y	[s][_]
.C:9f68  D3 E8       DCP ($E8),Y	[S][h]
.C:9f6a  F2          JAM		[r]
.C:9f6b  E9 EE       SBC #$EE		[i][n]
.C:9f6d  E5 DC       SBC $DC		[e][EOT]
.C:9f6f  B1 B4       LDA ($B4),Y	[1][4]
.C:9f71  A0 CD       LDY #$CD		[_][M]
.C:9f73  E9 F2       SBC #$F2		[i][r]
.C:9f75  E1 E3       SBC ($E3,X)	[a][c]
.C:9f77  EC E5 F3    CPX $F3E5		[l][e][s]
.C:9f7a  DC C3 EF    NOOP $EFC3,X	[EOT][C][o]
.C:9f7d  EF EC A0    ISB $A0EC		[o][l][_]
.C:9f80  C3 EC       DCP ($EC,X)	[C][l]
.C:9f82  E5 F2       SBC $F2		[e][r]
.C:9f84  E9 E3       SBC #$E3		[i][c]
.C:9f86  DC C6 F5    NOOP $F5C6,X	[EOT][F][u]
.C:9f89  EE EB F9    INC $F9EB		[n][k][y]
.C:9f8c  A0 C6       LDY #$C6		[_][F]
.C:9f8e  F2          JAM		[r]
.C:9f8f  E9 E1       SBC #$E1		[i][a]
.C:9f91  F2          JAM		[r]
.C:9f92  DC CC E9    NOOP $E9CC,X	[EOT][L][i]
.C:9f95  ED E2 EF    SBC $EFE2		[m][b][o]
.C:9f98  A0 D4       LDY #$D4		[_][T]
.C:9f9a  E9 ED       SBC #$ED		[i][m]
.C:9f9c  E5 DC       SBC $DC		[e][EOT]
.C:9f9e  D0 E1       BNE $9F81		[P][a]
.C:9fa0  F2          JAM		[r]
.C:9fa1  F4 F9       NOOP $F9,X		[t][y]
.C:9fa3  A0 D3       LDY #$D3		[_][S]
.C:9fa5  E8          INX		[h]
.C:9fa6  F2          JAM		[r]
.C:9fa7  E9 EE       SBC #$EE		[i][n]
.C:9fa9  E5 DC       SBC $DC		[e][EOT]
.C:9fab  B1 B5       LDA ($B5),Y	[1][5]
.C:9fad  A0 CD       LDY #$CD		[_][M]
.C:9faf  E9 F2       SBC #$F2		[i][r]
.C:9fb1  E1 E3       SBC ($E3,X)	[a][c]
.C:9fb3  EC E5 F3    CPX $F3E5		[l][e][s]
.C:9fb6  DC CC EF    NOOP $EFCC,X	[EOT][L][o]
.C:9fb9  EE E5 A0    INC $A0E5		[n][e][_]
.C:9fbc  C4 E9       CPY $E9		[D][i]
.C:9fbe  F3 E3       ISB ($E3),Y	[s][c]
.C:9fc0  E9 F0       SBC #$F0		[i][p]
.C:9fc2  EC E5 DC    CPX $DCE5		[l][e][EOT]
.C:9fc5  CD E1 EE    CMP $EEE1		[M][a][n]
.C:9fc8  E9 E3       SBC #$E3		[i][c]
.C:9fca  A0 CD       LDY #$CD		[_][M]
.C:9fcc  EF EE EB    ISB $EBEE		[o][n][k]
.C:9fcf  DC 00 B8    NOOP $B800,X	[EOT]
.C:9fd2  80 B8       NOOP #$B8
.C:9fd4  00          BRK
.C:9fd5  B9 80 B9    LDA $B980,Y
.C:9fd8  00          BRK
.C:9fd9  BA          TSX
.C:9fda  80 BA       NOOP #$BA
.C:9fdc  00          BRK
Last edited by Darendor on Thu Jan 14, 2021 6:15 pm, edited 2 times in total.
drifting
Posts: 152
Joined: Wed Dec 07, 2011 10:21 pm

Re: BT II - Healing Temples

Post by drifting »

Darendor wrote: Tue Jan 12, 2021 4:39 pm The instruction at 9CA7 baffles me; it points to a text that is at...executable code?? Huh? :?
The code at $9CA1 is called right after displaying the picture. It sets the caption to a temple name based on the party's location, x, and y coordinates.

Code: Select all

.C:9a00  A2 17       LDX #$17
.C:9a02  20 1B 08    JSR $081B		Display picture #$17
.C:9a05  20 A1 9C    JSR $9CA1
...
$A8 is the current city the party is in. $28 and $29 are the X & Y coordinates of the party. Not sure which is which but that's not important.

Code: Select all

.C:9ca1  A2 00       LDX #$00
.C:9ca3  A0 00       LDY #$00
.C:9ca5  A5 28       LDA $28
.C:9ca7  DD 7A 9E    CMP $9E7A,X
.C:9caa  D0 0E       BNE $9CBA
.C:9cac  A5 29       LDA $29
.C:9cae  DD 7B 9E    CMP $9E7B,X
.C:9cb1  D0 07       BNE $9CBA
.C:9cb3  A5 A8       LDA $A8
.C:9cb5  D9 A2 9E    CMP $9EA2,Y
.C:9cb8  F0 09       BEQ $9CC3
.C:9cba  E8          INX
.C:9cbb  E8          INX
.C:9cbc  C8          INY
.C:9cbd  C0 14       CPY #$14
.C:9cbf  90 E4       BCC $9CA5
This block of code compares the X & Y coordinates with the temple x & y coordinates which are stored at $9E7A. The location list is located at $9EA2.

Code: Select all

.C:9cc1  A2 00       LDX #$00
.C:9cc3  BD B6 9E    LDA $9EB6,X
.C:9cc6  85 58       STA $58
.C:9cc8  BD B7 9E    LDA $9EB7,X
.C:9ccb  85 59       STA $59
.C:9ccd  4C 0F 08    JMP $080F		Display caption depending on party's N & E location
Once the temple location has been found, the caption string address is stored in $58 and $59 and printed.

This code:

Code: Select all

.C:9eb6  DE       ASL $DE
.C:9eb7  9E E5 9E    SHX $9EE5,Y
.C:9eba  F2          JAM
.C:9ebb  9E FF 9E    SHX $9EFF,Y
.C:9ebe  0D 9F 1B    ORA $1B9F
.C:9ec1  9F 23 9F    SHA $9F23,Y
.C:9ec4  2C 9F 3A    BIT $3A9F
.C:9ec7  9F 48 9F    SHA $9F48,Y
.C:9eca  54 9F       NOOP $9F,X
.C:9ecc  62          JAM
.C:9ecd  9F 6F 9F    SHA $9F6F,Y
.C:9ed0  7B 9F 87    RRA $879F,Y
.C:9ed3  9F 93 9F    SHA $9F93,Y
.C:9ed6  9E 9F AB    SHX $AB9F,Y
.C:9ed9  9F B7 9F    SHA $9FB7,Y
.C:9edc  C5 9F
is a data table of addresses:

Code: Select all

$9EDE
$9EE5
$9EF2
$9EFF
$9F0D
$9F1B
etc.
which are the addresses of the temple caption strings.
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: BT II - Healing Temples

Post by Darendor »

I'd ask how you figured all that out so fast but the answer is probably "Darendor needs to learn ML better". :roll:


Still, I am grateful for you pointing all this out to me. I never realized $a8 contained the current city. Does that mean if $A8 is at 00 that they're in the Wilderness?
drifting
Posts: 152
Joined: Wed Dec 07, 2011 10:21 pm

Re: BT II - Healing Temples

Post by drifting »

I do have the DOS code as a kind of "cheat sheet" into the code that you're posting. I can't really help too much more with this one though since it depends on the character structure and those are different in DOS vs C64
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: BT II - Healing Temples

Post by Darendor »

That's quite alright.
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: BT II - Healing Temples

Post by Darendor »

Guh, I noticed I somehow omitted a few lines from the code body.

Fixed now. I think.
Weber G
Posts: 125
Joined: Tue Dec 15, 2020 9:58 am

Re: BT II - Healing Temples

Post by Weber G »

Below is the complete temple code with comments.

Hope this details are enough!? :D

Code: Select all

.C:9a00	A2	17	  	LDX #$17	; 17 => X	; 17 => picture # of inside temple
.C:9a02	20	1B	08	JSR $081B	; jsr => $081B	; jump => $0DCA => load picture via track/ sector table
.C:9a05	20	A1	9C	JSR $9CA1	; jsr => $9CA1	; select which temple was entered and display caption
.C:9a08	20	E1	08	JSR $08E1	; jsr => $08E1	; jump => $409A => clear text window
.C:9a0b	A0	9C	  	LDY #$9C	; 9C => Y	; "WELCOME, OH WEARY ONES, TO OUR HUMBLE TEMPLE. HOW MAY WE HELP?@@(H)EAL MEMBER@(0-6) VIEW OR@(E)XIT TEMPLE"
.C:9a0d	A2	D0	  	LDX #$D0	; D0 => X	
.C:9a0f	20	06	08	JSR $0806	; jsr => $0806	; text output of address Y-X
.C:9a12	20	78	08	JSR $0878	; jsr => $0878	; jump => $1B39 => wait for key input
.C:9a15	20	87	08	JSR $0887	; jsr => $0887	; jump => $1CB4 => only returns
.C:9a18	C9	C5	  	CMP #$C5	; compare A with C5	; C5 = "E"
########## exit temple						
.C:9a1a	D0	14	  	BNE $9A30	; if A <> C5 => jump	; if "E" was not pressed => jump
.C:9a1c	A6	24	  	LDX $24	; $24 => X	
.C:9a1e	BD	9D	9C	LDA $9C9D,X	;$9C9D,X => A	
.C:9a21	85	24	  	STA $24	; A => $24	
.C:9a23	20	85	9C	JSR $9C85	; jsr => $9C85	; set back the position from where the temple was entered
.C:9a26	A9	00	  	LDA #$00	; 00 => A	
.C:9a28	85	2F	  	STA $2F	; A => $2F	
.C:9a2a	20	E1	08	JSR $08E1	; jsr => $08E1	; jump => $409A => clear text window
.C:9a2d	4C	00	90	JMP $9000	; jump => $9000	
########## check if "H" was pressed						
.C:9a30	C9	C8	  	CMP #$C8	; compare A with C8	
.C:9a32	F0	11	  	BEQ $9A45	; if A = C8 => jump	; if "H" was pressed => jump
########## check if 0-6 was pressed; if yes => view character						
.C:9a34	C9	B0	  	CMP #$B0	; compare A with B0	
.C:9a36	90	DA	  	BCC $9A12	; if A < B0 => jump	; if a key below B0 was pressed => jump
.C:9a38	C9	B7	  	CMP #$B7	; compare A with B7	
.C:9a3a	B0	D6	  	BCS $9A12	; if A >= B7 => jump	; if a key above B6 was pressed => jump
.C:9a3c	38	  	  	SEC		
.C:9a3d	E9	B0	  	SBC #$B0	; substract B0 from A	; result: 0-6
.C:9a3f	20	51	08	JSR $0851	; jsr => $0851	; view character
.C:9a42	4C	00	9A	JMP $9A00	; jump => $9A00	
########## who needs healing; check if pressed key is valid						
.C:9a45	A0	9D	  	LDY #$9D	; 9D => Y	; "@@WHO NEEDS HEALING? #(0-6)"
.C:9a47	A2	3A	  	LDX #$3A	; 3A => X	
.C:9a49	20	06	08	JSR $0806	; jsr => $0806	; text output of address Y-X
.C:9a4c	20	78	08	JSR $0878	; jsr => $0878	; jump => $1B39 => wait for key input
.C:9a4f	C9	B0	  	CMP #$B0	; compare A with B0	
.C:9a51	90	BF	  	BCC $9A12	; if A < B0 => jump	
.C:9a53	C9	B7	  	CMP #$B7	; compare A with B7	
.C:9a55	B0	BB	  	BCS $9A12	; if A >= B7 => jump	
.C:9a57	38	  	  	SEC		
.C:9a58	E9	B0	  	SBC #$B0	; substract B0 from A	; result: 0-6
########## load character address in $9B/ $9C						
.C:9a5a	0A	  	  	ASL A	; move A bitwise left	
.C:9a5b	AA	  	  	TAX	; A => X	
.C:9a5c	BD	D0	9F	LDA $9FD0,X	;$9FD0,X => A	
.C:9a5f	85	9B	  	STA $9B	; A => $9B	
.C:9a61	BD	D1	9F	LDA $9FD1,X	;$9FD1,X => A	
.C:9a64	85	9C	  	STA $9C	; A => $9C	
########## check if character is in selected slot						
.C:9a66	A0	00	  	LDY #$00	; 00 => Y	
.C:9a68	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9a6a	F0	A6	  	BEQ $9A12	; if A = 0 => jump	
########## output of character name						
.C:9a6c	20	E1	08	JSR $08E1	; jsr => $08E1	; jump => $409A => clear text window
.C:9a6f	A6	9B	  	LDX $9B	; $9B => X	; character name
.C:9a71	A4	9C	  	LDY $9C	; $9C => Y	
.C:9a73	20	06	08	JSR $0806	; jsr => $0806	; text output of address Y-X
########## check character status						
.C:9a76	A0	3E	  	LDY #$3E	; 3E => Y	
.C:9a78	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	; status of character => A
.C:9a7a	D0	1C	  	BNE $9A98	; if A <> 0 => jump	; if status > 0 => jump
########## check if character is old, if yes, save 02 (old) in character status						
.C:9a7c	A0	10	  	LDY #$10	; 10 => Y	
.C:9a7e	A2	00	  	LDX #$00	; 00 => X	
.C:9a80	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	; first byte of attributes => A
.C:9a82	DD	64	9E	CMP $9E64,X		; >C:9e64  08 41 08 40
.C:9a85	D0	0E	  	BNE $9A95	; if A <>  $9E64,X => jump	
.C:9a87	C8	  	  	INY	; Y = Y +1	
.C:9a88	E8	  	  	INX	; X = X +1	
.C:9a89	E0	04	  	CPX #$04	; compare A with 04	
.C:9a8b	90	F3	  	BCC $9A80	; if A <  04 => jump	
.C:9a8d	A0	3E	  	LDY #$3E	; 3E => Y	
.C:9a8f	A9	02	  	LDA #$02	; 02 => A	
.C:9a91	91	9B	  	STA ($9B),Y	; A => ($9B),Y	; 02 (old) => status of character
.C:9a93	D0	03	  	BNE $9A98	; if A > 0 => jump	
########## jump if character status is 0 (ok)						
.C:9a95	4C	F1	9B	JMP $9BF1	; jump => $9BF1	
########## go on here if character status is not 0 (ok)						
.C:9a98	48	  	  	PHA	; A => SP; SP = SP -1	
.C:9a99	A0	9D	  	LDY #$9D	; 9D => Y	; " IS IN BAD SHAPE, INDEED. IT WILL COST "
.C:9a9b	A2	75	  	LDX #$75	; 75 => X	
.C:9a9d	20	06	08	JSR $0806	; jsr => $0806	; text output of address Y-X
.C:9aa0	68	  	  	PLA	; SP = SP +1; SP => A	
########## load base price for healing						
.C:9aa1	0A	  	  	ASL A	; move A bitwise left	
.C:9aa2	AA	  	  	TAX	; A => X	
.C:9aa3	BD	9D	9D	LDA $9D9D,X	;$9D9D,X => A	; LSB price table
.C:9aa6	85	6E	  	STA $6E	; A => $6E	
.C:9aa8	BD	9E	9D	LDA $9D9E,X	;$9D9E,X => A	; MSB price table
.C:9aab	85	6F	  	STA $6F	; A => $6F	
########## clear $63/ $64 and set $6B to 0D (13: max price level)						
.C:9aad	A9	00	  	LDA #$00	; 00 => A	
.C:9aaf	85	63	  	STA $63	; A => $63	
.C:9ab1	85	64	  	STA $64	; A => $64	
.C:9ab3	A9	0D	  	LDA #$0D	; 0D => A	
.C:9ab5	85	6B	  	STA $6B	; A => $6B	
########## check if monster is in selected character slot						
.C:9ab7	A0	38	  	LDY #$38	; 38 => Y	
.C:9ab9	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9abb	C9	0B	  	CMP #$0B		
.C:9abd	90	07	  	BCC $9AC6	; A < 0B => jump	; jump if no monster is in character slot
########## load monster level						
.C:9abf	A0	66	  	LDY #$66	; 66 => Y	
.C:9ac1	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9ac3	4C	CF	9A	JMP $9ACF	; jump => $9ACF	
########## load character level and check if level > 255						
.C:9ac6	A0	22	  	LDY #$22	; 22 => Y	
.C:9ac8	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9aca	D0	09	  	BNE $9AD5	; A > 0 => jump	; jump if level > 255
.C:9acc	C8	  	  	INY	; Y = Y +1	
.C:9acd	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
########## check if level > 13 (max price level)						
.C:9acf	C9	0E	  	CMP #$0E		
.C:9ad1	B0	02	  	BCS $9AD5	; A >= 0E (14)	
.C:9ad3	85	6B	  	STA $6B	; A => $6B	; $6B = 0 if max level is reached
########## calculate price						
.C:9ad5	A5	6E	  	LDA $6E	; $6E => A	
.C:9ad7	18	  	  	CLC		
.C:9ad8	65	63	  	ADC $63	; add $63 to A	
.C:9ada	85	63	  	STA $63	; A => $63	
.C:9adc	A5	6F	  	LDA $6F	; $6F => A	
.C:9ade	65	64	  	ADC $64	; add $64 to A	
.C:9ae0	85	64	  	STA $64	; A => $64	
.C:9ae2	C6	6B	  	DEC $6B	; $6B = $6B -1	
.C:9ae4	D0	EF	  	BNE $9AD5		
.C:9ae6	20	30	08	JSR $0830	; jsr => $0830	; jump => $104A => output price
########## check who will pay						
.C:9ae9	A0	9D	  	LDY #$9D	; 9D => Y	; " IN GOLD. WHO WILL PAY? #(0-6)"
.C:9aeb	A2	AF	  	LDX #$AF	; AF => X	
.C:9aed	20	06	08	JSR $0806	; jsr => $0806	; text output of address Y-X
.C:9af0	20	8D	08	JSR $088D	; jsr => $088D	; jump => $1CC2 => key input, check if pressed key was valid (0-6) and load character address in Y and A
.C:9af3	90	03	  	BCC $9AF8	; carry clear => jump	; jump if selected key is valid
.C:9af5	4C	08	9A	JMP $9A08	; jump => $9A08	
########## check if selected slot is empty						
.C:9af8	84	6E	  	STY $6E	; Y => $6E	
.C:9afa	85	6F	  	STA $6F	; A => $6F	
.C:9afc	A0	00	  	LDY #$00	; 00 => Y	
.C:9afe	B1	6E	  	LDA ($6E),Y	; ($6E,Y) => A	
.C:9b00	F0	EE	  	BEQ $9AF0	; A = 0 => jump	; jump if selected slot is empty
########## store address of character who needs healing in SP						
.C:9b02	A5	9B	  	LDA $9B	; $9B => A	
.C:9b04	48	  	  	PHA		
.C:9b05	A5	9C	  	LDA $9C	; $9C => A	
.C:9b07	48	  	  	PHA		
########## store address of character who wants to pay in $9B/ $9C						
.C:9b08	A5	6E	  	LDA $6E	; $6E => A	
.C:9b0a	85	9B	  	STA $9B	; A => $9B	
.C:9b0c	A5	6F	  	LDA $6F	; $6F => A	
.C:9b0e	85	9C	  	STA $9C	; A => $9C	
						
.C:9b10	A0	24	  	LDY #$24	; 24 => Y	
.C:9b12	84	8F	  	STY $8F	; Y => $8F	
.C:9b14	20	21	08	JSR $0821	; jsr => $0821	; jump => $0F77 => check if character has enough gold
.C:9b17	90	1B	  	BCC $9B34	; carry clear => jump	; enough gold => jump
########## load address of character who needs healing in $9B/ $9C						
.C:9b19	68	  	  	PLA		
.C:9b1a	85	9C	  	STA $9C	; A => $9C	
.C:9b1c	68	  	  	PLA	; if PLA <> C5 "E" => jump	
.C:9b1d	85	9B	  	STA $9B	; A => $9B	
########## text output: not enough gold						
.C:9b1f	20	0C	08	JSR $080C	; jsr => $080C	; jump => $0BF1 => scroll text window 1 line
.C:9b22	20	0C	08	JSR $080C	; jsr => $080C	; jump => $0BF1 => scroll text window 1 line
.C:9b25	A0	9E	  	LDY #$9E	; 9E => Y	; "NOT ENOUGH GOLD."
.C:9b27	A2	68	  	LDX #$68	; 68 => X	
.C:9b29	20	06	08	JSR $0806	; jsr => $0806	; text output of address Y-X
.C:9b2c	A9	09	  	LDA #$09	; 09 => A	
.C:9b2e	20	1A	09	JSR $091A	; jsr => $091A	; jump => $1D77 => wait a time
.C:9b31	4C	6C	9A	JMP $9A6C	; jump => $9A6C	
########## pay for healing						
.C:9b34	20	24	08	JSR $0824	; jsr => $0824	; jump => $0F94 => substract price from character gold
########## load address of character who needs healing in $9B/ $9C						
.C:9b37	68	  	  	PLA		
.C:9b38	85	9C	  	STA $9C	; A => $9C	
.C:9b3a	68	  	  	PLA	; if PLA <> C5 "E" => jump	
.C:9b3b	85	9B	  	STA $9B	; A => $9B	
########## check status of character						
.C:9b3d	A0	3E	  	LDY #$3E	; 3E => Y	
.C:9b3f	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9b41	F0	61	  	BEQ $9BA4	; A = 0 => jump	; jump if status = 0 (ok)
########## set current status to 00 and load previous status in current status						
.C:9b43	48	  	  	PHA		
.C:9b44	A9	00	  	LDA #$00	; 00 => A	
.C:9b46	91	9B	  	STA ($9B),Y	; A => ($9B),Y	
.C:9b48	A0	4E	  	LDY #$4E	; 4E => Y	
.C:9b4a	91	9B	  	STA ($9B),Y	; A => ($9B),Y	
.C:9b4c	68	  	  	PLA		
########## check current status						
.C:9b4d	C9	02	  	CMP #$02		
.C:9b4f	F0	0D	  	BEQ $9B5E	; A = 2 => jump	; status = 2 (old) => jump
.C:9b51	C9	06	  	CMP #$06		
.C:9b53	D0	22	  	BNE $9B77	; A <> 6 => jump	; status is not 6 (poss) => jump
########## set hit points (MSB) to 0						
.C:9b55	A0	32	  	LDY #$32	; 32 => Y	
.C:9b57	A9	00	  	LDA #$00	; 00 => A	
.C:9b59	91	9B	  	STA ($9B),Y	; A => ($9B),Y	
.C:9b5b	C8	  	  	INY	; Y = Y +1	
.C:9b5c	D0	24	  	BNE $9B82	; Y > 0 => jump	
########## replace current attributes with original attributes						
.C:9b5e	A5	9B	  	LDA $9B	; $9B => A	
.C:9b60	18	  	  	CLC		
.C:9b61	69	50	  	ADC #$50	; add 50 to A	
.C:9b63	85	50	  	STA $50	; A => $50	
.C:9b65	A5	9C	  	LDA $9C	; $9C => A	
.C:9b67	69	00	  	ADC #$00	; add 00 to A	
.C:9b69	85	51	  	STA $51	; A => $51	
.C:9b6b	A0	10	  	LDY #$10	; 10 => Y	
.C:9b6d	A2	04	  	LDX #$04	; 04 => X	
.C:9b6f	B1	50	  	LDA ($50),Y	; ($50,Y) => A	
.C:9b71	91	9B	  	STA ($9B),Y	; A => ($9B),Y	
.C:9b73	C8	  	  	INY	; Y = Y +1	
.C:9b74	CA	  	  	DEX	; X = X -1	
.C:9b75	D0	F8	  	BNE $9B6F		
########## check if hit points = 0						
.C:9b77	A0	32	  	LDY #$32	; 32 => Y	
.C:9b79	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9b7b	D0	09	  	BNE $9B86	; A <> 0 => jump	
.C:9b7d	C8	  	  	INY	; Y = Y +1	
.C:9b7e	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9b80	D0	04	  	BNE $9B86	; A <> 0 => jump	
########## set hit point (LSB) to 1						
.C:9b82	A9	01	  	LDA #$01	; 01 => A	
.C:9b84	91	9B	  	STA ($9B),Y	; A => ($9B),Y	
########## output healing text						
.C:9b86	A0	9D	  	LDY #$9D	; 9D => Y	; "@@THE PRIESTS LAY HANDS ON HIM...@@"
.C:9b88	A2	CE	  	LDX #$CE	; CE => X	
.C:9b8a	20	06	08	JSR $0806	; jsr => $0806	; text output of address Y-X
.C:9b8d	A9	06	  	LDA #$06	; 06 => A	
.C:9b8f	20	1A	09	JSR $091A	; jsr => $091A	; jump => $1D77 => wait a time
.C:9b92	A0	9D	  	LDY #$9D	; 9D => Y	; "...AND HE IS HEALED!"
.C:9b94	A2	F2	  	LDX #$F2	; F2 => X	
.C:9b96	20	06	08	JSR $0806	; jsr => $0806	; text output of address Y-X
.C:9b99	A9	06	  	LDA #$06	; 06 => A	
.C:9b9b	20	1A	09	JSR $091A	; jsr => $091A	; jump => $1D77 => wait a time
.C:9b9e	20	48	08	JSR $0848	; jsr => $0848	; jump => $11B3 => update character display
.C:9ba1	4C	08	9A	JMP $9A08	; jump => $9A08	
########## check in $C9 if level was drained						
.C:9ba4	A5	C9	  	LDA $C9	; $C9 => A	
.C:9ba6	F0	35	  	BEQ $9BDD	; A = 0 => jump	
.C:9ba8	C6	C9	  	DEC $C9	; $C9 = $C9 -1	
########## set back level drain						
.C:9baa	A0	20	  	LDY #$20	; 20 => Y	
.C:9bac	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9bae	85	64	  	STA $64	; A => $64	
.C:9bb0	A0	22	  	LDY #$22	; 22 => Y	
.C:9bb2	91	9B	  	STA ($9B),Y	; A => ($9B),Y	
.C:9bb4	A0	21	  	LDY #$21	; 21 => Y	
.C:9bb6	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9bb8	85	63	  	STA $63	; A => $63	
.C:9bba	A0	23	  	LDY #$23	; 23 => Y	
.C:9bbc	91	9B	  	STA ($9B),Y	; A => ($9B),Y	
.C:9bbe	C6	63	  	DEC $63	; $63 = $63 -1	
.C:9bc0	A5	63	  	LDA $63	; $63 => A	
.C:9bc2	C9	FF	  	CMP #$FF		
.C:9bc4	D0	02	  	BNE $9BC8		
.C:9bc6	C6	64	  	DEC $64	; $64 = $64 -1	
.C:9bc8	20	6C	08	JSR $086C	; jsr => $086C	; jump => $472D => update values of character
.C:9bcb	A0	14	  	LDY #$14	; 14 => Y	
.C:9bcd	A2	00	  	LDX #$00	; 00 => X	
.C:9bcf	BD	80	03	LDA $0380,X	;$0380,X => A	
.C:9bd2	91	9B	  	STA ($9B),Y	; A => ($9B),Y	
.C:9bd4	C8	  	  	INY	; Y = Y +1	
.C:9bd5	E8	  	  	INX	; X = X +1	
.C:9bd6	E0	0C	  	CPX #$0C		
.C:9bd8	90	F5	  	BCC $9BCF		
.C:9bda	4C	86	9B	JMP $9B86	; jump => $9B86	
########## set hit points to max						
.C:9bdd	A0	30	  	LDY #$30	; 30 => Y	
.C:9bdf	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9be1	48	  	  	PHA		
.C:9be2	C8	  	  	INY	; Y = Y +1	
.C:9be3	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9be5	AA	  	  	TAX	; A => X	
.C:9be6	C8	  	  	INY	; Y = Y +1	
.C:9be7	68	  	  	PLA		
.C:9be8	91	9B	  	STA ($9B),Y	; A => ($9B),Y	
.C:9bea	C8	  	  	INY	; Y = Y +1	
.C:9beb	8A	  	  	TXA	; X => A	
.C:9bec	91	9B	  	STA ($9B),Y	; A => ($9B),Y	
.C:9bee	4C	86	9B	JMP $9B86	; jump => $9B86	
########## check if character lost hit points						
.C:9bf1	A9	00	  	LDA #$00	; 00 => A	
.C:9bf3	85	C9	  	STA $C9	; A => $C9	
.C:9bf5	A0	31	  	LDY #$31	; 31 => Y	
.C:9bf7	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9bf9	C8	  	  	INY	; Y = Y +1	
.C:9bfa	C8	  	  	INY	; Y = Y +1	
.C:9bfb	38	  	  	SEC		
.C:9bfc	F1	9B	  	SBC ($9B),Y		; max hit point - current hit points (LSB)
.C:9bfe	85	6E	  	STA $6E	; A => $6E	
.C:9c00	A0	30	  	LDY #$30	; 30 => Y	
.C:9c02	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9c04	C8	  	  	INY	; Y = Y +1	
.C:9c05	C8	  	  	INY	; Y = Y +1	
.C:9c06	F1	9B	  	SBC ($9B),Y		; max hit point - current hit points (MSB)
.C:9c08	85	6F	  	STA $6F	; A => $6F	
.C:9c0a	A5	6E	  	LDA $6E	; $6E => A	
.C:9c0c	D0	44	  	BNE $9C52	; A > 0 => jump	
.C:9c0e	A5	6F	  	LDA $6F	; $6F => A	
.C:9c10	D0	40	  	BNE $9C52	; A > 0 => jump	
########## check if monster is in selected character slot						
.C:9c12	A0	38	  	LDY #$38	; 38 => Y	
.C:9c14	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9c16	C9	0B	  	CMP #$0B		
.C:9c18	B0	29	  	BCS $9C43	; A >= 0B => jump	; jump if monster is in character slot
########## check if level was drained (MSB)						
.C:9c1a	A0	20	  	LDY #$20	; 20 => Y	
.C:9c1c	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9c1e	A0	22	  	LDY #$22	; 22 => Y	
.C:9c20	D1	9B	  	CMP ($9B),Y		; compare original level with current level (MSB)
.C:9c22	F0	05	  	BEQ $9C29		; original level = current level => jump
.C:9c24	B0	0F	  	BCS $9C35		; original level >= current level => jump
.C:9c26	4C	43	9C	JMP $9C43	; jump => $9C43	
########## check if level was drained (LSB)						
.C:9c29	A0	21	  	LDY #$21	; 21 => Y	
.C:9c2b	B1	9B	  	LDA ($9B),Y	; ($9B,Y) => A	
.C:9c2d	A0	23	  	LDY #$23	; 23 => Y	
.C:9c2f	D1	9B	  	CMP ($9B),Y		; compare original level with current level (LSB)
.C:9c31	F0	10	  	BEQ $9C43		; original level = current level => jump
.C:9c33	90	0E	  	BCC $9C43		; original level >= current level => jump
.C:9c35	E6	C9	  	INC $C9	; $C9 = $C9 +1	; set $C9 to 1 if level was drained
########## output text for level was drained						
.C:9c37	A0	9E	  	LDY #$9E	; 9E => Y	; " HAS BEEN DRAINED OF LIFE FORCE. IT WILL COST "
.C:9c39	A2	35	  	LDX #$35	; 35 => X	
.C:9c3b	20	06	08	JSR $0806	; jsr => $0806	; text output of address Y-X
.C:9c3e	A9	08	  	LDA #$08	; 08 => A	
.C:9c40	4C	A1	9A	JMP $9AA1	; jump => $9AA1	
########## output text no healing needed						
.C:9c43	A0	9D	  	LDY #$9D	; 9D => Y	; " DOES NOT REQUIRE ANY HEALING."
.C:9c45	A2	56	  	LDX #$56	; 56 => X	
.C:9c47	20	06	08	JSR $0806	; jsr => $0806	; text output of address Y-X
.C:9c4a	A9	09	  	LDA #$09	; 09 => A	
.C:9c4c	20	1A	09	JSR $091A	; jsr => $091A	; jump => $1D77 => wait a time
.C:9c4f	4C	08	9A	JMP $9A08	; jump => $9A08	
########## output text for hit points healing cost						
.C:9c52	A0	9E	  	LDY #$9E	; 9E => Y	; "HAS WOUNDS WHICH NEED TENDING. IT WILL COST "
.C:9c54	A2	07	  	LDX #$07	; 07 => X	
.C:9c56	20	06	08	JSR $0806	; jsr => $0806	; text output of address Y-X
########## calculate price for healing hit points						
.C:9c59	A9	00	  	LDA #$00	; 00 => A	
.C:9c5b	85	63	  	STA $63	; A => $63	
.C:9c5d	85	64	  	STA $64	; A => $64	
.C:9c5f	A9	0A	  	LDA #$0A	; 0A => A	
.C:9c61	18	  	  	CLC		
.C:9c62	65	63	  	ADC $63	; add $63 to A	
.C:9c64	85	63	  	STA $63	; A => $63	
.C:9c66	90	02	  	BCC $9C6A	; carry clear => jump	
.C:9c68	E6	64	  	INC $64	; $64 = $64 +1	
.C:9c6a	A5	6E	  	LDA $6E	; $6E => A	
.C:9c6c	38	  	  	SEC		
.C:9c6d	E9	01	  	SBC #$01	; substract 01 from A	
.C:9c6f	85	6E	  	STA $6E	; A => $6E	
.C:9c71	90	0A	  	BCC $9C7D	; carry clear => jump	
.C:9c73	C9	00	  	CMP #$00		
.C:9c75	D0	E8	  	BNE $9C5F	; A > 0 => jump	
.C:9c77	A5	6F	  	LDA $6F	; $6F => A	
.C:9c79	F0	07	  	BEQ $9C82	; A = 0 => jump	
.C:9c7b	D0	E2	  	BNE $9C5F	; A > 0 => jump	
.C:9c7d	C6	6F	  	DEC $6F	; $6F = $6F -1	
.C:9c7f	4C	5F	9C	JMP $9C5F	; jump => $9C5F	
.C:9c82	4C	E6	9A	JMP $9AE6	; jump => $9AE6	
###########################################################						
########## set back the position from where the temple was entered						
###########################################################						
.C:9c85	A5	24	  	LDA $24	; $24 => A	
.C:9c87	F0	0B	  	BEQ $9C94	; A = 0 => jump	
.C:9c89	C9	01	  	CMP #$01		
.C:9c8b	F0	0D	  	BEQ $9C9A	; A = 5 => jump	
.C:9c8d	C9	02	  	CMP #$02		
.C:9c8f	F0	06	  	BEQ $9C97	; A = 2 => jump	
.C:9c91	C6	29	  	DEC $29	; $29 = $29 -1	
.C:9c93	60	  	  	RTS		
.C:9c94	E6	28	  	INC $28	; $28 = $28 +1	
.C:9c96	60	  	  	RTS		
.C:9c97	C6	28	  	DEC $28	; $28 = $28 -1	
.C:9c99	60	  	  	RTS		
.C:9c9a	E6	29	  	INC $29	; $29 = $29 +1	
.C:9c9c	60	  	  	RTS		
########## data field positions in game						
.C:9c9d	02					
.C:9c9e	03					
.C:9c9f	00					
.C:9ca0	01		  			
###########################################################						
########## select which temple was entered						
###########################################################						
.C:9ca1	A2	00	  	LDX #$00	; 00 => X 	
.C:9ca3	A0	00	  	LDY #$00	; 00 => Y	
.C:9ca5	A5	28	  	LDA $28	; $28 => A	
.C:9ca7	DD	7A	9E	CMP $9E7A,X		
.C:9caa	D0	0E	  	BNE $9CBA		
.C:9cac	A5	29	  	LDA $29	; $29 => A	
.C:9cae	DD	7B	9E	CMP $9E7B,X		
.C:9cb1	D0	07	  	BNE $9CBA		
.C:9cb3	A5	A8	  	LDA $A8	; $A8 => A	
.C:9cb5	D9	A2	9E	CMP $9EA2,Y		
.C:9cb8	F0	09	  	BEQ $9CC3		
.C:9cba	E8	  	  	INX	; X = X +1	
.C:9cbb	E8	  	  	INX	; X = X +1	
.C:9cbc	C8	  	  	INY	; Y = Y +1	
.C:9cbd	C0	14	  	CPY #$14		
.C:9cbf	90	E4	  	BCC $9CA5		
.C:9cc1	A2	00	  	LDX #$00	; 00 => X	
.C:9cc3	BD	B6	9E	LDA $9EB6,X	;$9EB6,X => A	
.C:9cc6	85	58	  	STA $58	; A => $58	
.C:9cc8	BD	B7	9E	LDA $9EB7,X	;$9EB7,X => A	
.C:9ccb	85	59	  	STA $59	; A => $59	
.C:9ccd	4C	0F	08	JMP $080F	; jump => $080F	; jump => $0C08 => display caption
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: BT II - Healing Temples

Post by Darendor »

9ccd is where it ends? Are you certain?
Weber G
Posts: 125
Joined: Tue Dec 15, 2020 9:58 am

Re: BT II - Healing Temples

Post by Weber G »

The ML code ends at 9CCD. The whole file ends at 9FDE. But beginning with 9CCE there is just text.

The extract I made (don't consider the 'µµ', I just filled the non letters with that):

Code: Select all

9A00	A2 17 20 1B 08 20 A1 9C 20 E1 08 A0 9C A2 D0 20 	" µµ µµ µµ µµ µµ ! µµ µµ a µµ   µµ " P µµ 
9A10	06 08 20 78 08 20 87 08 C9 C5 D0 14 A6 24 BD 9D 	µµ µµ µµ µµ µµ µµ µµ µµ I E P µµ & µµ ö µµ 
9A20	9C 85 24 20 85 9C A9 00 85 2F 20 E1 08 4C 00 90 	µµ µµ µµ µµ µµ µµ ) µµ µµ µµ µµ a µµ µµ µµ µµ 
9A30	C9 C8 F0 11 C9 B0 90 DA C9 B7 B0 D6 38 E9 B0 20 	I H p µµ I 0 µµ Z I 7 0 V µµ i 0 µµ 
9A40	51 08 4C 00 9A A0 9D A2 3A 20 06 08 20 78 08 C9 	µµ µµ µµ µµ µµ   µµ " µµ µµ µµ µµ µµ µµ µµ I 
9A50	B0 90 BF C9 B7 B0 BB 38 E9 B0 0A AA BD D0 9F 85 	0 µµ ? I 7 0 ; µµ i 0 µµ * ö P µµ µµ 
9A60	9B BD D1 9F 85 9C A0 00 B1 9B F0 A6 20 E1 08 A6 	µµ ö Q µµ µµ µµ   µµ 1 µµ p & µµ a µµ & 
9A70	9B A4 9C 20 06 08 A0 3E B1 9B D0 1C A0 10 A2 00 	µµ $ µµ µµ µµ µµ   µµ 1 µµ P µµ   µµ " µµ 
9A80	B1 9B DD 64 9E D0 0E C8 E8 E0 04 90 F3 A0 3E A9 	1 µµ ] µµ µµ P µµ H h   µµ µµ s   µµ ) 
9A90	02 91 9B D0 03 4C F1 9B 48 A0 9D A2 75 20 06 08 	µµ µµ µµ P µµ µµ q µµ µµ   µµ " µµ µµ µµ µµ 
9AA0	68 0A AA BD 9D 9D 85 6E BD 9E 9D 85 6F A9 00 85 	µµ µµ * ö µµ µµ µµ µµ ö µµ µµ µµ µµ ) µµ µµ 
9AB0	63 85 64 A9 0D 85 6B A0 38 B1 9B C9 0B 90 07 A0 	µµ µµ µµ ) µµ µµ µµ   µµ 1 µµ I µµ µµ µµ   
9AC0	66 B1 9B 4C CF 9A A0 22 B1 9B D0 09 C8 B1 9B C9 	µµ 1 µµ µµ O µµ   µµ 1 µµ P µµ H 1 µµ I 
9AD0	0E B0 02 85 6B A5 6E 18 65 63 85 63 A5 6F 65 64 	µµ 0 µµ µµ µµ % µµ µµ µµ µµ µµ µµ % µµ µµ µµ 
9AE0	85 64 C6 6B D0 EF 20 30 08 A0 9D A2 AF 20 06 08 	µµ µµ F µµ P o µµ µµ µµ   µµ " / µµ µµ µµ 
9AF0	20 8D 08 90 03 4C 08 9A 84 6E 85 6F A0 00 B1 6E 	µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ   µµ 1 µµ 
9B00	F0 EE A5 9B 48 A5 9C 48 A5 6E 85 9B A5 6F 85 9C 	p n % µµ µµ % µµ µµ % µµ µµ µµ % µµ µµ µµ 
9B10	A0 24 84 8F 20 21 08 90 1B 68 85 9C 68 85 9B 20 	  µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ 
9B20	0C 08 20 0C 08 A0 9E A2 68 20 06 08 A9 09 20 1A 	µµ µµ µµ µµ µµ   µµ " µµ µµ µµ µµ ) µµ µµ µµ 
9B30	09 4C 6C 9A 20 24 08 68 85 9C 68 85 9B A0 3E B1 	µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ   µµ 1 
9B40	9B F0 61 48 A9 00 91 9B A0 4E 91 9B 68 C9 02 F0 	µµ p µµ µµ ) µµ µµ µµ   µµ µµ µµ µµ I µµ p 
9B50	0D C9 06 D0 22 A0 32 A9 00 91 9B C8 D0 24 A5 9B 	µµ I µµ P µµ   µµ ) µµ µµ µµ H P µµ % µµ 
9B60	18 69 50 85 50 A5 9C 69 00 85 51 A0 10 A2 04 B1 	µµ µµ µµ µµ µµ % µµ µµ µµ µµ µµ   µµ " µµ 1 
9B70	50 91 9B C8 CA D0 F8 A0 32 B1 9B D0 09 C8 B1 9B 	µµ µµ µµ H J P x   µµ 1 µµ P µµ H 1 µµ 
9B80	D0 04 A9 01 91 9B A0 9D A2 CE 20 06 08 A9 06 20 	P µµ ) µµ µµ µµ   µµ " N µµ µµ µµ ) µµ µµ 
9B90	1A 09 A0 9D A2 F2 20 06 08 A9 06 20 1A 09 20 48 	µµ µµ   µµ " r µµ µµ µµ ) µµ µµ µµ µµ µµ µµ 
9BA0	08 4C 08 9A A5 C9 F0 35 C6 C9 A0 20 B1 9B 85 64 	µµ µµ µµ µµ % I p µµ F I   µµ 1 µµ µµ µµ 
9BB0	A0 22 91 9B A0 21 B1 9B 85 63 A0 23 91 9B C6 63 	  µµ µµ µµ   µµ 1 µµ µµ µµ   µµ µµ µµ F µµ 
9BC0	A5 63 C9 FF D0 02 C6 64 20 6C 08 A0 14 A2 00 BD 	% µµ I µµ P µµ F µµ µµ µµ µµ   µµ " µµ ö 
9BD0	80 03 91 9B C8 E8 E0 0C 90 F5 4C 86 9B A0 30 B1 	µµ µµ µµ µµ H h   µµ µµ u µµ µµ µµ   µµ 1 
9BE0	9B 48 C8 B1 9B AA C8 68 91 9B C8 8A 91 9B 4C 86 	µµ µµ H 1 µµ * H µµ µµ µµ H µµ µµ µµ µµ µµ 
9BF0	9B A9 00 85 C9 A0 31 B1 9B C8 C8 38 F1 9B 85 6E 	µµ ) µµ µµ I   µµ 1 µµ H H µµ q µµ µµ µµ 
9C00	A0 30 B1 9B C8 C8 F1 9B 85 6F A5 6E D0 44 A5 6F 	  µµ 1 µµ H H q µµ µµ µµ % µµ P µµ % µµ 
9C10	D0 40 A0 38 B1 9B C9 0B B0 29 A0 20 B1 9B A0 22 	P µµ   µµ 1 µµ I µµ 0 µµ   µµ 1 µµ   µµ 
9C20	D1 9B F0 05 B0 0F 4C 43 9C A0 21 B1 9B A0 23 D1 	Q µµ p µµ 0 µµ µµ µµ µµ   µµ 1 µµ   µµ Q 
9C30	9B F0 10 90 0E E6 C9 A0 9E A2 35 20 06 08 A9 08 	µµ p µµ µµ µµ f I   µµ " µµ µµ µµ µµ ) µµ 
9C40	4C A1 9A A0 9D A2 56 20 06 08 A9 09 20 1A 09 4C 	µµ ! µµ   µµ " µµ µµ µµ µµ ) µµ µµ µµ µµ µµ 
9C50	08 9A A0 9E A2 07 20 06 08 A9 00 85 63 85 64 A9 	µµ µµ   µµ " µµ µµ µµ µµ ) µµ µµ µµ µµ µµ ) 
9C60	0A 18 65 63 85 63 90 02 E6 64 A5 6E 38 E9 01 85 	µµ µµ µµ µµ µµ µµ µµ µµ f µµ % µµ µµ i µµ µµ 
9C70	6E 90 0A C9 00 D0 E8 A5 6F F0 07 D0 E2 C6 6F 4C 	µµ µµ µµ I µµ P h % µµ p µµ P b F µµ µµ 
9C80	5F 9C 4C E6 9A A5 24 F0 0B C9 01 F0 0D C9 02 F0 	µµ µµ µµ f µµ % µµ p µµ I µµ p µµ I µµ p 
9C90	06 C6 29 60 E6 28 60 C6 28 60 E6 29 60 02 03 00 	µµ F µµ µµ f µµ µµ F µµ µµ f µµ µµ µµ µµ µµ 
9CA0	01 A2 00 A0 00 A5 28 DD 7A 9E D0 0E A5 29 DD 7B 	µµ " µµ   µµ % µµ ] µµ µµ P µµ % µµ ] µµ 
9CB0	9E D0 07 A5 A8 D9 A2 9E F0 09 E8 E8 C8 C0 14 90 	µµ P µµ % ( Y " µµ p µµ h h H @ µµ µµ 
9CC0	E4 A2 00 BD B6 9E 85 58 BD B7 9E 85 59 4C 0F 08 	d " µµ ö 6 µµ µµ µµ ö 7 µµ µµ µµ µµ µµ µµ 
9CD0	D7 E5 EC E3 EF ED E5 AC A0 EF E8 A0 F7 E5 E1 F2 	W e l c o m e ,   o h   w e a r 
9CE0	F9 A0 EF EE E5 F3 AC A0 F4 EF A0 EF F5 F2 A0 E8 	y   o n e s ,   t o   o u r   h 
9CF0	F5 ED E2 EC E5 A0 F4 E5 ED F0 EC E5 AE A0 C8 EF 	u m b l e   t e m p l e .   H o 
9D00	F7 A0 ED E1 F9 A0 F7 E5 A0 E8 E5 EC F0 BF 00 00 	w   m a y   w e   h e l p ? µµ µµ 
9D10	A8 C8 A9 E5 E1 EC A0 ED E5 ED E2 E5 F2 00 A8 B0 	( H ) e a l   m e m b e r µµ ( 0 
9D20	AD B6 A9 A0 D6 E9 E5 F7 A0 EF F2 00 A8 C5 A9 F8 	- 6 )   V i e w   o r µµ ( E ) x 
9D30	E9 F4 A0 F4 E5 ED F0 EC E5 FF 00 00 D7 E8 EF A0 	i t   t e m p l e µµ µµ µµ W h o   
9D40	EE E5 E5 E4 F3 A0 E8 E5 E1 EC E9 EE E7 BF A0 A3 	n e e d s   h e a l i n g ?   # 
9D50	A8 B0 AD B6 A9 DC A0 E4 EF E5 F3 A0 EE EF F4 A0 	( 0 - 6 ) €   d o e s   n o t   
9D60	F2 E5 F1 F5 E9 F2 E5 A0 E1 EE F9 A0 E8 E5 E1 EC 	r e q u i r e   a n y   h e a l 
9D70	E9 EE E7 AE FF A0 E9 F3 A0 E9 EE A0 E2 E1 E4 A0 	i n g . µµ   i s   i n   b a d   
9D80	F3 E8 E1 F0 E5 AC A0 E9 EE E4 E5 E5 E4 AE A0 C9 	s h a p e ,   i n d e e d .   I 
9D90	F4 A0 F7 E9 EC EC A0 E3 EF F3 F4 A0 FF 00 00 90 	t   w i l l   c o s t   µµ µµ µµ µµ 
9DA0	01 2C 01 84 03 60 04 DC 00 F4 01 58 02 84 03 A0 	µµ µµ µµ µµ µµ µµ µµ € µµ t µµ µµ µµ µµ µµ   
9DB0	E9 EE A0 E7 EF EC E4 AE A0 D7 E8 EF A0 F7 E9 EC 	i n   g o l d .   W h o   w i l 
9DC0	EC A0 F0 E1 F9 BF A0 A3 A8 B0 AD B6 A9 FF 00 00 	l   p a y ?   # ( 0 - 6 ) µµ µµ µµ 
9DD0	D4 E8 E5 A0 F0 F2 E9 E5 F3 F4 F3 A0 EC E1 F9 A0 	T h e   p r i e s t s   l a y   
9DE0	E8 E1 EE E4 F3 A0 EF EE A0 E8 E9 ED AE AE AE 00 	h a n d s   o n   h i m . . . µµ 
9DF0	00 FF AE AE AE E1 EE E4 A0 E8 E5 A0 E9 F3 A0 E8 	µµ µµ . . . a n d   h e   i s   h 
9E00	E5 E1 EC E5 E4 A1 FF A0 E8 E1 F3 A0 F7 EF F5 EE 	e a l e d ! µµ   h a s   w o u n 
9E10	E4 F3 A0 F7 E8 E9 E3 E8 A0 EE E5 E5 E4 A0 F4 E5 	d s   w h i c h   n e e d   t e 
9E20	EE E4 E9 EE E7 AE A0 C9 F4 A0 F7 E9 EC EC A0 E3 	n d i n g .   I t   w i l l   c 
9E30	EF F3 F4 A0 FF A0 E8 E1 F3 A0 E2 E5 E5 EE A0 E4 	o s t   µµ   h a s   b e e n   d 
9E40	F2 E1 E9 EE E5 E4 A0 EF E6 A0 EC E9 E6 E5 A0 E6 	r a i n e d   o f   l i f e   f 
9E50	EF F2 E3 E5 AE A0 C9 F4 A0 F7 E9 EC EC A0 E3 EF 	o r c e .   I t   w i l l   c o 
9E60	F3 F4 A0 FF 08 41 08 40 CE EF F4 A0 E5 EE EF F5 	s t   µµ µµ µµ µµ µµ N o t   e n o u 
9E70	E7 E8 A0 E7 EF EC E4 AE A0 FF FF FF 0E 00 0D 0D 	g h   g o l d .   µµ µµ µµ µµ µµ µµ µµ 
9E80	02 06 09 02 09 0C 01 0C 0D 08 0A 08 08 02 08 0D 	µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ 
9E90	0D 08 0C 0C 08 0C 06 03 04 0A 02 0D 0C 03 06 00 	µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ 
9EA0	06 05 00 01 01 01 02 02 02 03 03 03 03 04 05 05 	µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ 
9EB0	05 05 05 06 06 06 DE 9E E5 9E F2 9E FF 9E 0D 9F 	µµ µµ µµ µµ µµ µµ   µµ e µµ r µµ µµ µµ µµ µµ 
9EC0	1B 9F 23 9F 2C 9F 3A 9F 48 9F 54 9F 62 9F 6F 9F 	µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ µµ 
9ED0	7B 9F 87 9F 93 9F 9E 9F AB 9F B7 9F C5 9F D4 E5 	µµ µµ µµ µµ µµ µµ µµ µµ + µµ 7 µµ E µµ T e 
9EE0	ED F0 EC E5 DC D6 F2 EF EF ED A0 D4 E5 ED F0 EC 	m p l e € V r o o m   T e m p l 
9EF0	E5 DC C6 E9 F8 E5 F2 A0 D4 E5 ED F0 EC E5 DC C2 	e € F i x e r   T e m p l e € B 
9F00	F2 EF F4 E8 F2 EC F9 A0 CC EF F6 E5 DC D4 E5 ED 	r o t h r l y   L o v e € T e m 
9F10	F0 EC E5 A0 EF E6 A0 D2 EF EB DC CF EE E5 A0 C7 	p l e   o f   R o k € O n e   G 
9F20	EF E4 DC D4 E8 E5 A0 C9 A0 C1 CD DC B1 CF B1 A0 	o d € T h e   I   A M € 1 O 1   
9F30	C2 EC E5 F3 F3 E9 EE E7 F3 DC B1 CF B2 A0 C2 EC 	B l e s s i n g s € 1 O 2   B l 
9F40	E5 F3 F3 E9 EE E7 F3 DC D4 E8 E5 A0 CD E1 E4 A0 	e s s i n g s € T h e   M a d   
9F50	E7 EF E4 DC D3 E8 E1 E4 EF F7 A0 D4 E5 ED F0 EC 	g o d € S h a d o w   T e m p l 
9F60	E5 DC C2 EF E7 F5 F3 A0 D3 E8 F2 E9 EE E5 DC B1 	e € B o g u s   S h r i n e € 1 
9F70	B4 A0 CD E9 F2 E1 E3 EC E5 F3 DC C3 EF EF EC A0 	4   M i r a c l e s € C o o l   
9F80	C3 EC E5 F2 E9 E3 DC C6 F5 EE EB F9 A0 C6 F2 E9 	C l e r i c € F u n k y   F r i 
9F90	E1 F2 DC CC E9 ED E2 EF A0 D4 E9 ED E5 DC D0 E1 	a r € L i m b o   T i m e € P a 
9FA0	F2 F4 F9 A0 D3 E8 F2 E9 EE E5 DC B1 B5 A0 CD E9 	r t y   S h r i n e € 1 5   M i 
9FB0	F2 E1 E3 EC E5 F3 DC CC EF EE E5 A0 C4 E9 F3 E3 	r a c l e s € L o n e   D i s c 
9FC0	E9 F0 EC E5 DC CD E1 EE E9 E3 A0 CD EF EE EB DC 	i p l e € M a n i c   M o n k € 
9FD0	00 B8 80 B8 00 B9 80 B9 00 BA 80 BA 00 BB AF 	µµ 8 µµ 8 µµ 9 µµ 9 µµ : µµ : µµ ; / µµ 
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: BT II - Healing Temples

Post by Darendor »

Fair enough.

I've added some more of the zero page variables and JSR subroutines to my list I'm making.
Weber G
Posts: 125
Joined: Tue Dec 15, 2020 9:58 am

Re: BT II - Healing Temples

Post by Weber G »

But be careful. Many zero page variables were used for different things...
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: BT II - Healing Temples

Post by Darendor »

I don't suppose you could list the zero page variables that you know about?
Post Reply