1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

"Don't go alone", Translation in French

Тема в разделе "International Zone", создана пользователем hrvg54, 14 окт 2022.

  1. hrvg54

    hrvg54

    Регистрация:
    8 мар 2020
    Сообщения:
    190
    Hi,

    I cannot file stops at 0x33bcb.
    --- добавлено 19 окт 2022, предыдущее сообщение размещено: 19 окт 2022 ---
    I do not understand.
    I added 512 bytes (00) (019E--> 019F)
    I wrote "DROITE".
    I open "ALONE.EXE" with Ida...
    Word "DROITE" is at 0x33ba7 (DSEG: 94E7).
    I modify the original pointer: 1031 by E794...
    Word "RIGHT" has disappeared but not of word "DROITE".
    ALONE.EXE (+512 bytes) file:
    alone 021

    Why is the word "RIGHT" not displayed, please?
     

    Вложения:

    • 020.png
      020.png
      Размер файла:
      55,5 КБ
      Просмотров:
      37
    • 021.png
      021.png
      Размер файла:
      14,8 КБ
      Просмотров:
      36
    Последнее редактирование: 19 окт 2022
  2. oFF_rus .

    oFF_rus

    Хелпер

    Регистрация:
    25 фев 2007
    Сообщения:
    2.139
    too little. You have to add as much bytes as there are "?" in dseg. Because all bytes that are seen as "?" in IDA are already used by game one way or another. If you'll write your messages at those addresses game will overwrite them with its own data.

    Because game used that memory for its own purposes and replaced your "DROITE" with something. Here memory dump from working game:
    Код:
    2BD6:94E7   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    2BD6:94F7   00 00 00 00 00 00 00 00 00 B0 7D 00 00 D0 DB BD
    2BD6:9507   00 00 00 EB 00 0A 00 04 D7 0F 03 4F 00 00 00 1C
    2BD6:9517   81 2A 81 00 00 05 00 C2 80 F0 7C 44 7C 03 00 00
    2BD6:9527   00 03 00 12 00 56 80 FA 7C 44 7C 03 00 01 00 03
    2BD6:9537   00 46 E9 00 00 5E 81 02 00 02 00 00 00 02 00 FF
    2BD6:9547   FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    2BD6:9557   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    
    Your "DROITE" was replaced with bunch of zeros, other "?" are replaced with some other usefull data. You should write your messages to addresses outside of current dseg.
     
  3. hrvg54

    hrvg54

    Регистрация:
    8 мар 2020
    Сообщения:
    190
    I added 512 bytes before"<bh:00>(null)<bh:00>(null)<bh:00>".
    It works, screenshot 022.
    But maybe it is a mistake?

    ALONE.EXE (+512 bytes) file:
    alone 022
    --- добавлено 19 окт 2022, предыдущее сообщение размещено: 19 окт 2022 ---
    Alright, II start from zero.
     

    Вложения:

    • 022.png
      022.png
      Размер файла:
      64,9 КБ
      Просмотров:
      37
    • 023.png
      023.png
      Размер файла:
      66,8 КБ
      Просмотров:
      41
  4. oFF_rus .

    oFF_rus

    Хелпер

    Регистрация:
    25 фев 2007
    Сообщения:
    2.139
    You moved all data starting with <bh:00>(null)<bh:00>(null)<bh:00> to some place where game will not find it when it will need it (maybe it will never need it, but who knows) unless you will change all pointers to it.
     
  5. hrvg54

    hrvg54

    Регистрация:
    8 мар 2020
    Сообщения:
    190
    I deleted the 512 bytes.

    32 ? left (dseg:ECC0). If I add 1 byte to the ALONE.EXE file... The other 31 ? disappear. screenshot 24

    ALONE.EXE (0000) file:
    alone 024
    --- добавлено 19 окт 2022, предыдущее сообщение размещено: 19 окт 2022 ---
    Done.

    Done. Not 100%

    I do not understand sorry.

    I do not understand sorry.
     

    Вложения:

    • 024.png
      024.png
      Размер файла:
      31,4 КБ
      Просмотров:
      39
  6. oFF_rus .

    oFF_rus

    Хелпер

    Регистрация:
    25 фев 2007
    Сообщения:
    2.139
    Here I added 80 bytes of FF to your last file (alone 24).

    After you added all required zeros you have to (as I did with this file)
    - add your messages after zeros in your last file (where I added FF FF...)
    - modify EXE header 02 and 04 for DOS (DOSBox) to load file properly
    - modify EXE header 0E for IDA to move seg005 from your new messages (or from FF FF I added).
    --- добавлено 19 окт 2022, предыдущее сообщение размещено: 19 окт 2022 ---
    Looks like you did not added enough zeros.
    My FF are partly occured at last "?"s.

    Original:
    Код:
    dseg:ECDE                 db    ? ;
    dseg:ECDF                 db    ? ;
    dseg:ECDF dseg            ends
    dseg:ECDF
    seg005:0000 ; ---------------------------------------------------------------------------
    seg005:0000
    seg005:0000 ; Segment type: Uninitialized
    seg005:0000 seg005          segment byte stack 'STACK' use16
    seg005:0000                 assume cs:seg005
    seg005:0000                 assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing
    seg005:0000                 db 800h dup(?)
    seg005:0000 seg005          ends
    
    Your file:
    Код:
    dseg:ECBF                 db    0
    dseg:ECC0                 db    ? ;
    ...
    dseg:ECDE                 db    ? ;
    dseg:ECDF                 db    ? ;
    dseg:ECDF dseg            ends
    dseg:ECDF
    seg005:0000 ; ---------------------------------------------------------------------------
    seg005:0000
    seg005:0000 ; Segment type: Uninitialized
    seg005:0000 seg005          segment byte stack 'STACK' use16
    seg005:0000                 assume cs:seg005
    seg005:0000                 assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing
    seg005:0000                 db 800h dup(?)
    seg005:0000 seg005          ends
    
    My file:
    Код:
    dseg:ECBF                 db    0
    dseg:ECC0                 db 0FFh
    ...
    dseg:ECEE                 db 0FFh
    dseg:ECEF                 db 0FFh
    dseg:ECF0                 db 0FFh
    dseg:ECF1                 db 0FFh
    ...
    dseg:ED0E                 db 0FFh
    dseg:ED0F                 db 0FFh
    dseg:ED0F dseg            ends
    dseg:ED0F
    seg005:0000 ; ---------------------------------------------------------------------------
    seg005:0000
    seg005:0000 ; Segment type: Uninitialized
    seg005:0000 seg005          segment byte stack 'STACK' use16
    seg005:0000                 assume cs:seg005
    seg005:0000                 assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing
    seg005:0000                 db 800h dup(?)
    seg005:0000 seg005          ends
    
     

    Вложения:

    • alone024.zip
      Размер файла:
      69 КБ
      Просмотров:
      12
  7. hrvg54

    hrvg54

    Регистрация:
    8 мар 2020
    Сообщения:
    190
    You are incredible.
    I am really not good with computers.
    I thank you very much for your help and especially your patience.
    --- добавлено 19 окт 2022, предыдущее сообщение размещено: 19 окт 2022 ---
    I think I found my mistake.
    I added 00 from "dseg:ECC0". Suddenly, "dseg:ECC2", "dseg:ECC3", "dseg:ECC4", etc disappeared. Screnshot 024.
    If I had added FF and not 00 starting at "dseg:ECC0", that was fine.
    I just tried and it works.
    Screenshot 027.
    But, I would have had the problem of the 0E, because I did not understand...

    I will use your "alone.exe" file for translation.

    ALONE.EXE file:
    alone 026
     

    Вложения:

    • 025.png
      025.png
      Размер файла:
      62,1 КБ
      Просмотров:
      40
    • 027.png
      027.png
      Размер файла:
      37,2 КБ
      Просмотров:
      39
    Последнее редактирование: 19 окт 2022
  8. hrvg54

    hrvg54

    Регистрация:
    8 мар 2020
    Сообщения:
    190
    Hi,

    I have a problem with %s %s
    I deleted 1 %s. I do not know how to modify the pointers of these 2 %s.
    It is possible to delete the first %s (a/A/an/An)?
    Thank you for your help.


    alone.exe:
    alone trad 1
    --- добавлено 24 окт 2022, предыдущее сообщение размещено: 24 окт 2022 ---
    7257 --> 724C
    <bh:00>
    %s %s appears!
    %s %s apparaît !

    Oh, %s apparaît ! It is problem


    7266 --> 7260
    <bh:00>
    LEAVE
    PARS


    726C --> 7266
    <bh:00>
    LEAVE
    PARS



    7272 --> 726C
    <bh:00>
    TAKE
    PRENDS



    7277 --> 7273
    <bh:00>
    LEAVE
    PARS




    727D --> 7279
    <bh:00>
    %s takes the %s

    %s prend %s



    728D --> 7286
    <bh:00>
    %s already has %s %s
    %s a déjà %s %s
    %s l'a déjà


    72A2 --> 7292
    <bh:00>
    %s's pack is full
    Le pack de %s est plein

    %s a son sac plein


    STOP It is good
    ______________________________
    It is problem

    72B4 --> 72A5
    <bh:00>
    a



    72B5 --> 72A6
    <bh:00>



    :72B7 --> 72A8
    <bh:00>
    an



    72BA --> 72AA
    <bh:00>
    A



    72BB --> 72AB
    <bh:00>


    72BD --> 72AD
    <bh:00>
    An




    72C0 --> 72AF
    <bh:00>
    An ornate Skeleton key.

    Une clé ornée



    72D8 --> 72BD
    <bh:00>
    Opens certain locked doors.

    Ouvre certaines portes






    72F4 --> 72D4
    <bh:00>
    Good for dark places.

    Bon pour les lieux noirs







    730A --> 72ED
    <bh:00>
    Protection against Undead spirits

    La protection contre les esprits


    ----------------------------
     

    Вложения:

    • trad 0.png
      trad 0.png
      Размер файла:
      11,8 КБ
      Просмотров:
      28
    • trad 1.png
      trad 1.png
      Размер файла:
      31,3 КБ
      Просмотров:
      30
    • trad 2.png
      trad 2.png
      Размер файла:
      113,6 КБ
      Просмотров:
      33
  9. oFF_rus .

    oFF_rus

    Хелпер

    Регистрация:
    25 фев 2007
    Сообщения:
    2.139
    I think you should keep both %s in format string and change pointer of the string you want to remove to point tosome 0 byte.
     
  10. hrvg54

    hrvg54

    Регистрация:
    8 мар 2020
    Сообщения:
    190
    I tried, but I do not find the pointer of the first %s which displays "a, a, an and An".
    --- добавлено 24 окт 2022, предыдущее сообщение размещено: 24 окт 2022 ---
    I just redone what I tried:
    alone trad 2

    It works...
    But, I would like to know how we can modify the pointers of %s
    Look screenshot "trad 10".
     

    Вложения:

    • trad 10.png
      trad 10.png
      Размер файла:
      40,8 КБ
      Просмотров:
      31
    Последнее редактирование: 24 окт 2022
  11. oFF_rus .

    oFF_rus

    Хелпер

    Регистрация:
    25 фев 2007
    Сообщения:
    2.139
    There are pointers to "a" and "A". And there are some rules that allow game to select next value - "an" or "An".
    List of pointers:
    Код:
    dseg:72B4 aA              db 'a',0                ; DATA XREF: sub_106A+164o
    dseg:72B4                                         ; sub_391E+7Ao sub_82C8+21Bo
    dseg:72B4                                         ; sub_9E4C+149o
    dseg:72B6                 db    0
    dseg:72B7                 db  61h ; a
    dseg:72B8                 db  6Eh ; n
    dseg:72B9                 db    0
    dseg:72BA aA_0            db 'A',0                ; DATA XREF: sub_82C8+79o
    dseg:72BC                 db    0
    dseg:72BD                 db  41h ; A
    dseg:72BE                 db  6Eh ; n
    dseg:72BF                 db    0
    
    Rule example:
    Код:
    seg000:8341                 add     ax, 72BAh
    seg000:8344                 push    ax
    seg000:8345                 mov     ax, offset aSSAppears ; "%s %s appears!"
    
    Here game adds pointer of "A" to some value in ax. If ax's value will be 0, then game will display "A", but if ax's value will be 2, then game will display next string - "An". So you should change pointers to "a" and "A" to blocks of three 0 - "00 00 00" for these rules to work right.

    What do you mean?
     
    Последнее редактирование: 24 окт 2022
  12. hrvg54

    hrvg54

    Регистрация:
    8 мар 2020
    Сообщения:
    190
    I do not know at the moment. I am not at that block of text yet.
    But the words are reversed in English in a sentence compared to French.

    Thank you for your explanations and especially for your help.
     
  13. oFF_rus .

    oFF_rus

    Хелпер

    Регистрация:
    25 фев 2007
    Сообщения:
    2.139
    Let's for example look at this format string:
    Код:
    dseg:5FB2 aSSTheSAndTheSIsS db '%s %s the %s and the %s is %s!',0 ; DATA XREF: sub_56A4+6B4o
    
    To get result game will call function sprintf() (something like this surely was in original source code of the game):
    Код:
    sprintf(bufferOut, "%s %s the %s and the %s is %s!", arg1, arg2, arg3, arg4, arg5);
    
    in IDA it looks like this:
    Код:
    ...
    seg000:5D57                 push    si
    seg000:5D58                 mov     ax, offset aSSTheSAndTheSI ; "%s %s the %s and the %s is %s!"
    seg000:5D5B                 push    ax
    seg000:5D5C                 lea     ax, [bp+var_88]
    seg000:5D60                 push    ax
    seg000:5D61                 call    sub_13E50
    
    call - calls function sprintf()
    push XX - gives parameters to function, in reverse order (bufferOut at seg000:5D60, format string at seg000:5D5B, arg1 at seg000:5D57 and so on).

    In modern compilers you can add position number to convertion specifiers:
    printf_p Positional Parameters

    Код:
    sprintf(bufferOut, "%5$s %3$s the %1$s and the %2$s is %4$s!", arg1, arg2, arg3, arg4, arg5);
    
    But I doubt that such a possibility already was present in 1989 compilers, so the game probably will not understand this format string.

    Your only hope is to rearrange order of execution for blocks of code that "push" argX to function. And it is not an easy task even for experienced reverse engineers.
     
  14. hrvg54

    hrvg54

    Регистрация:
    8 мар 2020
    Сообщения:
    190
    Hi,

    It is not possible for me. I am bad at computers.

    And yet, I did it for the translation of the game Leisure Suit Larry 1 VGA.
    I do not remember how I did it, because it was over ten years ago.
    I vaguely remember that I reversed some sort of pointer so that the first %s had the value of the second %s and the second %s had the value of the first %s.

    I had just come across one of these problems.
    For example.
    English version:
    and damages the %s %s! --> and damages the (%s Ghost) (%s slightly/heavily)!

    French version:
    et blesse (%s un peu/gravement) (%s le fantôme) !

    The translation ends here.
    I thank you for your explanations and help.
     

    Вложения:

    • trad20.png
      trad20.png
      Размер файла:
      1,1 МБ
      Просмотров:
      33
    • trad 21.png
      trad 21.png
      Размер файла:
      62,7 КБ
      Просмотров:
      31
    Последнее редактирование: 25 окт 2022
  15. oFF_rus .

    oFF_rus

    Хелпер

    Регистрация:
    25 фев 2007
    Сообщения:
    2.139
    I think that "Leisure Suit Larry 1 VGA" used other type of function to combine words and you probably used some sort of script editor that gives you the oportunity to modify code as it was original source code like in "sprintf(bufferOut, '%s %s the %s and the %s is %s!', arg1, arg2, arg3, arg4, arg5);" example and not in final machine language like we see in IDA.

    I remember that i saw some translations to Russian where translator breaked sentences to pieces and changed grammatical form used. Something like this (i'll write in russian, you can use google translate to see difference from english):
    Код:
    and damages the %s %s!
    and damages the (%s Ghost) (%s slightly/heavily)!
    повреждён: (%s Призрак). Уровень повреждений: (%s малый/большой)!
    
     
  16. hrvg54

    hrvg54

    Регистрация:
    8 мар 2020
    Сообщения:
    190
    :good:
    I buy...
    It is excellent!
    Do you translate?
    --- добавлено 25 окт 2022, предыдущее сообщение размещено: 25 окт 2022 ---
    It is perfect. :victory:
     

    Вложения:

    • trad25.png
      trad25.png
      Размер файла:
      31,1 КБ
      Просмотров:
      39
  17. hrvg54

    hrvg54

    Регистрация:
    8 мар 2020
    Сообщения:
    190
    Hi,
    One question, please.
    What is the code for the line break...
    I tried: 0A, 0B and 0D... It does not work.
    It does not work.

    PS:
    I would like this sentence "Blessant : %s. Niveau de dégâts : %s !" to appear like this:
    Blessant : %s.
    Niveau de dégâts : %s !
     

    Вложения:

    Последнее редактирование: 27 окт 2022
  18. oFF_rus .

    oFF_rus

    Хелпер

    Регистрация:
    25 фев 2007
    Сообщения:
    2.139
    Game does not allow to break lines voluntary. Every char code below 0x20 (space) will be ignored.
     
  19. hrvg54

    hrvg54

    Регистрация:
    8 мар 2020
    Сообщения:
    190
    Hi,
    I thank you for your answer.
    That's a pity.
    It was to make the text more beautiful to read.
     
  20. hrvg54

    hrvg54

    Регистрация:
    8 мар 2020
    Сообщения:
    190
    Hi,

    I made a error again but I can not find my error.
    We enlarged the "alone.exe" file.
    I modified: Q to quit --> Q pour quitter
    I put this sentence at the end of file because sentence was too long.
    Pointers: 4724 --> ED3E
    There is only letter "Q" which is displayed on the screen.
    Where is my error, please?

    "alone.exe" file:
    alone 30
    --- добавлено 28 окт 2022, предыдущее сообщение размещено: 28 окт 2022 ---
    I found my mistake. I had written 0x01ca (0xca01) instead of 0x01cb (0xcb01), sorry. Screenshot alone 32
    --- добавлено 28 окт 2022 ---
    I read your explanations.

    Thank you for your help and explanations.
     

    Вложения:

    • alone 30.png
      alone 30.png
      Размер файла:
      40,8 КБ
      Просмотров:
      37
    • alone 31.png
      alone 31.png
      Размер файла:
      16 КБ
      Просмотров:
      42
    • alone 32.png
      alone 32.png
      Размер файла:
      11,6 КБ
      Просмотров:
      33
    • alone 33.png
      alone 33.png
      Размер файла:
      8,5 КБ
      Просмотров:
      30
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление