[go: up one dir, main page]

Menu

[r97]: / psrp / tech1.txt  Maximize  Restore  History

Download this file

177 lines (125 with data), 12.0 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
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