Re: Beta Technical Demonstration - Translation without Hexing the EXE
I already said to you
Quote:
Originally Posted by lelejau
it just closes when I "born" in the city.
Even before it finishs loading (after I choose a character), the game just close.
My *.lng doesnt have anything about skills descriptions, do you think it might be this? Not having a string to patch causes the game to crash?
Re: Beta Technical Demonstration - Translation without Hexing the EXE
I don't think so, as you could have a blank .lng file and it would (and does) work fine.
Re: Beta Technical Demonstration - Translation without Hexing the EXE
Re: Beta Technical Demonstration - Translation without Hexing the EXE
Quote:
Originally Posted by
lelejau
and what do we do now ?
How about running game from debugger and telling where it crash?
You said that
Quote:
Originally Posted by
lelejau
There isnt enough space to make these modifications:
Label2
mov dword ptr [eax+31365E4],1
call subStrCpy
Are you sure that you did not something wrong there?
Maybe JMP to new section do code and jump back.
Re: Beta Technical Demonstration - Translation without Hexing the EXE
I'm trying with bob's game, not mine.
---------- Post added at 10:34 PM ---------- Previous post was at 10:30 PM ----------
the crash is on
005A2FB2 |. F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>
It gives me Access violation when writing to [7E36A8AD].
The same thing happened in my attempt to "copy" what you've did. Well, I guess it wasnt my "noobiness" in ASM. Not that you dunno asm, or that u are a noob, that is not what I meant.
Re: Beta Technical Demonstration - Translation without Hexing the EXE
Okay... have you "carte blanche" copied my code from my client into yours? Because I can guarantee the offsets in the instructions pointing to .rdata and .data sections *will* be different in 1988 to what they are in 1977.
I moved the code into a section that did have nonsense to do with XTrap callbacks. Those locations will also be different in 1988.
However, I am not experiencing any problems with my modified executable.[center]YT Video
Vimeo Version(a little clearer)
If your media player sucks ass (you don't have the right codecs and CBA getting them and installing them) just use VLC. It's not the highest quality playback, but it is compatible with just about everything. :wink:
Re: Beta Technical Demonstration - Translation without Hexing the EXE
I just follow what you did and did the same into mine. I know the offsets are different, and I updated then. The point is, your exe is crashing here too.
Re: Beta Technical Demonstration - Translation without Hexing the EXE
Can you you upload bobsobol and yours .exe with all modifications and .dll, .lang files etc. that your are using?
Re: Beta Technical Demonstration - Translation without Hexing the EXE
@lelejau: Yes, I recognise that you are trying to use *my* exe when the error occurs, and appreciate how frustrating that will be for you. It is both worrying and frustrating to me too.
The instruction at which you find the error is should copy ECX bytes from ESI to EDI as they are when it is first executed, and the address it believes is out of range never occurs for me but it will now be using dynamically generated addresses created by the DLLs, and where those addresses are generated will depend on the memory layout determined by your hardware and OS. So I can't be 100% certain that the runtime library in the High level code won't allocate memory around 0x7E36A8AD on your system, but without looking at the memory map and hex dump of memory ranges around there, and probably setting an IBP @ 005A2FB2 to see what the starting values of ECX, EDI and ESI are before the REP begins... I don't know how to help this situation.
Therefore I can only evidence that I cannot reproduce the error my end.
FYI, commented disassembly of the code around your error:-
Code:
subStrCpy /$ push ESI ; Replaced rep movs DWord [EDI], DWord [ESI]
005A2FB1 |. push EDI ; Store them on the stack, as they change after Rep
005A2FB2 |. rep movs dword [EDI],dword [ESI] ; Perform the Rep
005A2FB4 |. pop EDI ; Get the stored versions
005A2FB5 |. pop ESI ; back off the stack
005A2FB6 |. push ESI ; Then pass them both on to lstrcpyA
005A2FB7 |. push EDI ; which we have replaced with our DLL version
005A2FB8 |. call [<&KERNEL32.lstrcpyA>] ; \KERNEL32.lstrcpyA
005A2FBE |. add ESI,40 ; 40h bytes in to this byte copy is the main descript
005A2FC1 |. add EDI,40 ; as the first string is just the skill name
005A2FC4 |. push ESI ; Now pass the source and destination of this
005A2FC5 |. push EDI ; on to our patched lstrcpyA
005A2FC6 |. call [<&KERNEL32.lstrcpyA>] ; \KERNEL32.lstrcpyA
005A2FCC |. add ESI,40 ; Return ESI
005A2FCF |. add EDI,40 ; and EDI to original values before
005A2FD2 \. ret ; Returning to the moved routine.
This may help you understand what is going on, around where your crash occurs.
@Vormav: This is a fantastic suggestion. It's possible that I have made more major adjustments in the minor tweaks to the DLLs I am using now, compared to the last release which I presume lelejau is still using, than I had anticipated.
The 009.lng file can only be a template for him to follow, as I know 009 is not his primary language code. However I have posted all dependencies together with this executable (which should be identical to the one he already has) >here<.
Including:-
SetLogging.cmd (which I still don't know why lelejau has trouble running)
PTInternational.exe Should be the same as the last quick release post.
International.dll (I'm fairly certain hasn't changed)
IntStr[Release].dll v0.0.2 Build 17
IntStr[Logging].dll v0.0.2 Build 17
HanDes.dll (Just in case XD)
--- EDIT ---
I should mention that while this decodes C style "/r/n" codes in the .lng file, it isn't re-encoding them, when logging. I have already noticed that this needs to be done, as it makes a mess of the import into a spreadsheet. XD
---/EDIT ---
As far as I was aware I have only been tweaking the build process to help me synchronise the build numbers of Logging and Release libraries, (a lot of #ifndef stuff, to allow me to pass logging or not to the fbc on the command line) but please do try out both these libraries and let me know how they are operating on your systems.
@both / all
Thank you so much for your continued patience, help and advise. It is much appreciated.
Re: Beta Technical Demonstration - Translation without Hexing the EXE
There is a little error in your PTInternational.exe that leading to crash when you quitting game.
To fix it replace:
Code:
005B5DF2 E8 3F3F0000 CALL PTIntern.005B9D36
With:
Code:
005B5DF2 . E8 313F0000 CALL PTIntern.005B9D28
...unless you planed that >=P
PS. I don't like that windows cursor in your PT XD
Re: Beta Technical Demonstration - Translation without Hexing the EXE
Quote:
Originally Posted by
Vormav
There is a little error in your PTInternational.exe that leading to crash when you quitting game.
To fix it replace:
Code:
005B5DF2 E8 3F3F0000 CALL PTIntern.005B9D36
With:
Code:
005B5DF2 . E8 313F0000 CALL PTIntern.005B9D28
...unless you planed that >=P
I didn't intend it, and haven't altered that code from the original 1977. Just checked, and you are quite correct. I have no idea how that has gotten like that. :S Thanks for pointing it out.
Quote:
Originally Posted by
Vormav
PS. I don't like that windows cursor in your PT XD
lol, so turn it off, I explained how in the Butchered thread, there is even a tool to switch one or the other cursor there, it should still work. I personally turn off the software cursor, but I do still need to make the hardware cursor represent the normal PT shapes. (not hard, just haven't gotten around to it)
Re: Beta Technical Demonstration - Translation without Hexing the EXE
ok. Now, I tryed with your game. When I try to use the dl to patch the strings the game closes before I have a chance to type username and password.
(With International.dll and IntStr.dll, I'm saying.)
The error is here:
004567E3 |. 8B83 9C020000 MOV EAX,DWORD PTR DS:[EBX+29C]
(In your exe.)
Access Violation when reading.
DS:[0000029C]=???
EAX=0
If I nop them, ( there isnt just this error )
Again, olly stops here:
005A2FB2 |. F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>
Access Violation when writting to
DS:[ESI]=[006D0CBC]=00000222
DS:[EDI]=[04C41024]=2001058F
I'm having too much errors here. My game crash with no reason sometimes, this skill thing doesnt work (with ur game and with mine)... I am really sad. This was an awesome project, and I really would like to complet it. But, its becoming annoying, with all these errors and stuff.
Help me bob :(
There isnt another way to patch the skills description?
Re: Beta Technical Demonstration - Translation without Hexing the EXE
Can you upload your .lng file?
What OS you are using?
I do not experience any problems so I believe it might be your OS/settings or error in .lng file.
Re: Beta Technical Demonstration - Translation without Hexing the EXE
Windows XP.
Here is my lng:
Quote:
;Frases da tela inicial.
;6209776 = "Ver: 1.98.7"
6215984 = "Conectando ao EvoPT..."
6215956 = "Falha na conexão!"
6215928 = "Preencha com seus dados!"
6215900 = "Usuário ou senha incorretos!"
6214708 = "Deseja continuar?"
6215808 = "Conta já está logada!"
6215720 = "Tempo de jogar expirou."
6215836 = "Você está banido! Entre em contato com o suporte através do site."
; Descrição dos itens
6212548 = "Tempskron"
6213852 = "Morion"
6083640 = "Sacerdotisa"
6083676 = "Cavaleiro"
6083988 = "Pikeman"
6083980 = "Arqueira"
6084000 = "Lutador"
6084008 = "Mecanico"
6083632 = "Mago"
6083664 = "Atalanta"
6136612 = "Talento: /n"
6136956 = "Defesa: /n"
6136932 = "Absorção: /n"
6136896 = "Integridade:/n"
6136844 = "Terra: /n"
6136820 = "Fogo: /n"
6136808 = "Gelo: /n"
6136796 = "Raio: /n"
6136784 = "Veneno: /n"
6136652 = "Nível: /n"
6136640 = "Força: /n"
6136612 = "Talento: /n"
6137004 = "Pod. de Ataque:/n"
6136992 = "Vel. da Arma:/n"
6136968 = "Crítico: /n"
6136944 = "Taxa de Atq: /n"
6136920 = "Bloqueio: /n"
---------- Post added at 05:36 PM ---------- Previous post was at 05:29 PM ----------
I also tryed doing:
004AF7C4 8B06 MOV EAX,DWORD PTR DS:[ESI]
004AF7C6 8907 MOV DWORD PTR DS:[EDI],EAX
But, exception in MOV DWORD PTR DS:[EDI],EAX
---------- Post added at 05:37 PM ---------- Previous post was at 05:36 PM ----------
The exceptions occurs in this offset:
10001024 >/$ 8F05 01200010 POP DWORD PTR DS:[10002001] ; game.00467C6E
---------- Post added at 05:44 PM ---------- Previous post was at 05:37 PM ----------
ok.
I'll tell you the values of the ESI and EDI.
In the first time this block of code is executed I have this:
PUSH ESI ; game.006DA884
PUSH EDI ; Internat._wsprintf
In the REP MOVS:
ECX = 031B480
DS:[ESI]=[006DA884]=00000222
ES:[EDI]=[10001024]=2001058F
This help?
Re: Beta Technical Demonstration - Translation without Hexing the EXE
Problem is not in your OS or game.exe, its in your .lng file.
You have wrong addresses, for example:
in bobsobol:
6197848 = "Connecting to Server..."
in yours:
6215984 = "Conectando ao EvoPT..."
You can't use .lng from yours (1.98.8?) game.exe in PTInternational.exe
So you need a different .lng file for different version and if yours crash with yours game.exe than you have some mistake in .lng file.