Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];

Вниз

Прошу помочь с переводом сишного кода эмулятора Adlib   Найти похожие ветки 

 
Grom PE ©   (2007-11-08 13:35) [0]

Здравствуйте, мастера.

Я поставил перед собой задачу перевода сишного кода на Delphi, и столкнулся
с проблемами. При переводе у меня получился неработающий код, и я не могу
увидеть, где я допустил ошибку, возможно, из-за недостаточных знаний по C.

Собственно код выполняет роль эмулятора Adlib,
может кто помнит этот характерный FM звук в старых досовских играх.

Я составил программу, переводящую музыку из команд чипа в формат WAV с помощью
эмулятора. Эмулятор есть в двух версиях - DLL, и переведенный PAS.

Версия с DLL работает как положено, а PAS
вылетает с ошибкой Floating-point overflow.

Прилагаю архив со всеми бинарниками, исходниками и файлами для тестирования.
http://grompe.org.ru/files/adlib_problem.rar (44 кб)
Описание файлов там же.

Прошу найти ошибки в PAS-версии, и попытаться добиться ее работоспособности.

На вопрос "А не достаточно ли тебе DLL?" заранее отвечу, что меня интересует
сам перевод с С на Delphi, и я прошу помочь и указать, где у меня ошибка, чтобы
позже уметь перевести без подобных ошибок.

Спасибо всем, кто заинтересуется проблемой.


 
Grom PE ©   (2007-11-10 06:55) [1]

up


 
icWasya ©   (2007-11-10 21:28) [2]

Ну очень много букафф

ну например у Вас в коде полно таких мест
// Not sure:
(*(long *)&((celltype *)c)->amp
должно переводится не
trunc(c.amp)
а так
Integer(c.amp)

Посмотрю ещё


 
icWasya ©   (2007-11-10 21:37) [3]

и ещё
вот это

(long)(adlibreg[i+0xB0])

на паскаль переводится так
trunc(adlibreg[i+$B0])


 
Grom PE ©   (2007-11-11 07:56) [4]

> icWasya ©   (10.11.07 21:37) [3]

Вы что-то не то мне посоветовали.
В случае [2] получится Invalid typecast, а в [3] нечего округлять, adlibreg это же массив байтов..


 
Grom PE ©   (2007-11-12 20:31) [5]

up


 
Grom PE ©   (2007-11-13 20:09) [6]

up


 
Grom PE ©   (2007-11-14 10:29) [7]

Эх.. Что ж за игнор-то такой?


 
@!!ex ©   (2007-11-14 10:33) [8]

> [7] Grom PE ©   (14.11.07 10:29)

Думаешь кому то особо надо перелопачивать твой код?


 
Grom PE ©   (2007-11-14 10:44) [9]

> @!!ex ©   (14.11.07 10:33) [8]

А кому-то особо надо помогать другим? А ведь помогают.


 
@!!ex ©   (2007-11-14 10:46) [10]

> [9] Grom PE ©   (14.11.07 10:44)

Я тоже помогаю другим.
И даже примеры пишу.
Но это не тоже самое, что копаться в чужом коде, да еще криво переведенном.
Переводи по частям?
Перевел часть кода, сравнил с результатм сишным.
Например функцию первеодишь.
перевел первые 10 строчек.
посмотрел как при выполнении на С это выполняется и что лежит в переменных.
сравнил с дельфи и т.д.


 
Skyle ©   (2007-11-14 10:48) [11]

Вопрос неконкретный.


 
Grom PE ©   (2007-11-14 11:02) [12]

> @!!ex ©   (14.11.07 10:46) [10]

Ну да. Совет хороший, спасибо.
Я думал, что "копаться в кривом чужом коде" будет проще, чем переводить с нуля.
Ну что ж.
Так понимаю, что если "вопрос" выше определенной сложности, то на него не отвечают.

> Skyle ©   (14.11.07 10:48) [11]

Не могли бы вы сказать конкретнее, что неконкретно в моем "вопросе"?

P.S. "вопрос" = просьба


 
Думкин ©   (2007-11-14 11:05) [13]

> Grom PE ©   (14.11.07 11:02) [12]

Сложность там вряд ли, а вот заниматься долгим и с непойми чем - многих напрягает.


 
KSergey ©   (2007-11-14 11:13) [14]

> Grom PE ©   (14.11.07 10:29) [7]
> Эх.. Что ж за игнор-то такой?

Так сумма не озвучена чтобы было интересно просматривать весь проект.
Может просто озвучить места где "not sure"?


 
KSergey ©   (2007-11-14 11:16) [15]

> Grom PE ©   (14.11.07 11:02) [12]
> Ну что ж.
> Так понимаю, что если "вопрос" выше определенной сложности,
>  то на него не отвечают.

Не правильное понимание.
Выше определенного объема ответа.

Вы хотите, чтобы кто-то на халяву, используя знания, на получение которых затрачены время и деньги, сел и убил не один час времени копаясь в ваших поделушках и делая работу, которая нужна вам (даже если вы явно за нее денег и не получите). Кому это надо-то??!
Причем вопрос не в деньгах как таковых, о чем тут не раз уже писалось.


 
Grom PE ©   (2007-11-14 11:25) [16]

> KSergey ©   (14.11.07 11:13) [15]

Говоря о сложности, я имел ввиду и время тоже.

> Может просто озвучить места где "not sure"?

Отделить от кода сложно, придется все типы писать. Неужели долго скачать 44 кб и сделать поиск по "not sure"?


 
Grom PE ©   (2007-11-14 11:44) [17]

Никто не говорит, что надо в одиночку "перелопачивать весь код".
Даже за одну найденную ошибку я буду премного благодарен.

Кстати, там 500 строк. Я не знаю, это на многие часы работы?


 
KSergey ©   (2007-11-14 11:58) [18]

> Grom PE ©   (14.11.07 11:44) [17]
> Кстати, там 500 строк. Я не знаю, это на многие часы работы?

Это просто нафиг никому не надо, понимаете?


 
Grom PE ©   (2007-11-14 12:05) [19]

> KSergey ©   (14.11.07 11:58) [18]

Читайте выше. На одну строчку. А о помощи тут уже говорили.


 
Grom PE ©   (2007-11-17 14:35) [20]

Удалено модератором
Примечание: В следующий раз down будет


 
Riply ©   (2007-11-17 14:47) [21]

> [17] Grom PE ©   (14.11.07 11:44)
> Кстати, там 500 строк. Я не знаю, это на многие часы работы?

Разбираясь в чужих исходниках, кстати С-шных, бывало такое,
что на двух-трех строчках кода застревала на дни.
Это не преувеличение. Чтобы понять и разобраться в них приходилось
поднимать целую гору литературы.


 
Grom PE ©   (2007-11-17 15:16) [22]

> Riply ©   (17.11.07 14:47) [21]

Так собственно, я и застрял...
Для знающего человека это, наверное, не много.


 
Riply ©   (2007-11-17 15:49) [23]

> [22] Grom PE ©   (17.11.07 15:16)
> Так собственно, я и застрял...
> Для знающего человека это, наверное, не много.

У тебя скорее всего очень специфичная область и найти
"знающего человека именно в этой области" не так-то и просто.
Поверь моему опыту: если бы дело обстояло не так, то уже давно помогли бы.
Так что, видимо, придется тебе "поднимать целую гору литературы" и разбираться.
Оно и полезнее будет :)



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.05 c
15-1194980036
tesseract
2007-11-13 21:53
2007.12.16
Электронная россия ? Электронные выборы


15-1195131734
Ega23
2007-11-15 16:02
2007.12.16
Так всё-таки: как канонически правильно передавать объекты


15-1195104247
Alex_C
2007-11-15 08:24
2007.12.16
Проблема с мультимедиа таймером.


15-1194809006
vasIZmax
2007-11-11 22:23
2007.12.16
О мэйле


2-1195577006
allucard
2007-11-20 19:43
2007.12.16
Как определить размер переменной, занимаемый в памяти





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский