• Login
  • Register
  • Dolphin Forums
  • Home
  • FAQ
  • Download
  • Wiki
  • Code


Dolphin, the GameCube and Wii emulator - Forums › Dolphin Emulator Discussion and Support › General Discussion v
« Previous 1 ... 24 25 26 27 28 ... 365 Next »

Need a gecko code wizard to help support french Tales of Symphonia
View New Posts | View Today's Posts

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Thread Modes
Need a gecko code wizard to help support french Tales of Symphonia
04-03-2020, 09:41 PM
#1
Kafurai
Unregistered
 
Hi there!

I hope i'll do this correctly, this is my first time on this forum. I also hope i'm in the right section.
(Forgive my english mistakes, i'm french :p)

Tl,dr: I need someone who knows how to -MAKE- gecko codes to enable 60Hz, no blur and widescreen support for PAL FRENCH Tales Of Symphonia. I got some part of the solution but I dont understand how to use it. Please help me!

Still here? Here comes the long version.
(every time ill say "code" is for gecko/AR codes)

It's been a few days I'm trying every possible way to get codes that enables 3 things for Tales Of Symphonia PAL FRENCH (GQSFAF) :

1: No blur (that kinda double image thing)

2: 60Hz

3: Wide Screen 16/9

(ill call them 60Hz,Ws,Nb.)

I searched the whole internet and never came close to a solution, I only found other french people asking the same thing over and over. (And before someone ask: I REALLY TRYED, I hate to bother people asking for help, this is basically the first time in my life I ask for help in a forum.)

For no blur, there is a solution on the wiki page,
https://wiki.dolphin-emu.org/index.php?title=Tales_of_Symphonia
but I tryed every possible way to paste the following text and it never worked, maybe I'm just stupid.
"[Video]
PH_ZNear = 0.00026
PH_ZFar = 0.00026
ProjectionHack = 1"


So I tryed other things, and the quickest way seem to be with gecko codes.

Here is the list of things I discovered so far:

1: most existing PAL codes from ToS are from some genius named Ralf, I suppose he is german and therefore, worked on the GERMAN PAL ToS version.

2: EVERY CODE I found for PAL and FRENCH PAL are from him.

3: MOST of Ralf codes works for ALL PAL versions, things like max hp, infinite gold etc... Like 99% of the codes he found for GERMAN PAL, forks for ALL PAL.

4: SOME of Ralf code does ONLY work for german version: 60Hz, Wide Screen, No Blur.

5: Since every OTHER Ralf code seem to work for ALL PAL versions, everyone assumed that his 60Hz Ws Nb worked too, but they dont. Including on the
https://forums.dolphin-emu.org/Thread-gc-ar-codes-for-16-9-21-9-60hz page. There is only "PAL" with a code that does not work for french pal.

6: There is a way to convert NTSC codes into PAL ones, I learned how to dot it and it worked for all minor things (infinite gold...) but it does not work for 60Hz Nb Ws.

7: I asked Ralf directly, he said this:
Spoiler: (Show Spoiler)

{"my ToS codes are made for the German PAL version of the game only; some of the codes may work for other regions, but this wasn't intentional.

Porting the three mentioned codes to the French version requires good game hacking skills and basic PowerPC assembly knowledge. However, below is some info about the No Blur code, the 16:9 Aspect Ratio code and the 60Hz Mode code that might be useful for porting these codes to other regions.

1. No Blur code

No blur flag check function
800186D4: 9421FF60  stwu   r1,-160(r1)
800186D8: 7C0802A6  mflr   r0
800186DC: 900100A4  stw    r0,164(r1)
800186E0: 93E1009C  stw    r31,156(r1)
800186E4: 880D8405  lbz    r0,-31739(r13)  ; no blur flag (r13 global byte variable, offset = -31739)
800186E8: 28000000  cmplwi r0,0
800186EC: 4182008C  beq-   0x80018778
800186F0: 38600000  li     r3,0
800186F4: 38800003  li     r4,3
800186F8: 38A00000  li     r5,0
800186FC: 48100261  bl     0x8011895c
80018700: C00D8414  lfs    f0,-31724(r13)
80018704: FC00001E  fctiwz f0,f0
80018708: D8010088  stfd   f0,136(r1)
8001870C: 8061008C  lwz    r3,140(r1)
80018710: 4800B195  bl     0x800238a4
80018714: 880D8405  lbz    r0,-31739(r13)
80018718: 28000001  cmplwi r0,1
8001871C: 40820030  bne-   0x8001874c


R1  (SP)   stack pointer
R2  (RTOC) global pointer to _SDA2_BASE_ (global constants, mostly floating points & strings)
R13        global pointer to _SDA_BASE_  (global variables)

R1/R2/R13 init routine
80003324: 3C208037  lis    r1,-32713
80003328: 60217460  ori    r1,r1,29792
8000332C: 3C408036  lis    r2,-32714
80003330: 6042BCA0  ori    r2,r2,48288     ; r2(RTOC): 0x8036BCA0
80003334: 3DA08036  lis    r13,-32714
80003338: 61ADAE80  ori    r13,r13,44672   ; r13: 0x8036AE80
8000333C: 4E800020  blr

No blur flag address: r13 - NoBlurFlag_offset = 0x8036AE80 - 31739 = 0x80363285

=>

No Blur code
00363285 00000001  ; set no blur flag


2. 16:9 Aspect Ratio code

SDK MTXPerspective function
801006FC: 7C0802A6  mflr   r0
80100700: 90010004  stw    r0,4(r1)
80100704: 9421FFC0  stwu   r1,-64(r1)
80100708: DBE10038  stfd   f31,56(r1)
8010070C: FFE02090  fmr    f31,f4
80100710: DBC10030  stfd   f30,48(r1)
80100714: FFC01890  fmr    f30,f3
80100718: DBA10028  stfd   f29,40(r1)
8010071C: FFA01090  fmr    f29,f2          ; f29: aspect ratio
80100720: 93E10024  stw    r31,36(r1)
80100724: 7C7F1B78  mr     r31,r3
80100728: C0A2AEF8  lfs    f5,-20744(r2)
8010072C: C002AEFC  lfs    f0,-20740(r2)
80100730: EC250072  fmuls  f1,f5,f1
80100734: EC200072  fmuls  f1,f0,f1
80100738: 4802B969  bl     0x8012c0a0
8010073C: C062AEE8  lfs    f3,-20760(r2)
80100740: EC5FF028  fsubs  f2,f31,f30
80100744: EC1F07B2  fmuls  f0,f31,f30


16:9 Aspect Ratio (Widescreen) patch

8010071C: C3A2882C  lfs    f29,-30676(r2)  ; f29: load new aspect ratio from unused r2(RTOC) global constant
803644CC: 3FE38E39                         ; new aspect ratio: 1.7777 (r2(RTOC) - 30676 = 0x803644CC, unused)

=>

16:9 Aspect Ratio (Widescreen) code
0410071C C3A2882C
043644CC 3FE38E39


3. 60Hz Mode code

SDK VIConfigure function
801064D4: 7C0802A6  mflr   r0
801064D8: 3CA0802B  lis    r5,-32725
801064DC: 90010004  stw    r0,4(r1)
801064E0: 3C808030  lis    r4,-32720
801064E4: 9421FF88  stwu   r1,-120(r1)
801064E8: BDC10030  stmw   r14,48(r1)
801064EC: 3BE30000  addi   r31,r3,0        ; r31: address of TV mode struct
801064F0: 39E50C18  addi   r15,r5,3096
801064F4: 3BA4E8A8  subi   r29,r4,5976
801064F8: 4BFF4D41  bl     0x800fb238
801064FC: 809F0000  lwz    r4,0(r31)
80106500: 3B9D0114  addi   r28,r29,276
80106504: 801D0114  lwz    r0,276(r29)
80106508: 39C30000  addi   r14,r3,0
8010650C: 548407BE  rlwinm r4,r4,0,30,31
80106510: 7C002040  cmplw  r0,r4
80106514: 41820010  beq-   0x80106524

Init TV mode function
800709D8: 9421FA50  stwu   r1,-1456(r1)
...
80070A5C: 3C808020  lis    r4,-32736
80070A60: 34643A40  addic. r3,r4,14912
80070A64: 41820024  beq-   0x80070a88
80070A68: 906D8670  stw    r3,-31120(r13)
80070A6C: 389F0034  addi   r4,r31,52
80070A70: 38A00000  li     r5,0
80070A74: 38C00013  li     r6,19          ; r6: y pos offset
...
80070AC0: 3C80802B  lis    r4,-32725
80070AC4: 38041850  addi   r0,r4,6224     ; r3: address of TV mode struct (0x802B1850)
80070AC8: 900D8670  stw    r0,-31120(r13) ; store address of TV mode struct (r13 global variable)
80070ACC: 48000028  b      0x80070af4
...
80070AF4: 806D8670  lwz    r3,-31120(r13)
80070AF8: 389F0034  addi   r4,r31,52
80070AFC: 38A00000  li     r5,0
80070B00: 38C00013  li     r6,19          ; r6: y pos offset


EURGB60_INT TV mode struct
802B188C:                            00000014
802B1890: 028001E0 01E00028 00000280 01E00000
802B18A0: 00000001 00000606 06060606 06060606
802B18B0: 06060606 06060606 06060606 06060808


Enable 60Hz Mode patch

80000088: 3FE0802B  lis    r31,-32725
8000008C: 63FF188C  ori    r31,r31,6284    ; r31: address of new TV mode struct (0x802B188C)
80000090: 93ED8670  stw    r31,-31120(r13) ; store address of new TV mode struct (r13 global variable)
80000094: 4810645C  b      0x801064f0
801064EC: 4BEF9B9C  b      0x80000088      ; (0x80000088/A0 = unused memory)

80070A74: 38C0000F  li     r6,15          ; r6: new y pos offset
80070AC4: 3804188C  addi   r0,r4,6284     ; r3: new address of TV mode struct (0x802B188C)
80070B00: 38C0000F  li     r6,15          ; r6: new y pos offset

802B1892: 01C1      ; EURGB60_INT TV mode struct patch
802B1894: 01C8      ; "
802B1898: 000F      ; "
802B189C: 01C8      ; "

=>

Enable 60Hz Mode code
04000088 3FE0802B
0400008C 63FF188C
04000090 93ED8670
04000094 4810645C
04070A74 38C0000F
04070AC4 3804188C
04070B00 38C0000F
041064EC 4BEF9B9C
022B1892 000001C1
022B1894 000001C8
022B1898 0000000F
022B189C 000001C8

Ralf" }

I dont know code enough to use any of this... So I came here to ask for help, I think that what he gave me might be enough for someone who knows about gecko codes to find the solution with ease...

So... anyone?

Thanks for reading.
Reply
04-04-2020, 12:48 AM (This post was last modified: 04-04-2020, 12:53 AM by mimimi.)
#2
mimimi Offline
Senior Member
****
Posts: 715
Threads: 1
Joined: May 2014
Sorry, can't help you, i'm not skilled enough with gecko codes for this and i don't have the french version of the game. But i can confirm, that the 60 Hz code
Code:
04000088 3fe0802b
0400008c 63ff188c
04000090 93ed8670
04000094 4810645c
04070a74 38c0000f
04070ac4 3804188c
04070b00 38c0000f
041064ec 4bef9b9c
022b1892 000001c1
022b1894 000001c8
022b1898 0000000f
022b189c 000001c8
works on the german PAL version of the game. So it's an issue with the code+game version, and not Dolphin.

An alternative for the 60 Hz mode could be patching the main.dol of the game, although usually it doesn't work when patching 50hz<->60Hz. I haven't tested this yet, and i'm not even sure i got the right patterns. But if you are able to patch stuff in the main.dol, try replacing all PAL 50 Hz mode code with the PAL 60 Hz mode code.
Code:
PAL 60 Hz
14 02 80 01 E0 01 E0 00 28 00 00 02 80 01 E0 00 00 00 00 00 01 00 00 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 08 08 0A 0C 0A 08 08

PAL 50 Hz
04 02 80 02 10 02 10 00 28 00 00 02 80 02 10 00 00 00 00 00 01 00 00 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 08 08 0A 0C 0A 08 08
That way, when the game tries to load PAL 50 Hz, it gets data for PAL 60 Hz. But like i said, usually this type of patching doesn't work for 50<->60 Hz mode as far as i know.

PS: For anyone interested, this video mode patching works on console to run NTSC games in PAL60, or the other way around. It's an issue when using the s-video or RGB cable, or at least on a Wii it's an issue.
Edit: Had to cut some stuff at the end of the patterns
Find
Reply
« Next Oldest | Next Newest »


  • View a Printable Version
  • Subscribe to this thread
Forum Jump:


Users browsing this thread: 1 Guest(s)



Powered By MyBB | Theme by Fragma

Linear Mode
Threaded Mode