1. Working through the script storage
; Grab source tile
[003510] 3510 7E LD A,(HL) AF=7C80 BC=0040 DE=7C4C HL=B8F7 SP=CAF2 IX=B8AF IY=C400 P0=00000 P1=04000 P2=08000 [ROM]
[003511] 3511 87 ADD A,A AF=1680 BC=0040 DE=7C4C HL=B8F7 SP=CAF2 IX=B8AF IY=C400 P0=00000 P1=04000 P2=08000 [ROM]
; Finds the actual 2-byte NT output values
[003512] 3512 01 01 80 LD BC,8001h AF=2C28 BC=0040 DE=7C4C HL=B8F7 SP=CAF2 IX=B8AF IY=C400 P0=00000 P1=04000 P2=08000 [ROM]
[003515] 3515 81 ADD A,C AF=2C28 BC=8001 DE=7C4C HL=B8F7 SP=CAF2 IX=B8AF IY=C400 P0=00000 P1=04000 P2=08000 [ROM]
[003516] 3516 4F LD C,A AF=2D28 BC=8001 DE=7C4C HL=B8F7 SP=CAF2 IX=B8AF IY=C400 P0=00000 P1=04000 P2=08000 [ROM]
[003517] 3517 88 ADC A,B AF=2D28 BC=802D DE=7C4C HL=B8F7 SP=CAF2 IX=B8AF IY=C400 P0=00000 P1=04000 P2=08000 [ROM]
[003518] 3518 91 SUB C AF=ADA8 BC=802D DE=7C4C HL=B8F7 SP=CAF2 IX=B8AF IY=C400 P0=00000 P1=04000 P2=08000 [ROM]
[003519] 3519 47 LD B,A AF=8082 BC=802D DE=7C4C HL=B8F7 SP=CAF2 IX=B8AF IY=C400 P0=00000 P1=04000 P2=08000 [ROM]
[00351A] 351a 0A LD A,(BC) AF=8082 BC=802D DE=7C4C HL=B8F7 SP=CAF2 IX=B8AF IY=C400 P0=00000 P1=04000 P2=08000 [ROM]
[00351B] 351b D3 BE OUT (BEh),A AF=E082 BC=802D DE=7C4C HL=B8F7 SP=CAF2 IX=B8AF IY=C400 P0=00000 P1=04000 P2=08000 [ROM]
Note that source is in ROM (page 2).
The OUT byte has the value for the second screen of cut-scene text.
Note the format: 2-byte raw NT tiles. But this is a tile lookup.
We find the source string at ROM $B8F7. Not encoded.
; ________________________________________________________________
[004BBA] 4bba 21 1C 00 LD HL,001Ch AF=BA00 BC=0008 DE=49D1 HL=4BBA SP=CAFA IX=C880 IY=C800 V P0=00000 P1=04000 P2=0C000 [ROM]
[004BBD] 4bbd C3 BA 59 JP 59BAh AF=BA00 BC=0008 DE=49D1 HL=001C SP=CAFA IX=C880 IY=C800 V P0=00000 P1=04000 P2=0C000 [ROM]
; ---------------------------------------------------------------
; Find lookup string
[0059BA] 59ba 3E 02 LD A,02h AF=9400 BC=0008 DE=49D1 HL=0018 SP=CAFA IX=C880 IY=C800 V P0=00000 P1=04000 P2=0C000 [ROM]
[0059BC] 59bc 32 FF FF LD (FFFFh),A AF=0200 BC=0008 DE=49D1 HL=0018 SP=CAFA IX=C880 IY=C800 V P0=00000 P1=04000 P2=0C000 [ROM]
; DE = base text bank
; HL = index offset
[0059BF] 59bf 11 B0 80 LD DE,80B0h AF=0200 BC=0008 DE=49D1 HL=0018 SP=CAFA IX=C880 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[0059C2] 59c2 19 ADD HL,DE AF=0200 BC=0008 DE=80B0 HL=0018 SP=CAFA IX=C880 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[0059C3] 59c3 7E LD A,(HL) AF=0200 BC=0008 DE=80B0 HL=80C8 SP=CAFA IX=C880 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[0059C4] 59c4 23 INC HL AF=BE00 BC=0008 DE=80B0 HL=80C8 SP=CAFA IX=C880 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[0059C5] 59c5 66 LD H,(HL) AF=BE00 BC=0008 DE=80B0 HL=80C9 SP=CAFA IX=C880 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[0059C6] 59c6 6F LD L,A AF=BE00 BC=0008 DE=80B0 HL=84C9 SP=CAFA IX=C880 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[0059C7] 59c7 C3 3A 33 JP 333Ah AF=BE00 BC=0008 DE=80B0 HL=84BE SP=CAFA IX=C880 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
; ----------------------------------------------------------
; Normal narrative handler
[00333A] 333a 3E 02 LD A,02h AF=BE00 BC=0008 DE=80B0 HL=84BE SP=CAFA IX=C880 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[00333C] 333c 32 FF FF LD (FFFFh),A AF=0200 BC=0008 DE=80B0 HL=84BE SP=CAFA IX=C880 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[00333F] 333f 3A D3 C2 LD A,(C2D3h) AF=02BB BC=0000 DE=D601 HL=B071 SP=CAFA IX=C450 IY=C900 P0=00000 P1=04000 P2=08000 [ROM]
[003342] 3342 B7 OR A AF=00BB BC=0000 DE=D601 HL=B071 SP=CAFA IX=C450 IY=C900 P0=00000 P1=04000 P2=08000 [ROM]
[003343] 3343 C2 36 33 JP NZ,3336h AF=0044 BC=0000 DE=D601 HL=B071 SP=CAFA IX=C450 IY=C900 P0=00000 P1=04000 P2=08000 [ROM]
...
; VRAM / Window width
[00335E] 335e E1 POP HL AF=0244 BC=0028 DE=7E0C HL=B6DF SP=CAF6 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[00335F] 335f 11 CE 7C LD DE,7CCEh AF=0244 BC=0028 DE=7E0C HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[003362] 3362 01 00 12 LD BC,1200h AF=0244 BC=0028 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
; Load script byte
[003365] 3365 7E LD A,(HL) AF=0244 BC=1200 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[003366] 3366 FE 58 CP 58h AF=4F44 BC=1200 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[003368] 3368 D2 81 2E JP NC,2E81h AF=4FA3 BC=1200 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[00336B] 336b FE 56 CP 56h AF=4FA3 BC=1200 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[00336D] 336d C8 RET Z AF=4FAB BC=1200 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[00336E] 336e FE 57 CP 57h AF=4FAB BC=1200 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[003370] 3370 CA 8F 2E JP Z,2E8Fh AF=4FAB BC=1200 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[003373] 3373 FE 55 CP 55h AF=4FAB BC=1200 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[003375] 3375 20 06 JR NZ,337Dh AF=4FAB BC=1200 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[00337D] 337d FE 53 CP 53h AF=4FAB BC=1200 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[00337F] 337f 20 12 JR NZ,3393h AF=4FAB BC=1200 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[003393] 3393 FE 54 CP 54h AF=4FAB BC=1200 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[003395] 3395 20 0F JR NZ,33A6h AF=4FAB BC=1200 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[0033A6] 33a6 FE 4F CP 4Fh AF=4FAB BC=1200 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[0033A8] 33a8 20 1A JR NZ,33C4h AF=4F42 BC=1200 DE=7CCE HL=AF71 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[0033C4] 33c4 FE 50 CP 50h AF=1A9B BC=0F00 DE=7CD4 HL=AF72 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[0033C6] 33c6 20 0E JR NZ,33D6h AF=1A8B BC=0F00 DE=7CD4 HL=AF72 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[0033D6] 33d6 FE 51 CP 51h AF=1A8B BC=0F00 DE=7CD4 HL=AF72 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[0033D8] 33d8 20 1A JR NZ,33F4h AF=1A8B BC=0F00 DE=7CD4 HL=AF72 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[0033F4] 33f4 FE 52 CP 52h AF=1A8B BC=0F00 DE=7CD4 HL=AF72 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[0033F6] 33f6 20 5F JR NZ,3457h AF=1A8B BC=0F00 DE=7CD4 HL=AF72 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
; Update NT and process again
[003457] 3457 CD F2 34 CALL 34F2h AF=1A8B BC=0F00 DE=7CD4 HL=AF72 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
[00345A] 345a C3 65 33 JP 3365h AF=000A BC=0E00 DE=7CD6 HL=AF73 SP=CAF8 IX=C430 IY=C800 V P0=00000 P1=04000 P2=08000 [ROM]
; _________________________________________________________________
[0045EF] 45ef 21 BF B8 LD HL,B8BFh AF=0044 BC=0000 DE=7C00 HL=1089 SP=CAFC IX=B8AF IY=C400 V P0=00000 P1=04000 P2=60000 [ROM]
[0045F2] 45f2 CD A5 34 CALL 34A5h AF=0044 BC=0000 DE=7C00 HL=B8BF SP=CAFC IX=B8AF IY=C400 V P0=00000 P1=04000 P2=60000 [ROM]
; ---------------------------------------------------------------
; Cutscene narrative handler
; Page swap
[0034A5] 34a5 3E 02 LD A,02h AF=0044 BC=0000 DE=7C00 HL=B8BF SP=CAFA IX=B8AF IY=C400 V P0=00000 P1=04000 P2=60000 [ROM]
[0034A7] 34a7 32 FF FF LD (FFFFh),A AF=0244 BC=0000 DE=7C00 HL=B8BF SP=CAFA IX=B8AF IY=C400 V P0=00000 P1=04000 P2=60000 [ROM]
[0034AA] 34aa 11 0C 7C LD DE,7C0Ch AF=0244 BC=0000 DE=7C00 HL=B8BF SP=CAFA IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
[0034AD] 34ad 01 00 00 LD BC,0000h AF=0244 BC=0000 DE=7C0C HL=B8BF SP=CAFA IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
; Loop point
[0034B0] 34b0 D5 PUSH DE AF=0244 BC=0000 DE=7C0C HL=B8BF SP=CAFA IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
; Update NT
[0034B1] 34b1 CD F2 34 CALL 34F2h AF=0242 BC=0000 DE=7C0C HL=B8F7 SP=CAF8 IX=B8AF IY=C400 P0=00000 P1=04000 P2=08000 [ROM]
; Load narrative byte
[0034B4] 34b4 7E LD A,(HL) AF=00BA BC=FF00 DE=7C0E HL=B8F8 SP=CAF8 IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
; Script handling
[0034B5] 34b5 FE 57 CP 57h AF=02BA BC=FF00 DE=7C0E HL=B8F8 SP=CAF8 IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
[0034B7] 34b7 28 34 JR Z,34EDh AF=02BB BC=FF00 DE=7C0E HL=B8F8 SP=CAF8 IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
[0034B9] 34b9 FE 58 CP 58h AF=02BB BC=FF00 DE=7C0E HL=B8F8 SP=CAF8 IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
[0034BB] 34bb 28 2B JR Z,34E8h AF=02BB BC=FF00 DE=7C0E HL=B8F8 SP=CAF8 IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
[0034BD] 34bd FE 55 CP 55h AF=02BB BC=FF00 DE=7C0E HL=B8F8 SP=CAF8 IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
[0034BF] 34bf 28 0F JR Z,34D0h AF=02BB BC=FF00 DE=7C0E HL=B8F8 SP=CAF8 IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
[0034C1] 34c1 FE 54 CP 54h AF=02BB BC=FF00 DE=7C0E HL=B8F8 SP=CAF8 IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
[0034C3] 34c3 20 EC JR NZ,34B1h AF=02BB BC=FF00 DE=7C0E HL=B8F8 SP=CAF8 IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
; Newline function
[0034C5] 34c5 23 INC HL AF=5442 BC=EF00 DE=7C2E HL=B8D0 SP=CAF8 IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
[0034C6] 34c6 EB EX DE,HL AF=5442 BC=EF00 DE=7C2E HL=B8D1 SP=CAF8 IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
[0034C7] 34c7 E1 POP HL AF=5442 BC=EF00 DE=B8D1 HL=7C2E SP=CAF8 IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
[0034C8] 34c8 01 80 00 LD BC,0080h AF=5442 BC=EF00 DE=B8D1 HL=7C0C SP=CAFA IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
[0034CB] 34cb 09 ADD HL,BC AF=5442 BC=0080 DE=B8D1 HL=7C0C SP=CAFA IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
[0034CC] 34cc EB EX DE,HL AF=5440 BC=0080 DE=B8D1 HL=7C8C SP=CAFA IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
[0034CD] 34cd C3 B0 34 JP 34B0h AF=5440 BC=0080 DE=7C8C HL=B8D1 SP=CAFA IX=B8AF IY=C400 V P0=00000 P1=04000 P2=08000 [ROM]
; ___________________________________________________________________
Text banks:
1. $80B2-835B (table)
$835C-AAD8 (data)
2. $AAD9-BD93 (misc)
3. $BD94-BF9B (items)
Codes:
$4F = player
$50 = monster
$51 = item
$52 = number
$53 = ?
$54 = newline
$55 = wait more
$56 = end-of-string (*)
$57 = delay (*)
$58 = wait (*)
Custom:
$59 = post-length hint
$5A = use indefinite article
$5B = use suffix
(*) denotes string termination condition