LG.BALUKATION's Weblog

Ничего, это тоже кое-что… А при желании из него можно сделать что угодно

Старые игры и новые технологии

Posted by LG.BALUKATION на 2008/05/30

На днях интересный разговор был в жаббере…

Помниццо, я уже писал о статье Sun насчёт проблемы языков Си/С++ и разрадности процессоров, вот увидели и вполне себе жизненный пример — человек хотел собрать игру, котрая была написана под 32-битную винду, но возникла кое-какая проблема с злосчастным int:

[02:21:16] Lucky: ты тут?
[02:30:35] LGB: оге
[02:30:44] LGB: пока что тут
[02:32:05] Lucky: как скачать gentoo пакет если нет их пакетного менеджера? :)
[02:33:34] LGB : эээ… что именно тебе нужно? сорсы или уже скомпиленную прогу?)
[02:33:51] Lucky: ага, просто исходники
[02:35:53] LGB: гента использует официальные исходники + патчи к ним. Сорсы зеркалируются повсюду, но можно и просто на оф. сайте проги скачать её код — гента юзает тож самое когда не находит на своих зеркалах. Маленькие патчи хранятся прям в портаже и обновляются/удаляются вместе с ним, большие патчи (например к ядру) пихуют в отдельный архив, который есть на зеркалах вместе с сорсами
[02:36:23] Lucky: вот, мне тогда нужны патчи
[02:36:35] LGB: ищи директорию distfiles иль если хошь, скажи что те надо — дам линки. У меня гента обновлялась вчера часа в 4 ночи
[02:36:46] LGB: иль в 3… не суть =)
[02:37:11] Lucky: games-fps/avp
[02:37:57] LGB: lgb@LGB ~ $ emerge -pf games-fps/avp

These are the packages that would be fetched, in order:

Calculating dependencies… done!

http://distfiles.gentoo.org/distfiles/avp-20070130.tar.bz2 http://distro.ibiblio.org/pub/linux/distributions/gentoo/distfiles/avp-20070130.tar.bz2 http://open-systems.ufl.edu/mirrors/gentoo/distfiles/avp-20070130.tar.bz2 ftp://cudlug.cudenver.edu/gentoo/distfiles/avp-20070130.tar.bz2 http://ftp.snt.utwente.nl/pub/os/linux/gentoo/distfiles/avp-20070130.tar.bz2 ftp://ftp.free.fr/mirrors/ftp.gentoo.org/distfiles/avp-20070130.tar.bz2 ftp://mirror.bytemark.co.uk/gentoo/distfiles/avp-20070130.tar.bz2 ftp://ftp.gentoo.mesh-solutions.com/gentoo/distfiles/avp-20070130.tar.bz2 http://mirror.bytemark.co.uk/gentoo/distfiles/avp-20070130.tar.bz2 http://ftp.jaist.ac.jp/pub/Linux/Gentoo/distfiles/avp-20070130.tar.bz2 ftp://ftp.tu-clausthal.de/pub/linux/gentoo/distfiles/avp-20070130.tar.bz2 http://cudlug.cudenver.edu/gentoo/distfiles/avp-20070130.tar.bz2 ftp://ftp.ussg.iu.edu/pub/linux/gentoo/distfiles/avp-20070130.tar.bz2 ftp://ftp.snt.utwente.nl/pub/os/linux/gentoo/distfiles/avp-20070130.tar.bz2 http://gentoo.mirrors.pair.com/distfiles/avp-20070130.tar.bz2 http://mirrors.tds.net/gentoo/distfiles/avp-20070130.tar.bz2 http://mirrors.sec.informatik.tu-darmstadt.de/gentoo/distfiles/avp-20070130.tar.bz2 http://gentoo.osuosl.org/distfiles/avp-20070130.tar.bz2 http://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/distfiles//avp-20070130.tar.bz2 http://mirror.ovh.net/gentoo-distfiles/distfiles/avp-20070130.tar.bz2 ftp://ftp.osuosl.org/pub/gentoo/distfiles/avp-20070130.tar.bz2

[02:38:06] LGB: зеркао многа
[02:38:11] LGB: *зеркал
[02:38:21] Lucky: это все одно и тоже?
[02:38:56] LGB: да, просто на разных серваках лежит
[02:39:04] LGB: это оф. сорсы
[02:39:08] Lucky: круто. спс :)
[02:39:08] LGB: есть патч один
[02:39:14] LGB: lgb@LGB /usr/portage/games-fps/avp/files $ ls
avp-20070130-gcc42.patch
[02:39:18] LGB: нада?
[02:39:43] Lucky: md5sum avp-20070130-gcc42.patch
a904aa3c994365adfa1c93e835736b4b avp-20070130-gcc42.patch
[02:39:45] Lucky: такой?
[02:40:25] LGB: lgb@LGB /usr/portage/games-fps/avp/files $ md5sum avp-20070130-gcc42.patch
ed0c176a9d672bfb7c6ce070d56ed869 avp-20070130-gcc42.patch

нет…
[02:40:39] Lucky: тогда давай
[02:44:03] Lucky: не выйдет наверное, я за нат
[02:44:44] LGB: оге, хотя мож эт и мои косяки

http://lg.balukation.googlepages.com/avp-20070130-r1.ebuild
http://lg.balukation.googlepages.com/avp-20070130-gcc42.patch
[02:48:34] LGB: а нафиг оно те, неуж-то в других системах нет своих пакетов с этой игрой?
[02:48:42] Lucky: нет
[02:49:02] LGB: что за система?
[02:49:16] Lucky: у меня? ubuntu
[02:50:41] LGB: странно… там же вродь можно дебиановские репозиратарии юзать и всякие сторонние ещё — я думал в дебиановых линухах самая большая база софта =)
[02:50:54] Lucky: нет
[02:51:04] Lucky: у нас нет припоетарщины
[02:51:18] Lucky: она не opensource
[02:51:42] LGB: да я уж на сайт сходил… кажись код стрили и портанули скока успели =)
[02:51:52] Lucky: :D
[02:51:54] LGB: кста тамсвн дан — мож что и посвежее есть
[02:52:18] Lucky: нет, код выложили, а это неоффициальный порт
[02:52:24] Lucky: на линукс
[02:52:35] Lucky: в свн древность
[02:52:39] LGB: вижу
[02:52:44] Lucky: и его не собрать
[02:52:50] Lucky: вот попробую этот
[02:52:52] LGB: даты последнего изменения в шесть лет назат — это сурово
[02:53:03] Lucky: :D
[02:53:25] Lucky: чувак забросил этот проект
[02:54:08] LGB: так у тяж убунта — там наверняка кучи заголовков не хватает и т.п. Дебииан же ведь всё режет на пакеты с софтом и пакеты с хренью чтоб этот софт собрать можно было. Отчасти поэтому и юзаю генту — в ней компилить он удовольствие
[02:54:14] LGB: *одно
[02:54:32] Lucky: да уже все установлено
[02:55:16] LGB: =)))
[02:56:07] LGB: хех, я помню одно время следил как народ третью элиту на DX портирует. Правда там ваще даж тыренного кода нет — тока реверснутое двигло…
[02:56:28] LGB: пожалуй единственная не моя и не рабочая вещь, которую я собирал се под вендой
[02:59:27] LGB: «-D_GNU_SOURCE=1» — хм, интересный подход… я думал там значение не важно, смотрится просто обьявлено оно или нет =)
[03:00:59] LGB: скомпилил?
[03:01:59] LGB: у меня собралось, но данных от игры нет и ессно оно не пошло без них =)
[03:02:35] Lucky: у меня не хочет
[03:02:45] Lucky: и диск куда то потерялся :(
[03:03:05] LGB: ну… диск в пирацкой долине наверно откапать не проблема =)
[03:03:17] Lucky: ну да
[03:03:38] LGB: там кста всего три файла ставиццо — сам бинарник, тодо и редмиха
[03:03:54] LGB: могу кинуть, но наверняка у тя не пойдёт
[03:04:05] Lucky: просто через gprs придется долго качать :D
[03:04:24] Lucky: ага, скинь бинарник
[03:05:23] LGB: тока учти — у меня опции оптимизации такие:
-O3 -pipe -mmmx -msse -msse2 -m3dnow -fomit-frame-pointer -march=athlon64

т.е. если у тя другой проц, может и не запустится. Линки на либы фиксить вродь не проблема, а вот с архитектурой сложнее
[03:06:01] Lucky: ты 64-битную собрал?
[03:06:10] LGB: ytn
[03:06:11] LGB: нет
[03:06:38] Lucky: а почему? у тебя проц же поддерживает
[03:06:38] LGB: какой у тя проц?
[03:06:43] Lucky: такой де
[03:06:46] Lucky: же*
[03:07:46] LGB: да я года два назат экспериментировал, но пока юза 32 бита. Тогда не было номаного инета чтоб 64 поддерживать (диалап был), сейчас лень пересобирать
[03:08:07] Lucky: :D
[03:08:31] Lucky: кстати Си знаешь? может получится пофиксить
[03:10:15] LGB: знаю немножко, но у меняж оно собралось с этим патчем — видимо у тя чего-нить не хватает иль компиль другой версии
[03:10:49] LGB: http://lg.balukation.googlepages.com/AvP — два с половиной метра

lgb@LGB ~ $ ls /usr/games/bin/AvP -lh
-rwxr-x— 1 root games 2,4M Май 28 03:00 /usr/games/bin/AvP
[03:10:50] Lucky: да там вроде ничего особенного
[03:11:03] Lucky:
win95/hash_tem.hpp: In function ‘unsigned int HashFunction(const void*)’:
win95/hash_tem.hpp:245: ошибка: cast from ‘const void*’ to ‘unsigned int’ loses precision
[03:13:23] LGB: а у тя 64 бита?
[03:13:34] Lucky: ага
[03:20:42] LGB: ХЗ, недавно IBM писала о всяких проблемах с интом таким…
мож наивно, но как насчёт явного преобразования?
244: // treat as integer
245: return HashFunction(reinterpret_cast((int)_vP));
[03:21:52] Lucky:
win95/hash_tem.hpp: In function ‘unsigned int HashFunction(const void*)’:
win95/hash_tem.hpp:245: ошибка: cast from ‘const void*’ to ‘int’ loses precision
win95/hash_tem.hpp:245: ошибка: invalid cast from type ‘int’ to type ‘unsigned int’
[03:21:54] Lucky: :)
[03:22:21] Lucky: я так понимаю, ему не нравится что теряется знак
[03:23:13] LGB: =)))
да, но суть не в этом. Там вообще хэши рассчитаны на 32 бита, а указатели в AMD64 уже не 32-битные =)
[03:24:05] LGB: нада менять или хуш на 64 бита, но ХЗ как оно на игре отразится или отбрасывать старшие 32 бита в указателе — но эт тож сурова и не факт что игра не станет падать даж если скомпилится
[03:24:10] LGB: *хэш
[03:25:14] Lucky: вот, точно. надо отбрасывать 32 бита
[03:27:08] LGB: а если придёт указатель из пятого гига оперативы? =)))
[03:27:21] Lucky: :D
[03:27:25] Lucky: жуть
[03:27:27] LGB: скомпиль лучше под 32 бита иль мой бинарник попробуй
[03:27:40] Lucky: вот тебе и липовая кроссплатформенность
[03:28:10] LGB: да это код такой… IBM давно о таких проблемах писала, ониж всякие компы делают и им эт известно
[03:28:57] Lucky: твой бинарник говорит Text file busy
[03:29:00] Lucky: :)
[03:29:47] LGB: https://lgbalukation.wordpress.com/2008/04/05/converting_32bit_applications_into_64bit_applications/
[03:30:01] LGB: фигасе он разговорчивый
[03:30:32] LGB: lgb@LGB ~ $ AvP
Unable to find the AvP gamedata.
The directory last examined was: .
Has the game been installed and
are all game files lowercase?
[03:30:46] Lucky: :)
[03:31:39] Lucky: а ссылка к чему? теперь мне надо игрушку портировать на amd64? :D
[03:31:55] LGB: оге =)))
[03:33:13] LGB: прощще её всёж собрать в 32-битной системе иль гонять оригинал под вайном. Этож первый хишник против чужий, древняя игра на древнем движке — один хрен те её искать, дык и играй в вайне =)

/* тут был жёсткий оффтоп… */

[04:06:57] Lucky: собралось наконец то! :)
[04:07:11] LGB: биты отбросил?
[04:07:18] Lucky: нет
[04:07:37] Lucky: 32-битную через кросскомпилинг
[04:08:47] LGB: терь саму игру найти ещё осталось? =)
[04:09:00] Lucky: ага :D
[04:09:14] Lucky: ну можно считать пол игры пройдено
[04:09:28] Lucky: сборка игры это первый квест
[04:10:04] LGB: дооо… получив бинарник на два с половиной метра надо терь игруху на соточку искать =)
[04:10:17] LGB: но собрать сложнее всёж
[04:10:28] Lucky: :D
[04:10:35] Lucky: она 1,2Gb
[04:10:51] LGB: бугого
[04:16:25] LGB: бывай, пойду я спать потихоньку собираться
[04:16:39] Lucky: пока

Advertisements

комментария 2 to “Старые игры и новые технологии”

  1. Igor said

    так а что не через вайн? Он не работает в 64 что ли?

  2. Дык у чела самой игры нет, чтоб под вайном запускать. Вот хотели собрать порт, а он тока 32бита — пришлось кросскомпилить.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s