[PSP] Pointery w Crisis Core

Wszelkie kwestie techniczne.
Regulamin forum
1. W miarę możliwości prosimy o załączanie plików przez nasze forum, nie na zewnętrznych serwerach. Pliki nie znikną wtedy po upływie pewnego czasu. 2. Jeśli chcecie uzyskać pomoc przy rozpracowaniu plików (np. z tekstem, czcionką) załączajcie je do postów - nie każdy przecież posiada tłumaczoną przez Was grę.
Awatar użytkownika
Robin
Posty: 300
Rejestracja: 19 maja 2008, o 10:04
Grupa: CosmoFF
Kontakt:

[PSP] Pointery w Crisis Core

Postautor: Robin » 27 sty 2010, o 00:12

Od jakiegoś tygodnia szukam pointerów w Crisis Core i nie mogę dać sobie z tym rady :P
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>
(itd...)

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
www.balamb.pl
Smrtka je tradiční personifikace smrti, zpodobněná jako kostlivec s kosou, často bývá zobrazována v černém hábitu.

Wróć do „Technikalia”



Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości