Форум: "Прочее";
Текущий архив: 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.077 c