Gdyby ktoś chciał się pobawić razem ze mną, oto cała specyfikacja tekstowa, jaką znam:
Zdumpowaną całą pamięć podczas jednej za scen możecie znaleźć tutaj (24 MB po rozpakowaniu):
CC memdump
Teksty są w sekcjach oznaczonych jako "MBD", wystarczy takie literki wyszukać w hexedytorze. W miejscach tych trudno "na oko" odczytać co to za konkretne teksty, ale mam już w miarę pełną tablicę:
Kod: Zaznacz cały
01000000=<STRING>\n
40020000=<NL>\n
40030000=<UNK1>
40040000=<END>\n\n
40050001=<M-CHOICE1>
40050002=<M-CHOICE2>
40050003=<M-CHOICE3>
40050004=<M-CHOICE4>
40050005=<M-CHOICE5>
40050006=<M-CHOICE6>
40050007=<M-CHOICE7>
40050008=<M-CHOICE8>
40060000=<CROSS-PAD>
40070000=<CROSS-SQUARE>
402B0000=<VAR1>
402C0000=<VAR2>
402D0000=<VAR3>
40110000=<VAR4>
40120000=<VAR5>
4D424400=<MDB>
40100000=<CHOICE1>
40050101=<CHOICE2>
40360000=<FUNCTION1>
80000000=A
80000100=B
80000200=C
80000300=D
80000400=E
80000500=F
80000600=G
80000700=H
80000800=I
80000900=J
80000A00=K
80000B00=L
80000C00=M
80000D00=N
80000E00=O
80000F00=P
80001000=Q
80001100=R
80001200=S
80001300=T
80001400=U
80001500=V
80001600=W
80001700=X
80001800=Y
80001900=Z
80001A00=a
80001B00=b
80001C00=c
80001D00=d
80001E00=e
80001F00=f
80002000=g
80002100=h
80002200=i
80002300=j
80002400=k
80002500=l
80002600=m
80002700=n
80002800=o
80002900=p
80002A00=q
80002B00=r
80002C00=s
80002D00=t
80002E00=u
80002F00=v
80003000=w
80003100=x
80003200=y
80003300=z
80003400=0
80003500=1
80003600=2
80003700=3
80003800=4
80003900=5
80003A00=6
80003B00=7
80003C00=8
80003D00=9
80003E00=!
80003F00=?
80004000=
80004100="
80004200='
80004300=,
80004400=.
80004500=:
80004600=;
80004700=-[hyph]
80004800=/
80004900=(
80004A00=)
80004B00=$
80004C00=<
80004D00=>
80004E00=%
80004F00=[
80005000=]
80005100=YEN
80005200=@
80005300=#
80005400=_
80005500=|
80005600=^
80005700=°
80005800=-[minus]
80005900=+
80005A00==
000000000C000000=<0TEXT>
010000000C000000=<1TEXT>
020000000C000000=<2TEXT>
030000000C000000=<3TEXT>
040000000C000000=<4TEXT>
050000000C000000=<5TEXT>
060000000C000000=<6TEXT>
070000000C000000=<7TEXT>
080000000C000000=<8TEXT>
090000000C000000=<9TEXT>
0A0000000C000000=<10TEXT>
0B0000000C000000=<11TEXT>
0C0000000C000000=<12TEXT>
0D0000000C000000=<13TEXT>
0E0000000C000000=<14TEXT>
0F0000000C000000=<15TEXT>
100000000C000000=<16TEXT>
110000000C000000=<17TEXT>
120000000C000000=<18TEXT>
130000000C000000=<19TEXT>
140000000C000000=<20TEXT>
150000000C000000=<21TEXT>
160000000C000000=<22TEXT>
170000000C000000=<23TEXT>
180000000C000000=<24TEXT>
Np. "100000000C000000", czyli <10TEXT> oznacza, że w danym wyrażeniu pojawi się 16 znaków. Ale niestety nie pełni to funkcji pointerów.
Wyszukując "MBD" w memdumpie, pierwszy można znaleźć przy 0x397B40. Tuż przed nim (0x397B00) są pointery - prościutkie, łatwiejszych chyba nie ma ;)
To samo dzieje jest przy drugiej sekcji MBD (0x397F40) - również są pointery, luzik. Przy trzeciej sekcji MBD - 0x398300, sytuacja się powtarza... i to by był koniec przyjemności. Te trzy sekcje MBD pojawiają się w pamięci konsoli zawsze i zawsze w tych samych adresach, po prostu są tam stałe wyrażenia, możliwe do wykorzystania niemalże w każdym momencie gry.
Następne sekcje są przy 0x966D10, 0x979D30, 0x9C8570 i 0xA81580. Ich ilość i konkretny adres się zmienia z każdą sceną. Te MBD już pointerów "przed sobą" nie mają, i to tych pointerów szukam już od tygodnia :P
Przykładowo dla MBD w 0xA81580, powinny one "teoretycznie" (gdyby przyjąć taką samą zasadę jak w przypadku pierwszych trzech - czyli licząc od początku sekcji MBD) tak: 04 00 00 00, 6C 00 00 00, 20 01 00 00, 94 01 00 00, itd.
Inne przydatne informacje: adres w pamięci konsoli zaczyna się od 0x8800000; znalazłem w niektórych miejscach pointery do poszczególnych miejsc w pamięci, czyli należy od znalezionego adresu odjąć "0x8800000", aby go znaleźć w pliku ze zdumpowaną pamięcią. Może kombinując z tym, coś jeszcze można uzyskać :P
Czy ktoś z Was ma jakiś pomysł, w jaki sposób jeszcze szukać pointerów? :P