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