I think that would make sense. Plus it needs to work with the $F688 routine, which is the biggest drawback. It will instead try to overwrite dialogue. It fixes all crashes, however. I will try and rewrite it as you have suggested. Good call!
$F56E wasn't what I thought it was. Now I'm using that address to test and bookmark Bank 0F routines. Maybe I'll see or stumble onto something.
I guess Bank 0C has the old message routines. Why? Because Bank 0C is also writing to $0215, $0216 and $0217. Also, double checking to make sure my code doesn't form "clots" -- any RTS that results in a fail.
Ha. I think it may be as simple as... say... a poorly written bank switch, with no way back.
Also, I figured I'd stop driving myself crazy with backups and just get a dropbox.
Ah... so I've almost got it to $F688 automatically. The downside is that it keeps crashing. I wonder if too many subroutines can be run in a row.
At first glance, a lot of this looks standard and has been replaced, mostly.
// Reusing this code fixes the animations and sound effects. There's something here I can use.
I changed $021A in my code, which caused the game to crash. I don't even know what $021A is, exactly. It appears to work in half-width, but it's necessary for the $F688 routine. I removed the $021A change, since $F688 alters it on its own... I also need to repeat the $F688 routine on full box.
Seriously, dumb luck.
Apparently, he likes Oasis. I need to get the cursor in the right spot for the $F688 routine, maybe reorder the script. Also, that unsightly "b" at the end of the message is some code redundancy. I assume I need to add a check for control code #$FF (End Message) before the $F688 routine.
So anyway, I did a little reordering, and...
Good, though it began with the original message code.
Good.
...Uh oh...
I wonderwalls what happened...
I conclude from this that there is no code redundancy or need to check for control codes. It's the original message code toying around with me.
Alter again... this time trying not to let the game line break if there's sufficient room on the last line.
That didn't work, though.
Bank 10 in whole. $BED7 is part of the problem. $BF00 is my routine of focus. $BF8D starts the message routine. Somewhere in this mess I will figure out where and why the cursor locks.
10:BED1:AD 15 02 LDA $0215 = #$04
10:BED4:F0 2A BEQ $BF00
10:BED6:60 RTS -----------------------------------------
10:BED7:98 TYA
10:BED8:E9 1F SBC #$1F
10:BEDA:
16 02 STA $0216 = #$02
10:BEDD:F0 11 BEQ $BEF0
10:BEDF:AD 17 02 LDA $0217 = #$00
10:BEE2:C9 02 CMP #$02
10:BEE4:90 0A BCC $BEF0
10:BEE6:AD 15 02 LDA $0215 = #$04
10:BEE9:C9 00 CMP #$00
10:BEEB:F0 03 BEQ $BEF0
10:BEED:20 88 F6 JSR $F688
10:BEF0:AC 16 02 LDY $0216 = #$02
10:BEF3:98 TYA
10:BEF4:4C C7 BF JMP $BFC7
10:BEF7:20 88 F6 JSR $F688
10:BEFA:20 6E F5 JSR $F56E
10:BEFD:4C 45 BF JMP $BF45
10:BF00:B1 EC LDA ($EC),Y @ $853B = #$60
10:BF02:C9 FA CMP #$FA
10:BF04:90 05 BCC $BF0B
10:BF06:E6 EC INC $00EC = #$40
10:BF08:EE 14 02 INC $0214 = #$FC
10:BF0B:A2 00 LDX #$00
10:BF0D:E8 INX
10:BF0E:C8 INY
10:BF0F:B1 EC LDA ($EC),Y @ $853B = #$60
10:BF11:C9 FF CMP #$FF
10:BF13:D0 F8 BNE $BF0D
10:BF15:E0 10 CPX #$10
10:BF17:B0 02 BCS $BF1B
10:BF19:60 RTS -----------------------------------------
10:BF1A:EA NOP
10:BF1B:CE 17 02 DEC $0217 = #$00
10:BF1E:CE 17 02 DEC $0217 = #$00
10:BF21:AC 16 02 LDY $0216 = #$02
10:BF24:C0 02 CPY #$02
10:BF26:90 09 BCC $BF31
10:BF28:88 DEY
10:BF29:88 DEY
10:BF2A:C0 02 CPY #$02
10:BF2C:B0 FA BCS $BF28
10:BF2E:8C 16 02 STY $0216 = #$02
10:BF31:A9 04 LDA #$04
10:BF33:
15 02 STA $0215 = #$04
10:BF36:
1B 02 STA $021B = #$04
10:BF39:B1 EC LDA ($EC),Y @ $853B = #$60
10:BF3B:20 6E F5 JSR $F56E
10:BF3E:20 88 F6 JSR $F688
10:BF41:60 RTS -----------------------------------------
10:BF42:4C 93 BF JMP $BF93
10:BF45:B1 EC LDA ($EC),Y @ $853B = #$60
10:BF47:C9 FA CMP #$FA
10:BF49:D0 14 BNE $BF5F
10:BF4B:A9 00 LDA #$00
10:BF4D:
15 02 STA $0215 = #$04
10:BF50:
16 02 STA $0216 = #$02
10:BF53:
17 02 STA $0217 = #$00
10:BF56:
1C 02 STA $021C = #$00
10:BF59:60 RTS -----------------------------------------
10:BF5A:EA NOP
10:BF5B:EA NOP
10:BF5C:EA NOP
10:BF5D:EA NOP
10:BF5E:EA NOP
10:BF5F:C9 FF CMP #$FF
10:BF61:F0 7C BEQ $BFDF
10:BF63:C9 FE CMP #$FE
10:BF65:F0 4D BEQ $BFB4
10:BF67:C9 FD CMP #$FD
10:BF69:F0 3F BEQ $BFAA
10:BF6B:C9 FC CMP #$FC
10:BF6D:F0 76 BEQ $BFE5
10:BF6F:C9 FB CMP #$FB
10:BF71:F0 7B BEQ $BFEE
10:BF73:AE 12 02 LDX $0212 = #$01
10:BF76:F0 07 BEQ $BF7F
10:BF78:48 PHA
10:BF79:A9 01 LDA #$01
10:BF7B:20 E4 D0 JSR $D0E4
10:BF7E:68 PLA
10:BF7F:20 32 F7 JSR $F732
10:BF82:AD 16 02 LDA $0216 = #$02
10:BF85:D0 05 BNE $BF8C
10:BF87:AD 17 02 LDA $0217 = #$00
10:BF8A:F0 01 BEQ $BF8D
10:BF8C:60 RTS -----------------------------------------
10:BF8D:EE 16 02 INC $0216 = #$02
10:BF90:EE 16 02 INC $0216 = #$02
10:BF93:AD 15 02 LDA $0215 = #$04
10:BF96:F0 F4 BEQ $BF8C
10:BF98:AD 13 02 LDA $0213 = #$26
10:BF9B:F0 EF BEQ $BF8C
10:BF9D:A9 01 LDA #$01
10:BF9F:
12 02 STA $0212 = #$01
10:BFA2:20 E4 D0 JSR $D0E4
10:BFA5:A9 00 LDA #$00
10:BFA7:20 25 CA JSR $CA25
10:BFAA:20 6E F5 JSR $F56E
10:BFAD:AD 16 02 LDA $0216 = #$02
10:BFB0:C9 1E CMP #$1E
10:BFB2:90 D9 BCC $BF8D
10:BFB4:AC 16 02 LDY $0216 = #$02
10:BFB7:C0 1F CPY #$1F
10:BFB9:B0 06 BCS $BFC1
10:BFBB:C8 INY
10:BFBC:C8 INY
10:BFBD:C0 1F CPY #$1F
10:BFBF:90 FA BCC $BFBB
10:BFC1:CE 15 02 DEC $0215 = #$04
10:BFC4:4C D7 BE JMP $BED7
10:BFC7:EA NOP
10:BFC8:EA NOP
10:BFC9:EA NOP
10:BFCA:AD 16 02 LDA $0216 = #$02
10:BFCD:D0 C4 BNE $BF93
10:BFCF:EE 17 02 INC $0217 = #$00
10:BFD2:EE 17 02 INC $0217 = #$00
10:BFD5:AD 17 02 LDA $0217 = #$00
10:BFD8:C9 04 CMP #$04
10:BFDA:90 B7 BCC $BF93
10:BFDC:4C 85 F6 JMP $F685
10:BFDF:A9 00 LDA #$00
10:BFE1:
13 02 STA $0213 = #$26
10:BFE4:60 RTS -----------------------------------------
10:BFE5:AD C2 04 LDA $04C2 = #$46
10:BFE8:EE 1C 02 INC $021C = #$00
10:BFEB:4C F2 F5 JMP $F5F2
10:BFEE:A9 81 LDA #$81
10:BFF0:
1C 02 STA $021C = #$00
10:BFF3:AD 37 04 LDA $0437 = #$00
10:BFF6:0A ASL
10:BFF7:0A ASL
10:BFF8:0A ASL
10:BFF9:AA TAX
10:BFFA:BD 91 F7 LDA $F791,X @ $F7A1 = #$1B
10:BFFD:4C F2 F5 JMP $F5F2
...no.
So... I'm guessing that this is a result of Line 4 containing 16 characters. On 16 characters... SBC #$1F. This alternates between odd characters (1-1F) and even characters (0-20). That means 32 characters are handled by $0216, and one line only holds 16 characters. Therefore, Lines 1 and 2 are written by $0216 if $0217 is #$00, where 3 and 4 are written by $0216 if $0217 is #$02.
So what happens if $0217 is not #$00 or #$02? Well as it turns out...
This... probably is why the problem in the above image occurs. Without it, however, the game would write incorrectly, and crash.
Judging by the information of $0217 by the dialogue's side... it looks like...
Then there's that, which should simply revert $0216 back to the beginning of odd if it's on odd, or even if it's on even.
10:BECB JMP Dialogue Routine
10:BECB:EA EA EA NOP
10:BECE:4C
BF JMP $BF8D ; JuMP to Dialogue Routine at 10:BF8D
10:BED1:AD 15 02 LDA $0215 = #$04 ; LoaD Page End Countdown to A
10:BED4:F0 2A BEQ $BF00 ; If equal to #$00, branch to PLB Checks at 0F:BF00
10:BED6:60 RTS -----------------------------------------
10:BED7 Page Post
10:BED7:98 TYA ; Transfer Y to A
10:BED8:E9 1F SBC #$1F ; SuBtract #$1F and Carry Flag from A
10:BEDA:
16 02 STA $0216 = #$02 ; STore A to Letter Position
10:BEDD:D0 11 BNE $BEF0 ; Branch if Not Equal to #$00, to Skip PLB at 10:BEF0
10:BEDF:AD 17 02 LDA $0217 = #$00 ; LoaD Line Position to A
10:BEE2:C9 04 CMP #$04 ; Is Line Position #$04?
10:BEE4:90 0A BCC $BEF0 ; If less than #$04, branch to Skip PLB at 10:BEF0
10:BEE6:AD 15 02 LDA $0215 = #$04 ; LoaD Page End Countdown to A
10:BEE9:F0 05 BEQ $BEF0 ; If equal to #$00, branch to Skip PLB at 10:BEF0
10:BEEB:EA EA NOP
10:BEED:20 88 F6 JSR $F688 ; Jump to SubRoutine Page Line Break at 0F:F688
10:BEF0 Skip PLB
10:BEF0:AC 16 02 LDY $0216 = #$02 ; LoaD Letter Position to Y
10:BEF3:98 TYA ; Transfer Y to A
10:BEF4:4C C7 BF JMP $BFC7 ; JuMP to Increase Line Position at 10:BFC7
10:BEF7:20 88 F6 JSR $F688 ; Jump to SubRoutine Page Line Break at 0F:F688
10:BEFA:20 6E F5 JSR $F56E ; Jump to SubRoutine Print Character at 0F:F56E
10:BEFD:4C 45 BF JMP $BF45 ; JuMP to Begin CC Check
10:BF00 PLB Checks
10:BF00:B1 EC LDA ($EC),Y @ $8633 = #$11 ; Load Current Letter to A at $EC+$0214 or $0216
10:BF02:C9 FA CMP #$FA ; Is Current Letter #$FA?
10:BF04:90 05 BCC $BF0B ; If less than #$FA, branch to Begin RC Check at 10:BF0B
10:BF06:E6 EC INC $00EC = #$80 ; INCrease $00EC by #$01
10:BF08:EE 14 02 INC $0214 = #$B4 ; INCrease $0214 by #$01
10:BF0B Begin RC Check
10:BF0B:A2 00 LDX #$00 ; LoaD #$00 to X
10:BF0D Remaining Characters Check
10:BF0D:E8 INX ; INcrease X by #$01
10:BF0E:C8 INY ; INcrease Y by #$01
10:BF0F:B1 EC LDA ($EC),Y @ $8633 = #$11 ; Load Current Letter to A at $EC+$0214 or $0216
10:BF11:C9 FF CMP #$FF ; Is Current Letter #$FF?
10:BF13:D0 F8 BNE $BF0D ; If not, branch to Remaining Characters Check at 10:BF0D
10:BF15:E0 10 CPX #$10 ; Is X #$10?
10:BF17:B0 01 BCS $BF1A ; If greater than or equal to #$10, branch to 10:BF1A
10:BF19:60 RTS -----------------------------------------
10:BF1A:CE 17 02 DEC $0217 = #$00 ; DECrease Line Position by #$01
10:BF1D:CE 17 02 DEC $0217 = #$00 ; DECrease Line Position by #$01
10:BF20:AC 16 02 LDY $0216 = #$02 ; LoaD Letter Position to Y
10:BF23:C0 02 CPY #$02 ; Is Letter Position #$02?
10:BF25:90 09 BCC $BF30 ; If less than #$02, branch to Letter Position Reset at 10:BF30
10:BF27 DELP
10:BF27:88 DEY ; DEcrease Letter Position by #$01
10:BF28:88 DEY ; DEcrease Letter Position by #$01
10:BF29:C0 02 CPY #$02 ; Is Letter Position #$02?
10:BF2B:B0 FA BCS $BF27 ; If greater than or equal to #$02, branch to DELP at 10:BF27
10:BF2D:8C 16 02 STY $0216 = #$02 ; STore Y to Letter Position
10:BF30 Letter Position Reset
10:BF30:A9 04 LDA #$04 ; LoaD #$04 to A
10:BF32:
15 02 STA $0215 = #$04 ; STore A to Page End Countdown
10:BF35:
1B 02 STA $021B = #$04 ; STore A to
10:BF38:B1 EC LDA ($EC),Y @ $8633 = #$11 ; Load Current Letter to A at $EC+$0214 or $0216
10:BF3A:20 6E F5 JSR $F56E ; Jump to SubRoutine Print Character at 0F:F56E
10:BF3D:20 88 F6 JSR $F688 ; Jump to SubRoutine Page Line Break at 0F:F688
10:BF40:70 89 BVS $BECB ; Branch on oVerflow flag Set to JMP Dialogue Routine at 10:BECB
10:BF42:4C 93 BF JMP $BF93 ; JuMP to Check PEC at 10:BF93
10:BF45 Begin CC (Character Code) Check
10:BF45:B1 EC LDA ($EC),Y @ $8633 = #$11 ; LoaD Current Letter to A at $EC+$0214 or $0216
10:BF47:C9 FA CMP #$FA ; Is Current Letter #$FA?
10:BF49:D0 14 BNE $BF5F ; If not, branch to Continue CC Check
10:BF4B:A9 00 LDA #$00 ; LoaD #$00 to A
10:BF4D:
15 02 STA $0215 = #$04 ; STore A to Page End Countdown
10:BF50:
16 02 STA $0216 = #$02 ; STore A to Letter Position
10:BF53:
17 02 STA $0217 = #$00 ; STore A to Line Position
10:BF56:
1C 02 STA $021C = #$00 ; STore A to
10:BF59:60 RTS -----------------------------------------
10:BF5A:EA EA EA NOP
10:BF5D:EA EA NOP
10:BF5F Continue CC Check
10:BF5F:C9 FF CMP #$FF ; Is Current Letter #$FF?
10:BF61:F0 7C BEQ $BFDF ; If so, branch to End Message
10:BF63:C9 FE CMP #$FE ; Is Current Letter #$FE?
10:BF65:F0 4D BEQ $BFB4 ; If so, branch to Line Break
10:BF67:C9 FD CMP #$FD ; Is Current Letter #$FD?
10:BF69:F0 3F BEQ $BFAA ; If so, branch to (Print) Space Branch
10:BF6B:C9 FC CMP #$FC ; Is Current Letter #$FC?
10:BF6D:F0 76 BEQ $BFE5 ; If so, branch to Name
10:BF6F:C9 FB CMP #$FB ; Is Current Letter #$FB?
10:BF71:F0 7B BEQ $BFEE ; If so, branch to Title
10:BF73:AE 12 02 LDX $0212 = #$01 ; LoaD $0212 to X
10:BF76:F0 07 BEQ $BF7F ; Is $0212 #$00? If so, branch to $0212=#$00
10:BF78:48 PHA ; PusH A
10:BF79:A9 01 LDA #$01 ; Load #$01 to A
10:BF7B:20 E4 D0 JSR $D0E4 ; Jump to SubRoutine $D0E4
10:BF7E:68 PLA ; PulL A
10:BF7F $0212=#$00
10:BF7F:20 32 F7 JSR $F732 ; Jump to SubRoutine $F732
10:BF82:AD 16 02 LDA $0216 = #$02 ; Load Letter Position to A
10:BF85:D0 05 BNE $BF8C ; Is Letter Position #$00? If not, branch to Resume Routine
10:BF87:AD 17 02 LDA $0217 = #$00 ; Load Line Position to A
10:BF8A:F0 01 BEQ $BF8D ; Is Line Position #$00? If so, branch to Dialogue Routine
10:BF8C Resume Routine
10:BF8C:60 RTS -----------------------------------------
10:BF8D Dialogue Routine
10:BF8D:EE 16 02 INC $0216 = #$02 ; Increase Letter Position by #$01
10:BF90:EE 16 02 INC $0216 = #$02 ; Increase Letter Position by #$01
10:BF93 Check PEC
10:BF93:AD 15 02 LDA $0215 = #$04 ; Load Page End Countdown to A
10:BF96:F0 F4 BEQ $BF8C ; Is Page End Countdown #$00? If so, branch to Resume Routine at 10:BF8C
10:BF98:AD 13 02 LDA $0213 = #$9F ; Load Message ID to A
10:BF9B:F0 EF BEQ $BF8C ; Is Message ID #$00? If so, branch to Resume Routine at 10:BF8C
10:BF9D:A9 01 LDA #$01 ; Load #$01 to A
10:BF9F:
12 02 STA $0212 = #$01 ; STore A to $0212
10:BFA2:20 E4 D0 JSR $D0E4 ; Jump to Dialogue SFX at 0F:D0E4
10:BFA5:A9 00 LDA #$00 ; Load #$00 to A
10:BFA7:20 25 CA JSR $CA25 ; Jump to Pause at 0F:CA25
10:BFAA (Print) Space Branch
10:BFAA:20 6E F5 JSR $F56E ; Jump to SubRoutine Print Character at 0F:F56E
10:BFAD:AD 16 02 LDA $0216 = #$02 ; LoaD Letter Position to A
10:BFB0:C9 1E CMP #$1E ; Is Letter Position #$1E?
10:BFB2:90 D9 BCC $BF8D ; If less than #$1E, branch to Dialogue Routine at 10:BF8D
10:BFB4 Line Break
10:BFB4:AC 16 02 LDY $0216 = #$02 ; Load Letter Position to Y
10:BFB7:C0 1F CPY #$1F ; Is Letter Position #$1F?
10:BFB9:B0 06 BCS $BFC1 ; If greater than or equal to #$1F, branch to Page Countdown at 10:BFC1
10:BFBB Letter Increase
10:BFBB:C8 INY ; INcrease (Y) Letter Position by #$01
10:BFBC:C8 INY ; INcrease (Y) Letter Position by #$01
10:BFBD:C0 1F CPY #$1F ; Is Letter Position #$1F?
10:BFBF:90 FA BCC $BFBB ; If less than #$1F, branch to Letter Increase at 10:BFBB
10:BFC1 Page Countdown
10:BFC1:CE 15 02 DEC $0215 = #$04 ; Decrease Page End Countdown by #$01
10:BFC4:4C D7 BE JMP $BED7 ; JuMP to Page Post at 10:BED7
10:BFC7 Increase Line Position
10:BFC7:EA EA EA NOP
10:BFCA:AD 16 02 LDA $0216 = #$02 ; LoaD Letter Position to A
10:BFCD:D0 C4 BNE $BF93 ; Is Letter Position #$00? If not, branch to Check PEC
10:BFCF:EE 17 02 INC $0217 = #$00 ; INCrease Line Position by #$01
10:BFD2:EE 17 02 INC $0217 = #$00 ; INCrease Line Position by #$01
10:BFD5:AD 17 02 LDA $0217 = #$00 ; LoaD Line Position to A
10:BFD8:C9 04 CMP #$04 ; Is Line Position #$04
10:BFDA:90 B7 BCC $BF93 ; If less than #$04, branch to Check PEC
10:BFDC:4C 85 F6 JMP $F685 ; JuMP to Bank Switch PLB at 0F:F685
10:BFDF End Message
10:BFDF:A9 00 LDA #$00 ; LoaD #$00 to A
10:BFE1:
13 02 STA $0213 = #$9F ; STore A to Message ID
10:BFE4:60 RTS -----------------------------------------
10:BFE5 Name
10:BFE5:AD C2 04 LDA $04C2 = #$46
10:BFE8:EE 1C 02 INC $021C = #$00
10:BFEB:4C F2 F5 JMP $F5F2
10:BFEE Title
10:BFEE:A9 81 LDA #$81
10:BFF0:
1C 02 STA $021C = #$00
10:BFF3:AD 37 04 LDA $0437 = #$0D
10:BFF6:0A ASL
10:BFF7:0A ASL
10:BFF8:0A ASL
10:BFF9:AA TAX
10:BFFA:BD 91 F7 LDA $F791,X @ $F7A1 = #$1B
10:BFFD:4C F2 F5 JMP $F5F2
0F:F541 Clear Message Box, Begin Dialogue Routine
0F:F541:A9 00 LDA #$00
0F:F543:
1A 02 STA $021A = #$00
0F:F546:
16 02 STA $0216 = #$00
0F:F549:
17 02 STA $0217 = #$00
0F:F54C:
1C 02 STA $021C = #$00
0F:F54F:A9 04 LDA #$04
0F:F551:
15 02 STA $0215 = #$00
0F:F554:
1B 02 STA $021B = #$00
0F:F557:4C 0A F7 JMP $F70A
0F:F55A:AD 00 01 LDA $0100 = #$0E
0F:F55D:48 PHA
0F:F55E:A2 10 LDX #$10
0F:F560:20 1A CC JSR $CC1A
0F:F563:E6 E1 INC $00E1 = #$00
0F:F565:
12 02 STA $0212 = #$00
0F:F568:20 83 F5 JSR $F583
0F:F56B:4C 4D F4 JMP $F44D
0F:F56E:AD 00 01 LDA $0100 = #$0E
0F:F571:48 PHA
0F:F572:A2 10 LDX #$10
0F:F574:20 1A CC JSR $CC1A
0F:F577:A9 00 LDA #$00
0F:F579:
12 02 STA $0212 = #$00
0F:F57C:20 93 F5 JSR $F593
0F:F57F:4C 4D F4 JMP $F44D
0F:F582:60 RTS -----------------------------------------
0F:F583:AD 13 02 LDA $0213 = #$00
0F:F586:F0 FA BEQ $F582
0F:F588:AD 15 02 LDA $0215 = #$00
0F:F58B:F0 F5 BEQ $F582
0F:F58D:A5 E1 LDA $00E1 = #$00
0F:F58F:29 04 AND #$04
0F:F591:D0 EF BNE $F582
0F:F593:AD 1C 02 LDA $021C = #$00
0F:F596:F0 2F BEQ $F5C7
0F:F598:30 16 BMI $F5B0
0F:F59A:C9 04 CMP #$04
0F:F59C:F0 0B BEQ $F5A9
0F:F59E:AA TAX
0F:F59F:BD C2 04 LDA $04C2,X @ $04D0 = #$00
0F:F5A2:EE 1C 02 INC $021C = #$00
0F:F5A5:C9 FF CMP #$FF
0F:F5A7:D0 49 BNE $F5F2
0F:F5A9:A9 00 LDA #$00
0F:F5AB:
1C 02 STA $021C = #$00
0F:F5AE:F0 17 BEQ $F5C7
0F:F5B0:C9 88 CMP #$88
0F:F5B2:F0 F5 BEQ $F5A9
0F:F5B4:29 07 AND #$07
0F:F5B6:85 EC STA $00EC = #$3E
0F:F5B8:AD 37 04 LDA $0437 = #$00
0F:F5BB:0A ASL
0F:F5BC:0A ASL
0F:F5BD:0A ASL
0F:F5BE:05 EC ORA $00EC = #$3E
0F:F5C0:AA TAX
0F:F5C1:BD 91 F7 LDA $F791,X @ $F79F = #$0D
0F:F5C4:4C A2 F5 JMP $F5A2
0F:F5C7:AD 18 02 LDA $0218 = #$00
0F:F5CA:85 EC STA $00EC = #$3E
0F:F5CC:AD 19 02 LDA $0219 = #$00
0F:F5CF:85 ED STA $00ED = #$FD
0F:F5D1:AC 14 02 LDY $0214 = #$B4
0F:F5D4:EE 14 02 INC $0214 = #$B4
0F:F5D7:D0 03 BNE $F5DC
0F:F5D9:EE 19 02 INC $0219 = #$A9
0F:F5DC:4C 45 BF JMP $BF45
0F:F5EF:4C 4D F4 JMP $F44D
0F:F5F2:F0 5D BEQ $F651
0F:F5F4:4C 73 BF JMP $BF73
0F:F44D:68 PLA
0F:F44E:AA TAX
0F:F44F:20 1A CC JSR $CC1A
0F:F452:60 RTS -----------------------------------------
0F:F651:A9 81 LDA #$81
0F:F653:
1C 02 STA $021C = #$00
0F:F656:AD 37 04 LDA $0437 = #$00
0F:F659:0A ASL
0F:F65A:0A ASL
0F:F65B:0A ASL
0F:F65C:AA TAX
0F:F65D:BD 91 F7 LDA $F791,X @ $F79F = #$0D
0F:F660:4C F2 F5 JMP $F5F2
0F:F663:85 EC STA $00EC = #$3E
0F:F665:A9 00 LDA #$00
0F:F667:06 EC ASL $00EC = #$3E
0F:F669:2A ROL
0F:F66A:06 EC ASL $00EC = #$3E
0F:F66C:2A ROL
0F:F66D:06 EC ASL $00EC = #$3E
0F:F66F:2A ROL
0F:F670:06 EC ASL $00EC = #$3E
0F:F672:2A ROL
0F:F673:06 EC ASL $00EC = #$3E
0F:F675:2A ROL
0F:F676:85 ED STA $00ED = #$FD
0F:F678:A5 EC LDA $00EC = #$3E
0F:F67A:69 00 ADC #$00
0F:F67C:85 EC STA $00EC = #$3E
0F:F67E:A5 ED LDA $00ED = #$FD
0F:F680:69 80 ADC #$80
0F:F682:85 ED STA $00ED = #$FD
0F:F684:60 RTS -----------------------------------------
0F:CA25 Pause
0F:CA25:A9 00 LDA #$00
0F:CA27:85 10 STA $0010 = #$00
>0F:CA29:A5 10 LDA $0010 = #$00
0F:CA2B:F0 FC BEQ $CA29
0F:CA2D:60 RTS -----------------------------------------
0F:D0E4 Dialogue SFX
0F:D0E4:
36 04 STA $0436 = #$00
0F:D0E7:8A TXA
0F:D0E8:48 PHA
0F:D0E9:98 TYA
0F:D0EA:48 PHA
0F:D0EB:AD 36 04 LDA $0436 = #$00
0F:D0EE:20 6F F3 JSR $F36F
0F:D0F1:68 PLA
0F:D0F2:A8 TAY
0F:D0F3:68 PLA
0F:D0F4:AA TAX
0F:D0F5:60 RTS -----------------------------------------
0F:F685 Bank Switch PLB
0F:F685:4C DF F5 JMP $F5DF ; JuMP to 0F:F5DF
0F:F5DF:AD 00 01 LDA $0100 = #$0E ; LoaD Bank to A
0F:F5E2:C9 10 CMP #$10 ; Is Bank #$10?
0F:F5E4:F0 06 BEQ $F5EC : If so, branch to End Bank Switch at 0F:F5EC
0F:F5E6:48 PHA ; PusH A
0F:F5E7:A2 10 LDX #$10 ; LoaD #$10 to X
0F:F5E9:20 1A CC JSR $CC1A ; Jump to SubRoutine Bank Switch at 0F:CC1A
0F:F5EC End Bank Switch
0F:F5EC:20 00 BF JSR $BF00 ; JuMP to PLB Checks at 10:BF00
0F:F688 Page Line Break
0F:F688:AD 08 02 LDA $0208 = #$00
0F:F68B:18 CLC
0F:F68C:69 02 ADC #$02
0F:F68E:85 EA STA $00EA = #$00
0F:F690:AD 09 02 LDA $0209 = #$00
0F:F693:18 CLC
0F:F694:69 02 ADC #$02
0F:F696:85 EB STA $00EB = #$00
0F:F698:20 CC F8 JSR $F8CC
0F:F69B:AE 1A 02 LDX $021A = #$00
0F:F69E:20 E8 F6 JSR $F6E8
0F:F6A1:20 E8 F6 JSR $F6E8
0F:F6A4:20 E8 F6 JSR $F6E8
0F:F6A7:A9 00 LDA #$00
0F:F6A9:A0 10 LDY #$10
0F:F6AB:20 12 F9 JSR $F912
0F:F6AE:AE 1A 02 LDX $021A = #$00
0F:F6B1:BD 2A F7 LDA $F72A,X @ $F738 = #$E9
0F:F6B4:85 E8 STA $00E8 = #$C0
0F:F6B6:BD 2E F7 LDA $F72E,X @ $F73C = #$0A
0F:F6B9:85 E9 STA $00E9 = #$23
0F:F6BB:A2 10 LDX #$10
0F:F6BD:8A TXA
0F:F6BE:48 PHA
0F:F6BF:A9 00 LDA #$00
0F:F6C1:A0 10 LDY #$10
0F:F6C3:20 12 F9 JSR $F912
0F:F6C6:20 EE F8 JSR $F8EE
0F:F6C9:68 PLA
0F:F6CA:AA TAX
0C:9D8D:AD 15 02 LDA $0215 = #$04
0C:9D90:D0 F4 BNE $9D86
0C:9D92:20 D9 9D JSR $9DD9
0C:9D95:A5 19 LDA $0019 = #$80
0C:9D97:10 ED BPL $9D86
0C:9D99:A9 04 LDA #$04
0C:9D9B:
15 02 STA $0215 = #$04
0C:9D9E:A9 04 LDA #$04
>0C:9DA0:
1B 02 STA $021B = #$04
0C:9DA3:20 41 F5 JSR $F541
0C:9DA6:18 CLC
0C:9DA7:A9 01 LDA #$01
0C:9DA9:60 RTS -----------------------------------------
That's most dialogue routine stuff across Banks 10, 0F, and 0C, with Bank 10 in plain English.