├── lang ├── irish.lng ├── norwegian_nynorsk.lng ├── japanese.lng ├── simplified_chinese.lng ├── traditional_chinese.lng ├── english.lng ├── danish.lng ├── korean.lng ├── luxembourgish.lng ├── english_AU.lng ├── english_US.lng ├── swedish.lng ├── finnish.lng ├── hindi.lng ├── maori.lng ├── persian.lng ├── indonesian.lng ├── dutch.lng ├── esperanto.lng ├── tamil.lng ├── welsh.lng ├── arabic_egypt.lng ├── hungarian.lng ├── thai.lng ├── ukrainian.lng ├── estonian.lng ├── german.lng ├── slovak.lng ├── spanish_MX.lng ├── brazilian_portuguese.lng ├── french.lng ├── slovenian.lng ├── vietnamese.lng ├── afrikaans.lng ├── romanian.lng ├── catalan.lng ├── polish.lng ├── croatian.lng ├── galician.lng ├── hebrew.lng ├── latin.lng ├── norwegian_bokmal.lng ├── turkish.lng ├── bulgarian.lng ├── portuguese.lng ├── serbian.lng ├── greek.lng ├── lithuanian.lng ├── italian.lng ├── spanish.lng ├── czech.lng ├── gaelic.lng ├── belarusian.lng ├── russian.lng └── latvian.lng ├── src ├── tttheme2.mid ├── relax_song.mid ├── busy_schedule.mid ├── chemistry_lab.mid ├── chuggachugga.mid ├── coconut_run2.mid ├── harp_harmony.mid ├── linns_basket.mid ├── modern_motion.mid ├── moo_redfarn.mid ├── ultimate_run.mid ├── wood_whistles.mid ├── flying_scotsman.mid ├── keep_on_rolling.mid ├── the_fast_route.mid ├── ttsong_iv_imuh3.mid ├── 5432gone_redfarn.mid ├── city_blues_redfarn.mid ├── midnight_snow_run.mid ├── mighty_giant_run.mid ├── run_for_your_life.mid ├── say_what_redfarn.mid ├── slow_neasy_redfarn.mid ├── the_hobo_redfarn.mid ├── ttsong_iii_imuh3.mid ├── be_sharp_bw_redfarn.mid ├── boogi_marabi_redfarn.mid ├── mosey_along_redfarn.mid ├── no_work_song_redfarn.mid ├── careless_perc_redfarn.mid ├── train_filled_with_cash.mid └── themes.list ├── .dorpsgek.yml ├── .github └── workflows │ ├── testing.yml │ ├── release.yml │ └── commit-checker.yml ├── .gitignore ├── Makefile.config ├── scripts ├── authorlist.py ├── midifiles.py ├── namelist.py ├── playlist.py ├── sanitize_list.py ├── md5list.py └── translations.sh ├── Makefile.in ├── docs ├── openttd-openmsx.spec └── redfarn_music_grant.txt ├── changelog.txt ├── findversion.sh ├── Makefile.local.sample ├── README.md ├── LICENSE └── Makefile /lang/irish.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x08 2 | ##plural 4 3 | -------------------------------------------------------------------------------- /src/tttheme2.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/tttheme2.mid -------------------------------------------------------------------------------- /src/relax_song.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/relax_song.mid -------------------------------------------------------------------------------- /src/busy_schedule.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/busy_schedule.mid -------------------------------------------------------------------------------- /src/chemistry_lab.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/chemistry_lab.mid -------------------------------------------------------------------------------- /src/chuggachugga.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/chuggachugga.mid -------------------------------------------------------------------------------- /src/coconut_run2.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/coconut_run2.mid -------------------------------------------------------------------------------- /src/harp_harmony.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/harp_harmony.mid -------------------------------------------------------------------------------- /src/linns_basket.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/linns_basket.mid -------------------------------------------------------------------------------- /src/modern_motion.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/modern_motion.mid -------------------------------------------------------------------------------- /src/moo_redfarn.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/moo_redfarn.mid -------------------------------------------------------------------------------- /src/ultimate_run.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/ultimate_run.mid -------------------------------------------------------------------------------- /src/wood_whistles.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/wood_whistles.mid -------------------------------------------------------------------------------- /src/flying_scotsman.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/flying_scotsman.mid -------------------------------------------------------------------------------- /src/keep_on_rolling.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/keep_on_rolling.mid -------------------------------------------------------------------------------- /src/the_fast_route.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/the_fast_route.mid -------------------------------------------------------------------------------- /src/ttsong_iv_imuh3.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/ttsong_iv_imuh3.mid -------------------------------------------------------------------------------- /src/5432gone_redfarn.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/5432gone_redfarn.mid -------------------------------------------------------------------------------- /src/city_blues_redfarn.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/city_blues_redfarn.mid -------------------------------------------------------------------------------- /src/midnight_snow_run.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/midnight_snow_run.mid -------------------------------------------------------------------------------- /src/mighty_giant_run.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/mighty_giant_run.mid -------------------------------------------------------------------------------- /src/run_for_your_life.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/run_for_your_life.mid -------------------------------------------------------------------------------- /src/say_what_redfarn.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/say_what_redfarn.mid -------------------------------------------------------------------------------- /src/slow_neasy_redfarn.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/slow_neasy_redfarn.mid -------------------------------------------------------------------------------- /src/the_hobo_redfarn.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/the_hobo_redfarn.mid -------------------------------------------------------------------------------- /src/ttsong_iii_imuh3.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/ttsong_iii_imuh3.mid -------------------------------------------------------------------------------- /src/be_sharp_bw_redfarn.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/be_sharp_bw_redfarn.mid -------------------------------------------------------------------------------- /src/boogi_marabi_redfarn.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/boogi_marabi_redfarn.mid -------------------------------------------------------------------------------- /src/mosey_along_redfarn.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/mosey_along_redfarn.mid -------------------------------------------------------------------------------- /src/no_work_song_redfarn.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/no_work_song_redfarn.mid -------------------------------------------------------------------------------- /src/careless_perc_redfarn.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/careless_perc_redfarn.mid -------------------------------------------------------------------------------- /src/train_filled_with_cash.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenTTD/OpenMSX/HEAD/src/train_filled_with_cash.mid -------------------------------------------------------------------------------- /lang/norwegian_nynorsk.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x0e 2 | ##plural 0 3 | ##gender feminine masculine neuter 4 | ##case small 5 | -------------------------------------------------------------------------------- /.dorpsgek.yml: -------------------------------------------------------------------------------- 1 | notifications: 2 | global: 3 | irc: 4 | - openttd 5 | - openttd.notice 6 | 7 | pull-request: 8 | issue: 9 | tag-created: 10 | -------------------------------------------------------------------------------- /lang/japanese.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x39 2 | ##plural 1 3 | STR_GENERAL_DESC :OpenTTD 用の OpenMSX 音楽セット。GPL v2 に基づいて自由に利用できます。完全なクレジットは "readme.txt" を参照してください。 [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/simplified_chinese.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x56 2 | ##plural 1 3 | STR_GENERAL_DESC :OpenMSX 是一套供 OpenTTD 使用的基础音乐包。在 GNU 通用公共授权条款版本 2 之授权下可自由使用。完整的鸣谢清单请参阅 "readme.txt"。 [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/traditional_chinese.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x0c 2 | ##plural 1 3 | STR_GENERAL_DESC :OpenMSX 是一套供 OpenTTD 使用的基本音樂集。在 GNU 通用公共授權條款版本 2 之授權下可自由使用。如欲觀看完整的鳴謝清單,請參閱 "readme.txt"。 [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/english.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x01 2 | STR_GENERAL_DESC :OpenMSX base music set for OpenTTD. Freely available under the terms of the GPL v2. For full credits see "readme.txt" [{TITLE}] 3 | 4 | -------------------------------------------------------------------------------- /lang/danish.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x2d 2 | ##plural 0 3 | STR_GENERAL_DESC :OpenMSX basismusiksæt til OpenTTD. Frit tilgængelig under betingelserne i GPL v2. For fuld kredit, se "readme.txt" [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/korean.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x3a 2 | ##plural 11 3 | ##gender m f 4 | STR_GENERAL_DESC :OpenTTD용 OpenMSX 기본 배경 음악 세트입니다. GPL v2 약관 하에 자유롭게 사용하실 수 있습니다. 자세한 사항은 "readme.txt"을 읽어보십시오. [{TITLE}] 5 | -------------------------------------------------------------------------------- /lang/luxembourgish.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x23 2 | ##plural 0 3 | STR_GENERAL_DESC :OpenMSX Musik Set fir OpenTTD. Gratis ze kréien mat enger GPL v2 Lizenz. Fir all d'Credits, lies "readme.txt". [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/english_AU.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x3d 2 | ##plural 0 3 | STR_GENERAL_DESC :OpenMSX base music set for OpenTTD. Freely available under the terms of the GPL v2. For full credits see "readme.txt" [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/english_US.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x00 2 | ##plural 0 3 | STR_GENERAL_DESC :OpenMSX base music set for OpenTTD. Freely available under the terms of the GPL v2. For full credits see "readme.txt" [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/swedish.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x2e 2 | ##plural 0 3 | STR_GENERAL_DESC :Musikpaketet OpenMSX för OpenTTD. Fritt tillgängligt enligt villkoren för GPL v2. För samtliga medverkande se "readme.txt". [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/finnish.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x35 2 | ##plural 0 3 | STR_GENERAL_DESC :OpenMSX-perusmusiikkipaketti OpenTTD:lle. Vapaasti saatavilla GPL v2 -lisenssin ehdoilla. Kaikki tekijät Readme-tiedostossa. [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/hindi.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x17 2 | ##plural 0 3 | STR_GENERAL_DESC :OpenTTD के लिए OpenMSX बेस म्यूजिक सेट । GPL v2 की शर्तों के तहत स्वतंत्र रूप से उपलब्ध है । पूर्ण क्रेडिट के लिए "readme.txt" [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/maori.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x40 2 | ##plural 0 3 | STR_GENERAL_DESC :Ko OpenMSX he kohinga pūoro mātāmua mō OpenTTD. Kei te wātea noa i ngā ture o te GPL v2. Mō ngā mihi katoa, tirohia a readme.txt. [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/persian.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x62 2 | ##plural 0 3 | STR_GENERAL_DESC :ست موسیقی OpenMSX برای OpenTTD. [{TITLE}] قابل استفاده به صورت رایگان تحت ضوابط GPL2. برای لیست کامل عوامل به فایل readme.txt مراجعه کنید. 4 | -------------------------------------------------------------------------------- /lang/indonesian.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x5a 2 | ##plural 1 3 | STR_GENERAL_DESC :Kumpulan musik dasar OpenMSX untuk OpenTTD. Tersedia secara bebas di bawah lisensi GPL v2. Untuk selengkapnya lihat "readme.txt". [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/dutch.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x1f 2 | ##plural 0 3 | STR_GENERAL_DESC :OpenMSX-basismuziekset voor OpenTTD. Vrij verkrijgbaar onder de voorwaarden van de GPL v2-licentie. Voor meer informatie, zie "readme.txt". [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/esperanto.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x05 2 | ##plural 0 3 | ##case n 4 | STR_GENERAL_DESC :OpenMSX baza muzikaro por OpenTTD. Libere uzebla laŭ la kondiĉoj de GPL v2. Por plena listo de agnoskoj, vidu "readme.txt" [{TITLE}] 5 | -------------------------------------------------------------------------------- /lang/tamil.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x0a 2 | ##plural 0 3 | STR_GENERAL_DESC :OpenMSX OpenTTD இன் இசை மாற்று தொகுப்பாகும். GPL v2 உரிமத்தின் கீழ் இலவசமாகக் கிடைக்கிறது. முழு மதிப்புகளுக்காக "readme.txt"-ஐ பார்க்கவும்.[{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/welsh.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x0f 2 | ##plural 0 3 | STR_GENERAL_DESC :Set cerddoriaeth sylfaen OpenMSX ar gyfer OpenTTD. Ar gael y nrhydd o dan termau'r GPL fersiwn 2. Ar gyfer credydau llawn gweler "readme.txt". [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/arabic_egypt.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x14 2 | ##plural 1 3 | STR_GENERAL_DESC :OpenMSXمجموعة الموسيقى الأساسية لـ OpenTTD. متاحة مجانا تحت نظام النسخة الثانية من الرخص الشعبية العامة GPL . لتفاصيل الكاملة اقرا "readme.txt". [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/hungarian.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x24 2 | ##plural 2 3 | ##case t ba 4 | STR_GENERAL_DESC :OpenMSX zenei alapcsomag az OpenTTD-hez. Ingyenesen hozzáférhető a GPL v2 feltételeivel. A teljes stáblistához lásd a readme-t. [{TITLE}] 5 | -------------------------------------------------------------------------------- /lang/thai.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x42 2 | ##plural 1 3 | STR_GENERAL_DESC :OpenMSX เป็นระบบเสียงเพลงที่ถูกสร้างขึ้นมาสำหรับ OpenTTD ในรูปแบบใช้งานฟรี อยู่ภายใต้ลิขสิทธิ์ GPL v2 สำหรับเครดิตต่างๆ สามารถดูได้ที่ "readme.txt" [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/ukrainian.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x33 2 | ##plural 6 3 | ##gender s mn f m 4 | ##case r d z 5 | STR_GENERAL_DESC :OpenMSX -- базова музика для OpenTTD. Вільно доступна за умовами GPL v2. Детальніше дивись "readme.txt" [{TITLE}] 6 | -------------------------------------------------------------------------------- /lang/estonian.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x34 2 | ##plural 0 3 | ##case sü g in 4 | STR_GENERAL_DESC :OpenMSX baasmuusika OpenTTD jaoks. Vabalt saadaval GNU Üldise Avaliku Litsentsi versioon 2 alusel. Täpsemalt vaata failist "readme.txt". [{TITLE}] 5 | -------------------------------------------------------------------------------- /lang/german.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x02 2 | ##plural 0 3 | ##gender p m w n 4 | STR_GENERAL_DESC :OpenMSX-Basismusikset für OpenTTD. Frei verfügbar unter den Bedingungen der GPL v2. Die vollständigen Referenzen sind in „readme.txt“. [{TITLE}] 5 | -------------------------------------------------------------------------------- /lang/slovak.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x16 2 | ##plural 10 3 | ##gender s z m 4 | ##case g 5 | STR_GENERAL_DESC :OpenMSX, základná sada hudby pre OpenTTD. Voľne dostupná pod licenciou GPL v2. Viac informácií nájdete v súbore "readme.txt" [{TITLE}] 6 | -------------------------------------------------------------------------------- /lang/spanish_MX.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x55 2 | ##plural 0 3 | ##gender m f 4 | STR_GENERAL_DESC :Paquete base de música OpenMSX para OpenTTD, disponible de forma libre bajo los términos de la GPL v2. Créditos completos en el archivo Léeme [{TITLE}] 5 | -------------------------------------------------------------------------------- /lang/brazilian_portuguese.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x37 2 | ##plural 2 3 | ##gender m f 4 | STR_GENERAL_DESC :Conjunto de música base OpenMSX para OpenTTD. Disponível gratuitamente dentro dos termos da GPL v2. Para créditos completos ver "readme.txt" [{TITLE}] 5 | -------------------------------------------------------------------------------- /lang/french.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x03 2 | ##plural 2 3 | ##gender f m m2 4 | STR_GENERAL_DESC :Musiques OpenMSX pour OpenTTD. Disponible librement selon les termes de la licence GPL v2. Pour consulter l'intégralité les crédits, consultez "readme.txt" [{TITLE}] 5 | -------------------------------------------------------------------------------- /lang/slovenian.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x2c 2 | ##plural 8 3 | ##case r d t 4 | STR_GENERAL_DESC :Osnovni glasbeni komplet OpenMSX za OpenTTD. Na voljo zastonj pod licenco GNU General Public License verzija 2. Za vse zahvale poglejte datoteko "readme.txt". [{TITLE}] 5 | -------------------------------------------------------------------------------- /lang/vietnamese.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x54 2 | ##plural 1 3 | STR_GENERAL_DESC :Gói âm nhạc nền tảng OpenMSX dùng cho OpenTTD. Được phát hành miễn phí dưới giấy phép GNU General Public License phiên bản 2. Xem các cá nhân đóng góp trong tệp "readme.txt" [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/afrikaans.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x1b 2 | ##plural 0 3 | ##gender male 4 | STR_GENERAL_DESC :OpenMSX musiek vervanging stel vir OpenTTD. Vrylik beskikbaar onder die terms van die GNU General Public License weergawe 2. Vir voledige erkennings kyk na "readme.txt". [{TITLE}] 5 | -------------------------------------------------------------------------------- /lang/romanian.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x28 2 | ##plural 0 3 | STR_GENERAL_DESC :Set de bază cu muzică OpenMSX pentru OpenTTD. Disponibil liber sub termenii Licenței Publice Generale GNU, versiunea 2. Pentru lista completă de credite, citiți fișierul "readme.txt". [{TITLE}] 4 | -------------------------------------------------------------------------------- /lang/catalan.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x22 2 | ##plural 0 3 | ##gender Masculin Femenin 4 | STR_GENERAL_DESC :Joc base de música OpenMSX per a l'OpenTTD. Disponible lliurement sota els termes de la GPL v2. Per veure la llista sencera de crèdits vegeu el fitxer "readme.txt" [{TITLE}] 5 | -------------------------------------------------------------------------------- /lang/polish.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x30 2 | ##plural 7 3 | ##gender n m f 4 | ##case c b d m n w 5 | STR_GENERAL_DESC :OpenMSX to podstawowy zestaw muzyki do OpenTTD. Swobodnie dostępny na warunkach licencji GNU GPL v2. Pełne informacje można znaleźć w pliku „readme”. [{TITLE}] 6 | -------------------------------------------------------------------------------- /lang/croatian.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x38 2 | ##plural 6 3 | ##gender middle male female 4 | ##case nom lok aku vok dat ins gen 5 | STR_GENERAL_DESC :OpenMSX osnovni glazbeni set za OpenTTD. Slobodno dostupno pod uvjetima GPL v2 licence. Za sve zasluge vidi "readme.txt". [{TITLE}] 6 | -------------------------------------------------------------------------------- /lang/galician.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x31 2 | ##plural 0 3 | ##gender m n f 4 | STR_GENERAL_DESC :Conxunto básico de música OpenMSX para OpenTTD. Dispoñible de xeito gratuito segundo os termos da Licenza Pública Xeral v2. Consulta o "readme.txt" para ver todos os créditos [{TITLE}] 5 | -------------------------------------------------------------------------------- /lang/hebrew.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x61 2 | ##plural 0 3 | ##gender m f 4 | ##case gen plural singular 5 | STR_GENERAL_DESC :OpenMSX היא חבילת הבסיס למוזיקה ב OpenTTD. מופץ באופן חופשי תחת רשיון GNU General Public License v2. מידע מלא וקרדיטים ניתן למצוא בקובץ "readme.txt" [{TITLE}] 6 | -------------------------------------------------------------------------------- /lang/latin.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x66 2 | ##plural 0 3 | ##gender m f n mp fp np 4 | ##case abl acc dat gen 5 | STR_GENERAL_DESC :OpenTTD fundamentum musicum OpenMSX. Gratis parabile est sub licentiam GPL v2. Si vis inspicere cunctam indicem agnitionum, vide "readme.txt" [{TITLE}] 6 | -------------------------------------------------------------------------------- /lang/norwegian_bokmal.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x2f 2 | ##plural 0 3 | ##gender feminine masculine neuter 4 | ##case small 5 | STR_GENERAL_DESC :OpenMSX erstatter musikken i OpenTTD. Fritt tilgjengelig under betingelsene i GPL v2. For fulle akkrediteringer se "readme.txt". [{TITLE}] 6 | -------------------------------------------------------------------------------- /lang/turkish.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x3e 2 | ##plural 1 3 | ##case tamlanan 4 | STR_GENERAL_DESC :OpenTTD için OpenMSX temel müzik seti. GNU Genel Kamu Lisansı sürüm 2 maddeleri kapsamında serbestçe edinilebilir. Hazırlayanların tam listesi için "readme.txt" dosyasına bakın. [{TITLE}] 5 | -------------------------------------------------------------------------------- /lang/bulgarian.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x18 2 | ##plural 0 3 | ##gender p n m f 4 | ##case p n m f 5 | STR_GENERAL_DESC :Базов музикален пакет OpenMSX за OpenTTD. Свободен за разпространение по условията на GNU General Public License версия 2. Повече информация вижте в "readme.txt" [{TITLE}] 6 | -------------------------------------------------------------------------------- /lang/portuguese.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x36 2 | ##plural 0 3 | ##gender fp f m mp n 4 | STR_GENERAL_DESC :Conjunto de música base OpenMSX para OpenTTD. Disponível de forma livre dentro dos termos da Licença Pública Geral, GNU versão 2. Para créditos completos ver "readme.txt" [{TITLE}] 5 | -------------------------------------------------------------------------------- /lang/serbian.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x0d 2 | ##plural 6 3 | ##gender ženski srednji muški 4 | ##case nom big aku vok dat lok ins gen 5 | STR_GENERAL_DESC :OpenMSX skup muzičkih numera za OpenTTD. Slobodno dostupan pod uslovima GPL v2. Detaljne zasluge pogledajte u "readme.txt". [{TITLE}] 6 | -------------------------------------------------------------------------------- /lang/greek.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x1e 2 | ##plural 2 3 | ##gender n m f 4 | ##case date geniki subs 5 | STR_GENERAL_DESC :Βασικό πακέτο μουσικής OpenMSX για το OpenTTD. Ελεύθερα διαθέσιμο υπό τους όρους της άδειας GPL v2. Για πλήρη κατάλογο συντελεστών δείτε το αρχείο "readme.txt" [{TITLE}] 6 | -------------------------------------------------------------------------------- /lang/lithuanian.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x2b 2 | ##plural 5 3 | ##gender vyr mot 4 | ##case ka kam kas ko kreip kuo kur 5 | STR_GENERAL_DESC :„OpenMSX“ – tai muzikos rinkinys, skirtas „OpenTTD“. Laisvai prieinamas pagal „GPL v2“ licenciją. Daugiau informacijos rasite „readme.txt“ faile. [{TITLE}] 6 | -------------------------------------------------------------------------------- /lang/italian.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x27 2 | ##plural 0 3 | ##gender ma m f 4 | ##case fp fs mp ms 5 | STR_GENERAL_DESC :OpenMSX è il pacchetto musicale base per OpenTTD. Liberamente disponibile secondo i termini della licenza GPL v2. Per l'elenco completo dei riconoscimenti, vedasi "readme.txt". [{TITLE}] 6 | -------------------------------------------------------------------------------- /lang/spanish.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x04 2 | ##plural 0 3 | ##gender m f 4 | STR_GENERAL_DESC :OpenMSX es un conjunto de música base para OpenTTD. Está disponible de forma libre bajo los términos de la Licencia Pública General GNU version 2. Para ver los créditos completos, consulta el "readme.txt". [{TITLE}] 5 | -------------------------------------------------------------------------------- /lang/czech.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x15 2 | ##plural 10 3 | ##gender fp map f mnp m n np 4 | ##case acc nom loc big voc ins dat small gen 5 | STR_GENERAL_DESC :Základní sada hudby OpenMSX pro OpenTTD. Volně dostupná pod licencí GNU General Public License verze 2. Bližší informace naleznete v souboru "readme.txt". [{TITLE}] 6 | -------------------------------------------------------------------------------- /lang/gaelic.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x13 2 | ##plural 13 3 | ##gender m f 4 | ##case dat nom gen voc 5 | STR_GENERAL_DESC :Seata a chuireas ceòl OpenMSX an àite airson OpenTTD. Tha seo ri fhaighinn saor ’s an asgaidh fo theirmichean GNU General Public License tionndadh 2. Airson fiosrachadh cliùtha iomlain, faic “readme.txt”. [{TITLE}] 6 | -------------------------------------------------------------------------------- /.github/workflows/testing.yml: -------------------------------------------------------------------------------- 1 | name: Testing 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | pull_request: 8 | branches: 9 | - master 10 | 11 | jobs: 12 | testing: 13 | name: Testing 14 | uses: OpenTTD/actions/.github/workflows/rw-entry-testing-baseset.yml@v4 15 | with: 16 | apt-packages: catcodec 17 | name: openmsx 18 | -------------------------------------------------------------------------------- /lang/belarusian.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x10 2 | ##plural 6 3 | ##gender p n m f 4 | ##case acc nom pre f abl m n dat p gen 5 | STR_GENERAL_DESC :OpenMSX уяўляе базавы набор музычнага афармлення для OpenTTD. Вольна распаўсюджваецца ў адпаведнасці з ліцэнзіяй GNU General Public License version 2. Больш падрабязную інфармацыю пра стваральнікаў набору можна пазнаць у дакуменце "readme.txt" [{TITLE}] 6 | -------------------------------------------------------------------------------- /lang/russian.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x07 2 | ##plural 6 3 | ##gender p n m f 4 | ##case acc nom pre f abl m n dat p gen 5 | STR_GENERAL_DESC :OpenMSX представляет базовый набор музыкального оформления для OpenTTD. Свободно распространяется в соответствии с лицензией GNU General Public License version 2. Более подробную информацию о создателях набора можно узнать в документе "readme.txt" [{TITLE}] 6 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | release: 5 | types: 6 | - published 7 | schedule: 8 | - cron: '0 23 * * *' 9 | workflow_dispatch: 10 | 11 | jobs: 12 | release: 13 | name: Release 14 | uses: OpenTTD/actions/.github/workflows/rw-entry-release-baseset.yml@v4 15 | secrets: inherit 16 | with: 17 | apt-packages: catcodec 18 | name: openmsx 19 | -------------------------------------------------------------------------------- /lang/latvian.lng: -------------------------------------------------------------------------------- 1 | ##grflangid 0x2a 2 | ##plural 3 3 | ##gender m f 4 | ##case kas 5 | STR_GENERAL_DESC :OpenMSX bāzes mūzikas komplekts OpenTTD. Pieejams bezmaksas, saskaņā ar GPL v2 noteikumiem. Pilnu autoru sarakstu skatiet rakstā “readme.txt” [{TITLE}] 6 | STR_GENERAL_DESC.kas :OpenMSX bāzes mūzikas komplekts OpenTTD. Pieejams bezmaksas, saskaņā ar GPL v2 noteikumiem. Pilnu autoru sarakstu skatiet rakstā “readme.txt” [{TITLE}] 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # The local makefile should be ignored: 2 | Makefile.local 3 | 4 | # And the description file and the grs which are generated automatically 5 | openmsx.obm 6 | openmsx-* 7 | openmsx.tar 8 | 9 | # Ignore intermediate files created by the Makefile: 10 | docs/license.txt 11 | docs/changelog.txt 12 | docs/readme.txt 13 | 14 | # Ignore directories from bundle creation / install: 15 | openmsx-nightly* 16 | openmsx 17 | 18 | #The .renum dir 19 | .renum 20 | 21 | # Ignore frequent development left-overs like 22 | # editor backups, patches, rejects etc. pp 23 | *.orig 24 | *.bak 25 | *.log 26 | *.rej 27 | *.diff 28 | *.patch 29 | *.kate-swp 30 | 31 | # Files created by Mac image preview and file browser: 32 | .DS_Store 33 | Thumbs.db 34 | -------------------------------------------------------------------------------- /Makefile.config: -------------------------------------------------------------------------------- 1 | # This file defines the principal settings for this project 2 | 3 | REPO_NAME := OpenMSX 4 | REPO_SHORTNAME := OMSX 5 | REPO_ORIGIN = default = Please redownload from BaNaNaS. 6 | # GRF_ID := 7 | 8 | GENERATE_GRF := music 9 | 10 | BASE_FILENAME := openmsx 11 | THEMES_FILE := src/themes.list 12 | MIDI_FILES := $(shell cat $(THEMES_FILE) | ./scripts/midifiles.py) 13 | LANG_FILES := $(shell ls lang/*.lng) 14 | BUNDLE_FILES = $(BASE_FILENAME).obm $(DOC_FILES) $(MIDI_FILES) 15 | 16 | MD5_SRC_FILENAME := $(BASE_FILENAME).obm 17 | # If everything is default, you don't need the rest: 18 | 19 | # comment out those dirs which are not in use 20 | SCRIPT_DIR = scripts 21 | -------------------------------------------------------------------------------- /scripts/authorlist.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # 3 | # This file is part of the OpenMSX music set for OpenTTD. 4 | # OpenMSX is free content; you can redistribute it and/or modify it under the terms of the 5 | # GNU General Public License as published by the Free Software Foundation, version 2. 6 | # OpenMSX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 7 | # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 8 | # See the GNU General Public License for more details. You should have received a copy of 9 | # the GNU General Public License along with Swedish RailSet. If not, see 10 | # . 11 | # 12 | 13 | import string 14 | import sys 15 | 16 | while 1: 17 | data = sys.stdin.readline() 18 | if data != '': 19 | # do some processing of the contents of 20 | # the data variable 21 | separate = data.split(';') 22 | print('%-30s %s' % (separate[1]+":", separate[2])) 23 | # end of data processing command group 24 | # sys.stdout.write(res) 25 | else: 26 | sys.stdout.flush() 27 | break 28 | -------------------------------------------------------------------------------- /scripts/midifiles.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # 3 | # This file is part of the OpenMSX music set for OpenTTD. 4 | # OpenMSX is free content; you can redistribute it and/or modify it under the terms of the 5 | # GNU General Public License as published by the Free Software Foundation, version 2. 6 | # OpenMSX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 7 | # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 8 | # See the GNU General Public License for more details. You should have received a copy of 9 | # the GNU General Public License along with Swedish RailSet. If not, see 10 | # . 11 | # 12 | 13 | import string 14 | import sys 15 | 16 | res = "" 17 | while 1: 18 | data = sys.stdin.readline() 19 | if data != '': 20 | # leave out all comment lines (lines starting with '#') 21 | comment_pos = data.find('#') 22 | if comment_pos == 0: 23 | continue 24 | # separate the single entries by ';' 25 | separate = data.split(';') 26 | if len(separate) != 4: 27 | continue 28 | res = res + " src/" + separate[1].strip() 29 | else: 30 | sys.stdout.write(res) 31 | sys.stdout.flush() 32 | break 33 | -------------------------------------------------------------------------------- /scripts/namelist.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # 3 | # This file is part of the OpenMSX music set for OpenTTD. 4 | # OpenMSX is free content; you can redistribute it and/or modify it under the terms of the 5 | # GNU General Public License as published by the Free Software Foundation, version 2. 6 | # OpenMSX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 7 | # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 8 | # See the GNU General Public License for more details. You should have received a copy of 9 | # the GNU General Public License along with Swedish RailSet. If not, see 10 | # . 11 | # 12 | 13 | import string 14 | import sys 15 | 16 | while 1: 17 | data = sys.stdin.readline() 18 | if data != '': 19 | # leave out all comment lines (lines starting with '#') 20 | comment_pos = data.find('#') 21 | if comment_pos == 0: 22 | continue 23 | # separate the single entries by ';' 24 | separate = data.split(';') 25 | if len(separate) != 4: 26 | continue 27 | res = "%-32s = %s\n" % (separate[1], separate[3].strip()) 28 | sys.stdout.write(res) 29 | else: 30 | sys.stdout.flush() 31 | break 32 | 33 | def authorlist(mystr): 34 | separate = separate.split() 35 | for str in separate: 36 | print(str.strip()) 37 | -------------------------------------------------------------------------------- /scripts/playlist.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # 3 | # This file is part of the OpenMSX music set for OpenTTD. 4 | # OpenMSX is free content; you can redistribute it and/or modify it under the terms of the 5 | # GNU General Public License as published by the Free Software Foundation, version 2. 6 | # OpenMSX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 7 | # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 8 | # See the GNU General Public License for more details. You should have received a copy of 9 | # the GNU General Public License along with Swedish RailSet. If not, see 10 | # . 11 | # 12 | 13 | import string 14 | import sys 15 | 16 | while 1: 17 | data = sys.stdin.readline() 18 | if data != '': 19 | # leave out all comment lines (lines starting with '#') 20 | comment_pos = data.find('#') 21 | if comment_pos == 0: 22 | continue 23 | # separate the single entries by ';' 24 | separate = data.split(';') 25 | res = "" 26 | # leave out all lines which don't have the proper number of elements 27 | if len(separate) >= 1: 28 | res = separate[0].strip() + " = " 29 | if len(separate) == 4: 30 | res = res + separate[1] 31 | res = res + "\n" 32 | sys.stdout.write(res) 33 | else: 34 | sys.stdout.flush() 35 | break 36 | 37 | def authorlist(mystr): 38 | separate = separate.split() 39 | for str in separate: 40 | print(str.strip()) 41 | -------------------------------------------------------------------------------- /scripts/sanitize_list.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # 3 | # This file is part of the OpenMSX music set for OpenTTD. 4 | # OpenMSX is free content; you can redistribute it and/or modify it under the terms of the 5 | # GNU General Public License as published by the Free Software Foundation, version 2. 6 | # OpenMSX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 7 | # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 8 | # See the GNU General Public License for more details. You should have received a copy of 9 | # the GNU General Public License along with Swedish RailSet. If not, see 10 | # . 11 | # 12 | 13 | import string 14 | import sys 15 | 16 | while 1: 17 | data = sys.stdin.readline() 18 | if data != '': 19 | # leave out all comment lines (lines starting with '#') 20 | comment_pos = data.find('#') 21 | if comment_pos == 0: 22 | continue 23 | # separate the single entries by ';' 24 | separate = data.split(';') 25 | if len(separate) != 4: 26 | continue 27 | res = "" 28 | for str in separate: 29 | if res != '': 30 | res = res + ";" + str.strip() 31 | else: 32 | res = str.strip() 33 | # end of data processing command group 34 | res = res + "\n" 35 | sys.stdout.write(res) 36 | else: 37 | sys.stdout.flush() 38 | break 39 | 40 | def authorlist(mystr): 41 | separate = separate.split() 42 | for str in separate: 43 | print(str.strip()) 44 | -------------------------------------------------------------------------------- /.github/workflows/commit-checker.yml: -------------------------------------------------------------------------------- 1 | name: Commit checker 2 | 3 | on: 4 | pull_request: 5 | 6 | jobs: 7 | commit-checker: 8 | name: Commit checker 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - name: Checkout 13 | uses: actions/checkout@v2 14 | with: 15 | fetch-depth: 4 16 | 17 | - name: Get pull-request commits 18 | run: | 19 | set -x 20 | # actions/checkout did a merge checkout of the pull-request. As such, the first 21 | # commit is the merge commit. This means that on HEAD^ is the base branch, and 22 | # on HEAD^2 are the commits from the pull-request. We now check if those trees 23 | # have a common parent. If not, we fetch a few more commits till we do. In result, 24 | # the log between HEAD^ and HEAD^2 will be the commits in the pull-request. 25 | DEPTH=4 26 | while [ -z "$(git merge-base HEAD^ HEAD^2)" ]; do 27 | git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --deepen=${DEPTH} origin HEAD 28 | DEPTH=$(( ${DEPTH} * 4 )) 29 | done 30 | 31 | # Just to show which commits we are going to evaluate. 32 | git log --oneline HEAD^..HEAD^2 33 | 34 | - name: Checkout commit-checker 35 | uses: actions/checkout@v2 36 | with: 37 | repository: OpenTTD/OpenTTD-git-hooks 38 | path: git-hooks 39 | ref: master 40 | 41 | - name: Check commits 42 | run: | 43 | set -x 44 | HOOKS_DIR=./git-hooks/hooks GIT_DIR=.git ./git-hooks/hooks/check-commits.sh HEAD^..HEAD^2 45 | echo "Commit checks passed" 46 | 47 | -------------------------------------------------------------------------------- /Makefile.in: -------------------------------------------------------------------------------- 1 | # 2 | # This file is part of the OpenMSX music set for OpenTTD. 3 | # OpenMSX is free content; you can redistribute it and/or modify it under the terms of the 4 | # GNU General Public License as published by the Free Software Foundation, version 2. 5 | # OpenMSX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 6 | # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 7 | # See the GNU General Public License for more details. You should have received a copy of 8 | # the GNU General Public License along with Swedish RailSet. If not, see 9 | # . 10 | # 11 | 12 | $(BASE_FILENAME).obm: $(LANG_FILES) $(MIDI_FILES) $(THEMES_FILE) Makefile Makefile.in Makefile.config 13 | $(_E) "[Generating] $@" 14 | @echo "[metadata]" > $@ 15 | @echo "name = $(REPO_NAME)" >> $@ 16 | @echo "shortname = $(REPO_SHORTNAME)" >> $@ 17 | @echo "version = $(NEWGRF_VERSION)" >> $@ 18 | $(_V) $(SCRIPT_DIR)/translations.sh | sed 's/{TITLE}/$(REPO_TITLE)/' >> $@ 19 | 20 | @echo "" >> $@ 21 | @echo "[files]" >> $@ 22 | $(_V) cat $(THEMES_FILE) | scripts/playlist.py >> $@ 23 | 24 | @echo "" >> $@ 25 | @echo "[md5s]" >> $@ 26 | $(_V) cat $(THEMES_FILE) | scripts/sanitize_list.py | scripts/md5list.py >> $@ 27 | 28 | @echo "" >> $@ 29 | @echo "[names]" >> $@ 30 | $(_V) cat $(THEMES_FILE) | scripts/sanitize_list.py | scripts/namelist.py >> $@ 31 | 32 | @echo "" >> $@ 33 | @echo "[origin]" >> $@ 34 | @echo "$(REPO_ORIGIN)" >> $@ 35 | $(_E) "[Done] Basemusic successfully generated." 36 | $(_E) "" 37 | 38 | music: $(BASE_FILENAME).obm 39 | 40 | clean:: 41 | $(_V) -rm $(BASE_FILENAME).obm 42 | -------------------------------------------------------------------------------- /scripts/md5list.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # 3 | # This file is part of the OpenMSX music set for OpenTTD. 4 | # OpenMSX is free content; you can redistribute it and/or modify it under the terms of the 5 | # GNU General Public License as published by the Free Software Foundation, version 2. 6 | # OpenMSX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 7 | # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 8 | # See the GNU General Public License for more details. You should have received a copy of 9 | # the GNU General Public License along with Swedish RailSet. If not, see 10 | # . 11 | # 12 | 13 | import string 14 | import sys 15 | import subprocess 16 | import os 17 | 18 | while 1: 19 | data = sys.stdin.readline() 20 | if data != '': 21 | # leave out all comment lines (lines starting with '#') 22 | comment_pos = data.find('#') 23 | if comment_pos == 0: 24 | continue 25 | # separate the single entries by ';' 26 | separate = data.split(';') 27 | if len(separate) != 4: 28 | continue 29 | systemtype = (os.uname())[0] 30 | if systemtype == 'Linux': 31 | md5call = ["md5sum"] 32 | elif systemtype == 'Darwin': 33 | md5call = ["md5", "-r"] 34 | else: 35 | md5call = ["md5sum"] 36 | md5call = md5call + ["src/"+separate[1].strip()] 37 | md5sum = subprocess.Popen(md5call, stdout=subprocess.PIPE).communicate()[0] 38 | md5sum = md5sum.split() 39 | res = "%-32s = %s\n" % (separate[1], md5sum[0].decode()) 40 | sys.stdout.write(res) 41 | else: 42 | sys.stdout.flush() 43 | break 44 | -------------------------------------------------------------------------------- /docs/openttd-openmsx.spec: -------------------------------------------------------------------------------- 1 | # 2 | # spec file for package openttd-openmsx 3 | # 4 | # Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. 5 | # 6 | # All modifications and additions to the file contributed by third parties 7 | # remain the property of their copyright owners, unless otherwise agreed 8 | # upon. The license for this file, and modifications and additions to the 9 | # file, is the same license as for the pristine package itself (unless the 10 | # license for the pristine package is not an Open Source License, in which 11 | # case the license is the MIT License). An "Open Source License" is a 12 | # license that conforms to the Open Source Definition (Version 1.9) 13 | # published by the Open Source Initiative. 14 | 15 | # Please submit bugfixes or comments via http://bugs.opensuse.org/ 16 | # 17 | 18 | 19 | Name: openttd-openmsx 20 | Version: 0.3.1 21 | Release: 1%{?dist} 22 | Summary: An OpenTTD Music set 23 | License: GPL-2.0 24 | Group: Amusements/Games/Strategy/Other 25 | 26 | Url: http://dev.openttdcoop.org/projects/openmsx 27 | Source0: http://bundles.openttdcoop.org/openmsx/releases/%{version}/openmsx-%{version}-source.tar.gz 28 | BuildRoot: %{_tmppath}/%{name}-%{version}-build 29 | BuildArch: noarch 30 | 31 | BuildRequires: python 32 | Requires: openttd-data >= 1.2 33 | Requires: timidity 34 | 35 | %description 36 | OpenMSX is an open source replacement for the original Transport Tycoon Deluxe (TTD) 37 | music. All contributions are licensed under the GPL v2. 38 | 39 | %prep 40 | %setup -qn openmsx-%{version}-source 41 | 42 | %build 43 | make %{?_smp_mflags} _V= 44 | 45 | %install 46 | %define omsxdir %{_datadir}/openttd/baseset 47 | make install INSTALL_DIR=%{buildroot}%{omsxdir} _V= 48 | #openmsx adds a versioned dir to the install dir 49 | %define omsxdir %{_datadir}/openttd/baseset/openmsx-%{version} 50 | 51 | %files 52 | %defattr(-,root,root,-) 53 | %dir %{_datadir}/openttd 54 | %dir %{_datadir}/openttd/baseset 55 | %dir %{omsxdir} 56 | %doc %{omsxdir}/changelog.txt 57 | %doc %{omsxdir}/license.txt 58 | %doc %{omsxdir}/readme.txt 59 | %{omsxdir}/openmsx.obm 60 | %{omsxdir}/*.mid 61 | 62 | %changelog 63 | -------------------------------------------------------------------------------- /scripts/translations.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | function get_langline() { 4 | id=`cat $1 | grep -a 'grflangid' | cut -c13-16` 5 | text=`cat $1 | grep -a 'STR_GENERAL_DESC[[:space:]]*:' | cut -d: -f2-` 6 | langcode="" 7 | case "$id" in 8 | "0x00" ) langcode="en_US";; 9 | "0x01" ) langcode="en_GB";; 10 | "0x02" ) langcode="de_DE";; 11 | "0x03" ) langcode="fr_FR";; 12 | "0x04" ) langcode="es_ES";; 13 | "0x05" ) langcode="eo_EO";; 14 | "0x06" ) langcode="io_IO";; 15 | "0x07" ) langcode="ru_RU";; 16 | "0x08" ) langcode="ga_IE";; 17 | "0x09" ) langcode="mt_MT";; 18 | "0x0a" ) langcode="ta_IN";; 19 | "0x0b" ) langcode="cv_RU";; 20 | "0x0c" ) langcode="zh_TW";; 21 | "0x0d" ) langcode="sr_RS";; 22 | "0x0e" ) langcode="nn_NO";; 23 | "0x0f" ) langcode="cy_GB";; 24 | "0x10" ) langcode="be_BY";; 25 | "0x11" ) langcode="mr_IN";; 26 | "0x12" ) langcode="fo_FO";; 27 | "0x13" ) langcode="gd_GB";; 28 | "0x14" ) langcode="ar_EG";; 29 | "0x15" ) langcode="cs_CZ";; 30 | "0x16" ) langcode="sk_SK";; 31 | "0x17" ) langcode="hi_IN";; 32 | "0x18" ) langcode="bg_BG";; 33 | #0x19 34 | #0x1a 35 | "0x1b" ) langcode="af_ZA";; 36 | #0x1c 37 | #0x1d 38 | "0x1e" ) langcode="el_GR";; 39 | "0x1f" ) langcode="nl_NL";; 40 | #0x20 41 | "0x21" ) langcode="eu_ES";; 42 | "0x22" ) langcode="ca_ES";; 43 | "0x23" ) langcode="lb_LU";; 44 | "0x24" ) langcode="hu_HU";; 45 | #0x25 46 | "0x26" ) langcode="mk_MK";; 47 | "0x27" ) langcode="it_IT";; 48 | "0x28" ) langcode="ro_RO";; 49 | "0x29" ) langcode="is_IS";; 50 | "0x2a" ) langcode="lv_LV";; 51 | "0x2b" ) langcode="lt_LT";; 52 | "0x2c" ) langcode="sl_SI";; 53 | "0x2d" ) langcode="da_DK";; 54 | "0x2e" ) langcode="sv_SE";; 55 | "0x2f" ) langcode="nb_NO";; 56 | "0x30" ) langcode="pl_PL";; 57 | "0x31" ) langcode="gl_ES";; 58 | "0x32" ) langcode="fy_NL";; 59 | "0x33" ) langcode="uk_UA";; 60 | "0x34" ) langcode="et_EE";; 61 | "0x35" ) langcode="fi_FI";; 62 | "0x36" ) langcode="pt_PT";; 63 | "0x37" ) langcode="pt_BR";; 64 | "0x38" ) langcode="hr_HR";; 65 | "0x39" ) langcode="ja_JP";; 66 | "0x3a" ) langcode="ko_KR";; 67 | #0x3b 68 | "0x3c" ) langcode="ms_MY";; 69 | "0x3d" ) langcode="en_AU";; 70 | "0x3e" ) langcode="tr_TR";; 71 | #0x3f 72 | #0x40 73 | #0x41 74 | "0x42" ) langcode="th_TH";; 75 | #0x43 76 | # | 77 | #0x53 78 | "0x54" ) langcode="vi_VN";; 79 | "0x55" ) langcode="es_MX";; 80 | "0x56" ) langcode="zh_CN";; 81 | #0x57 82 | #0x58 83 | #0x59 84 | "0x5a" ) langcode="id_ID";; 85 | #0x5b 86 | "0x5c" ) langcode="ur_PK";; 87 | #0x5d 88 | # | 89 | #0x60 90 | "0x61" ) langcode="he_IL";; 91 | "0x62" ) langcode="fa_IR";; 92 | #0x63 93 | #0x64 94 | #0x65 95 | "0x66" ) langcode="la_VA";; 96 | esac 97 | 98 | # special treatment for the default language, en_GB 99 | if [ "$langcode" == "en_GB" ]; then 100 | generalline="description = $text" 101 | fi 102 | line="description.$langcode = $text" 103 | } 104 | 105 | # Obtain list of lang files 106 | lang_files="`ls lang/*.lng`" 107 | 108 | # Loop over language files 109 | for i in $lang_files; do 110 | # echo "Processing: $i" 111 | get_langline $i 112 | 113 | # make sure that we only write sensible stuff 114 | if [ "$langcode" != "" ] && [ "$text" != "" ]; then 115 | echo "$line" 116 | fi 117 | done 118 | echo "$generalline" 119 | 120 | # echo "$1 has language $langcode." 121 | -------------------------------------------------------------------------------- /changelog.txt: -------------------------------------------------------------------------------- 1 | OpenMSX 0.4.2 2 | ------------- 3 | Fix: Issue preventing BaNaNaS upload due to a lack of any checksum changes 4 | 5 | 6 | 7 | OpenMSX 0.4.1 8 | ------------- 9 | Update: Lots of translations 10 | Fix: Install location used by the build system 11 | 12 | 13 | 14 | OpenMSX 0.4.0 15 | ------------- 16 | Change: Restore 'Keep on Rolling' by Trolley Trev 17 | Change: Stop calling OpenMSX a 'replacement' 18 | 19 | 20 | 21 | OpenMSX 0.3.1 22 | ------------- 23 | Change: Add copyright information to build system 24 | 25 | Fix #1210: Typo in readme. 26 | Fix #1202: Replace 'Keep on rolling' (temporarily) with 'Big Man Boogie' by Jim Redfarn 27 | Fix #1078: Let songs set their assumed defaults (editing by Xrufu) 28 | 29 | 30 | 31 | OpenMSX 0.3.0 32 | ------------- 33 | Feature: 'Unidentifed Flying Scotsman' by imuh3 34 | Feature: 'Chugga Chugga Cha-ching' by imuh3 35 | Feature: '5432..Gone' from Jim Redfarn 36 | Feature: 'Boogie Marabi' from Jim Redfarn 37 | Feature: 'Moo Moo Boogie' from Jim Redfarn 38 | Feature: 'Say What' from Jim Redfarn 39 | Feature: 'Be sharp boogie' from Jim Redfarn 40 | Feature: 'Careless Love' by Jim Redfarn 41 | Feature: 'Mosey Along' by Jim Redfarn 42 | Feature: 'Slow and Easy' by Jim Redfarn 43 | Feature: 'City Blues' by Jim Redfarn 44 | Feature: 'No Work Song' by Jim Redfarn 45 | Feature: 'The Hobo' by Jim Redfarn 46 | Feature: [Makefile] Add 'addcheck' which checks for dependencies not added to the mercurial repo 47 | Feature: [Makefile] Introduce target 'distclean' which should delete everything not found in the tarball (based on patch by blathijs) 48 | 49 | Change: License now is only GPL v2 50 | Change: Rename the title theme into 'OpenTTD journey' 51 | 52 | Fix: Don't rebuild the md5sums file which one checks against 53 | Fix: Replace invalid general midi 'Little Blue Box Car' by 'Downtown cab ride' by imuh3 54 | Fix: Replace invalid general midi 'Smooth Groove' by 'Skydive' by imuh3 55 | Fix: [Makefile] Don't rebuild the md5sums file which one wants to check against 56 | Fix: [Makefile] Don't pack files which make no sense in a source release 57 | Fix: [Makefile] Fail on the missing file, not on the dependency check 58 | Fix: [Makefile] {{tag}} didn't work for some tags in readme file 59 | Fix: [Makefile] Also ignore removed files for dep checks 60 | 61 | 62 | 63 | OpenMSX 0.2.1 64 | ------------- 65 | Feature: New title theme 66 | Feature: New song 'Train filled with cash' 67 | 68 | Change: [Makefile] Use a modified general newgrf makefile 69 | Change: Smooth Groove is no longer title song 70 | Change: Replace 'Simple ride' by 'Ultimate run' 71 | Change: Replace 'Wandering Dark Castle' by 'Coconut Run 2' 72 | Change: Replace 'Rubens Random Kingodom' by 'Run For Your Life' 73 | 74 | Fix: Add two missing files 75 | 76 | Update: Base set translations for Polish, Romanian, Slovak, Serbian and Turkish 77 | 78 | 79 | 80 | OpenMSX 0.2.0 81 | ------------- 82 | Change: Rename 'Theme song' into 'Smooth groove' and update its music a bit 83 | Update: New version of 'Keep on Rolling' 84 | Update: African, Arabic, Catalan, Danish, Estonian, Greek and Norwegian (Nynorsk) base set translations. 85 | Feature: Add 'Busy Schedule' and 'The Fast Route' 86 | Feature: Add 10 new songs as modern theme: Simple ride, Midnight snow run, Deep down chemistry lab, Harp harmony 'n humor, 87 | Rubens random kingdom, Wandering dark castle, Wood whistles, Linn's basket of treats, Plain simple relax song and Mighty giant run 88 | 89 | 90 | 91 | OpenMSX 0.1.0 92 | ------------- 93 | Feature: Modern Motion (Mr.Ksoft) 94 | Feature: Little Blue Box Car (Hazza) 95 | Feature: Keep on Rolling (Trolley Trev) 96 | Feature: Theme song (Samwise) 97 | Feature: Bulgarian, Chinese (Traditional), Croatian, Indonesian, Norwegian (Bokmal), Portuguese, Russian, Slovenian, Swedish, Dutch, Italian, French, Hungarian, Spanish, German and Czech description translations 98 | Feature: Build system which allows building the whole set from a simple table 99 | -------------------------------------------------------------------------------- /findversion.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # This file is part of OpenTTD. 4 | # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. 5 | # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 6 | # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . 7 | 8 | 9 | # Arguments given? Show help text. 10 | if [ "$#" != "0" ]; then 11 | cat <\t\t\t 16 | VERSION 17 | a string describing what version of the code the current checkout is 18 | based on. 19 | This also includes the commit date, an indication of whether the checkout 20 | was modified and which branch was checked out. This value is not 21 | guaranteed to be sortable, but is mainly meant for identifying the 22 | revision and user display. 23 | 24 | If no revision identifier could be found, this is left empty. 25 | ISODATE 26 | the commit date of the revision this checkout is based on. 27 | The commit date may differ from the author date. 28 | This can be used to decide upon the age of the source. 29 | 30 | If no timestamp could be found, this is left empty. 31 | MODIFIED 32 | Whether (the src directory of) this checkout is modified or not. A 33 | value of 0 means not modified, a value of 2 means it was modified. 34 | 35 | A value of 1 means that the modified status is unknown, because this 36 | is not an git checkout for example. 37 | 38 | HASH 39 | the git revision hash 40 | 41 | By setting the AWK environment variable, a caller can determine which 42 | version of "awk" is used. If nothing is set, this script defaults to 43 | "awk". 44 | EOF 45 | exit 1; 46 | fi 47 | 48 | # Allow awk to be provided by the caller. 49 | if [ -z "$AWK" ]; then 50 | AWK=awk 51 | fi 52 | 53 | # Find out some dirs 54 | cd `dirname "$0"` 55 | ROOT_DIR=`pwd` 56 | 57 | # Determine if we are using a modified version 58 | # Assume the dir is not modified 59 | MODIFIED="0" 60 | if [ -f "$ROOT_DIR/.ottdrev" ]; then 61 | # We are an exported source bundle 62 | cat $ROOT_DIR/.ottdrev 63 | exit 64 | 65 | elif [ -d "$ROOT_DIR/.git" ] || [ -f "$ROOT_DIR/.git" ]; then 66 | # We are a git checkout 67 | # Refresh the index to make sure file stat info is in sync, then look for modifications 68 | git update-index --refresh >/dev/null 69 | if [ -n "`git diff-index HEAD`" ]; then 70 | MODIFIED="2" 71 | fi 72 | HASH=`LC_ALL=C git rev-parse --verify HEAD 2>/dev/null` 73 | SHORTHASH=`echo ${HASH} | cut -c1-10` 74 | ISODATE=`LC_ALL=C git show -s --pretty='format:%ci' HEAD | "$AWK" '{ gsub("-", "", $1); print $1 }'` 75 | BRANCH="`git symbolic-ref -q HEAD 2>/dev/null | sed 's@.*/@@'`" 76 | TAG="`git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null | sed 's@\^0$@@'`" 77 | 78 | if [ "$MODIFIED" -eq "0" ]; then 79 | hashprefix="-g" 80 | elif [ "$MODIFIED" -eq "2" ]; then 81 | hashprefix="-m" 82 | else 83 | hashprefix="-u" 84 | fi 85 | 86 | if [ -n "$TAG" ]; then 87 | VERSION="${TAG}" 88 | ISTAG="1" 89 | if [ -n "`echo \"${TAG}\" | grep \"^[0-9.]*$\"`" ]; then 90 | ISSTABLETAG="1" 91 | else 92 | ISSTABLETAG="0" 93 | fi 94 | else 95 | VERSION="${ISODATE}-${BRANCH}${hashprefix}${SHORTHASH}" 96 | ISTAG="0" 97 | ISSTABLETAG="0" 98 | fi 99 | 100 | else 101 | # We don't know 102 | MODIFIED="1" 103 | HASH="" 104 | SHORTHASH="" 105 | BRANCH="" 106 | ISODATE="" 107 | TAG="" 108 | VERSION="" 109 | ISTAG="0" 110 | ISSTABLETAG="0" 111 | fi 112 | 113 | echo "$VERSION $ISODATE $MODIFIED $HASH $ISTAG $ISSTABLETAG" 114 | 115 | -------------------------------------------------------------------------------- /src/themes.list: -------------------------------------------------------------------------------- 1 | # Purpose filename author Title 2 | theme; tttheme2.mid; -lucas-; OpenTTD journey 3 | old_0; keep_on_rolling.mid; Trolley Trev; Keep on Rolling 4 | old_1; ttsong_iv_imuh3.mid; imuh3; Downtown cab ride 5 | old_2; modern_motion.mid; Kyle Timmerman (Mr.Ksoft); Modern Motion 6 | old_3; busy_schedule.mid; mimm; Busy Schedule 7 | old_4; the_fast_route.mid; mimm; The Fast Route 8 | old_5; ttsong_iii_imuh3.mid; imuh3; Skydive 9 | old_6; train_filled_with_cash.mid; imuh3; Train filled with cash 10 | old_7; flying_scotsman.mid; imuh3; Unidentifed Flying Scotsman 11 | old_8; chuggachugga.mid; imuh3; Chugga Chugga Cha-ching 12 | old_9; the_hobo_redfarn.mid; Jim Redfarn; The Hobo 13 | new_0; ultimate_run.mid; Tistou Blomberg; Ultimate run 14 | new_1; midnight_snow_run.mid; Tistou Blomberg; Midnight snow run 15 | new_2; run_for_your_life.mid; Tistou Blomberg; Excitement! Run for your life 16 | new_3; coconut_run2.mid; Tistou Blomberg; Coconut run 2 17 | new_4; harp_harmony.mid; Tistou Blomberg; Harp harmony 'n humor 18 | new_5; mighty_giant_run.mid; Tistou Blomberg; Mighty giant run 19 | new_6; wood_whistles.mid; Tistou Blomberg; Wood whistles 20 | new_7; linns_basket.mid; Tistou Blomberg; Linn's basket of treats 21 | new_8; relax_song.mid; Tistou Blomberg; Plain simple relax song 22 | new_9; chemistry_lab.mid; Tistou Blomberg; Deep down chemistry lab 23 | ezy_0; boogi_marabi_redfarn.mid; Jim Redfarn; Boogie Marabi 24 | ezy_1; 5432gone_redfarn.mid; Jim Redfarn; 5 4 3 2 .. Gone 25 | ezy_2; moo_redfarn.mid; Jim Redfarn; Moo Moo Boogie 26 | ezy_3; say_what_redfarn.mid; Jim Redfarn; Say What 27 | ezy_4; be_sharp_bw_redfarn.mid; Jim Redfarn; Be Sharp Boogie 28 | ezy_5; careless_perc_redfarn.mid; Jim Redfarn; Careless Love 29 | ezy_6; mosey_along_redfarn.mid; Jim Redfarn; Mosey Along 30 | ezy_7; slow_neasy_redfarn.mid; Jim Redfarn; Slow and Easy 31 | ezy_8; city_blues_redfarn.mid; Jim Redfarn; City Blues 32 | ezy_9; no_work_song_redfarn.mid; Jim Redfarn; No Work Song 33 | -------------------------------------------------------------------------------- /Makefile.local.sample: -------------------------------------------------------------------------------- 1 | # 2 | # This file is part of the OpenMSX music set for OpenTTD. 3 | # OpenMSX is free content; you can redistribute it and/or modify it under the terms of the 4 | # GNU General Public License as published by the Free Software Foundation, version 2. 5 | # OpenMSX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 6 | # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 7 | # See the GNU General Public License for more details. You should have received a copy of 8 | # the GNU General Public License along with Swedish RailSet. If not, see 9 | # . 10 | # 11 | 12 | # This file contains a list of settings for this project 13 | # which could moderately easily be changed locally 14 | # Copy the file to Makefile.local and uncomment the 15 | # appropriate lines. 16 | 17 | # REPO_NAME := My first NewGRF 18 | # GRF_ID := 01 02 03 04 19 | 20 | # If everything is default, you don't need the rest: 21 | 22 | # comment out those dirs which are not in use 23 | # Add any dirs which shall be bundled in a source release additionally 24 | # to the dirs mentioned above. 25 | # EXTRA_DIRS := 26 | 27 | # Documentation files: 28 | # README_FILENAME_SRC := $(DOC_DIR)/readme.ptxt 29 | # LICENSE_FILENAME_SRC := $(DOC_DIR)/license.ptxt 30 | # CHANGELOG_FILENAME_SRC := $(DOC_DIR)/changelog.ptxt 31 | 32 | # file extentions which indicate plain text source files, 33 | # parsable by a text editor 34 | # FILE_SRC_EXTENSIONS = pnfo tnfo 35 | 36 | # file extensions which indicate binary source files 37 | # FILE_INC_EXTENSIONS = wav pcx 38 | 39 | # Replacement strings in the source and in the documentation 40 | # You may only change the values, not add new definitions 41 | # (unless you know where to add them in other places, too) 42 | # REPO_TITLE_DUMMY := {{GRF_TITLE}} 43 | # GRF_ID_DUMMY := {{GRF_ID}} 44 | # REPO_REVISION_DUMMY := {{REPO_REVISION}} 45 | # OUTPUT_FILENAME_DUMMY := {{FILENAME}} 46 | 47 | # List of all files which will get shipped 48 | # DOC_FILES = readme, changelog and license 49 | # GRF_FILENAME = MAIN_FILENAME_SRC with the extention .grf 50 | # Add any additional, not usual files here, too, including 51 | # their relative path to the root of the repository 52 | # BUNDLE_FILES = $(MAIN_TARGET) $(DOC_FILES) 53 | 54 | # CLEAN_ADD = sprites/nfo/cargos.pnfo sprites/nfo/cargo_schemes.pnfo 55 | 56 | ################################################################ 57 | # Programme definitions / search paths 58 | ################################################################ 59 | # Build parameters and programmes 60 | # NFORENUM_FLAGS = 61 | # GRFCODEC_FLAGS = -e -p 2 -c 62 | # TAR_FLAGS = -cf 63 | # ZIP_FLAGS = -r 64 | # SRCZIP_FLAGS = 65 | # BZIP_FLAGS = -k9f 66 | # CC_FLAGS = -C -E - < 67 | # MAKE_FLAGS = 68 | # UNIX2DOS_FLAGS = -q 69 | # NML_FLAGS = 70 | 71 | # NFORENUM = $(shell [ `which nforenum 2>/dev/null` ] && echo "nforenum" || echo "renum") 72 | # GRFCODEC = grfcodec 73 | # TAR = tar 74 | # ZIP = zip 75 | # SRCZIP = gzip 76 | # BZIP = bzip2 77 | # CC = gcc 78 | # AWK = awk 79 | # GIT = git 80 | # MAKE = make 81 | # UNIX2DOS = $(shell [ `which unix2dos 2>/dev/null` ] && echo "unix2dos" || echo "") 82 | # MD5SUM = $(shell [ "$(OSTYPE)" = "Darwin" ] && echo "md5 -r" || echo "md5sum") 83 | # NML = nml.py 84 | 85 | # Installation dir 86 | INSTALL_DIR = 87 | 88 | ################################################################ 89 | # Get the Repository revision, tags and the modified status 90 | # The displayed name within OpenTTD / TTDPatch 91 | # Looks like either 92 | # a nightly build: GRF's Name nightly-r51 93 | # a release build (taged version): GRF's Name 0.1 94 | ################################################################ 95 | # REPO_TITLE := $(REPO_NAME) $(shell [ -n "$(REPO_TAGS)" ] && echo $(REPO_TAGS)$(REPO_MODIFIED) || echo nightly r$(REPO_REVISION)$(REPO_MODIFIED)) 96 | 97 | ################################################################ 98 | # Rules on how to generate filenames. Usually no need to change 99 | ################################################################ 100 | # Define how the displayed name and the filename of the bundled grf shall look like: 101 | # The result will either be 102 | # nightly build: mynewgrf-nightly-r51 103 | # a release build (tagged version): mynewgrf-0.1 104 | # followed by an M, if the source repository is not a clean version. 105 | 106 | # FILENAME_STUB := $(basename $(MAIN_TARGET)) 107 | # DIR_BASE := $(FILENAME_STUB)- 108 | # VERSION_STRING := $(shell [ -n "$(REPO_TAGS)" ] && echo $(REPO_TAGS)$(REPO_MODIFIED) || echo nightly-r$(REPO_REVISION)$(REPO_MODIFIED)) 109 | # DIR_NAME := $(shell [ -n "$(REPO_TAGS)" ] && echo $(DIR_BASE)$(VERSION_STRING) || echo $(DIR_BASE)nightly) 110 | # VERSIONED_FILENAME := $(DIR_BASE)$(VERSION_STRING) 111 | # DIR_NAME_SRC := $(VERSIONED_FILENAME)-source 112 | 113 | # TAR_FILENAME := $(DIR_NAME).tar 114 | # BZIP_FILENAME := $(TAR_FILENAME).bz2 115 | # ZIP_FILENAME := $(VERSIONED_FILENAME).zip 116 | # MD5_FILENAME := $(DIR_NAME).md5 117 | 118 | # DOC_FILES_SRC := $(LICENSE_FILENAME_SRC) $(README_FILENAME_SRC) $(CHANGELOG_FILENAME_SRC) 119 | 120 | # Directories which to remember when creating a source release 121 | # MAIN_DIRS = $(SRC_DIR) $(DOC_DIR) $(SCRIPT_DIR) $(TEMPLATE_DIR) $(EXTRA_DIRS) 122 | 123 | # Remove the @ when you want a more verbose output. 124 | # _V = @ 125 | # _E = @echo 126 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OpenMSX - base music set for OpenTTD 2 | 3 | ## Table of content 4 | 5 | - 1.0 [About](#10-about) 6 | - 2.0 [Installing](#20-installing) 7 | - 3.0 [Troubleshooting and bad sound output](#30-troubleshooting-and-bad-sound-output) 8 | - 4.0 [Contributing and compiling from source](#40-contributing-and-compiling-from-source) 9 | - 5.0 [License](#50-license) 10 | - 6.0 [Credits](#60-credits) 11 | 12 | 13 | ## 1.0 About 14 | 15 | OpenMSX is an open source base music set for OpenTTD. 16 | 17 | 18 | ## 2.0 Installing 19 | 20 | 1. First, make sure that you downloaded and installed at least OpenTTD version 21 | 1.0.0 or later. 22 | 23 | 2. Obtain OpenMSX: 24 | There are two ways, one easy (ingame download) and one complicated by 25 | downloading it yourself and installing it in the right place: 26 | 1. Via ingame content download: 27 | - Go to the content download, and search for OpenMSX; it's found in 28 | the baseset category. 29 | 30 | 2. Manually: 31 | - Download the latest OpenMSX package from its development homepage: 32 | homepage: https://github.com/OpenTTD/OpenMSX 33 | - Unpack the zip file into the OpenTTD 'baseset' directory (see 34 | docs/directory_structure.md in the 35 | [OpenTTD repository](https://github.com/OpenTTD/OpenTTD)) 36 | 37 | 3. In the main menu of the game, click the Game Options button. The Game 38 | Options dialog will appear. 39 | 40 | 4. Select OpenMSX from the drop-down list below Base Music set if that's not 41 | selected already (bottom left of window). Close the window using the × in the 42 | upper left corner. 43 | 44 | Now that wasn't so hard, was it? Anyways, if you're having trouble getting 45 | OpenMSX to work, please file a detailed report on what you did, what error 46 | messages you got and where you got stuck at our bug tracker at 47 | https://github.com/OpenTTD/OpenMSX/issues 48 | or at 49 | https://www.tt-forums.net 50 | 51 | 5. Music might not start automatically. If music does not play yet, 52 | start a game and open the sound/music window ("Jazz Jukebox") from the toolbar, 53 | or open the same window from the Sound section of the Game Options. 54 | Here you can control the volume, and start and stop the music. 55 | 56 | 57 | ## 3.0 Troubleshooting and bad sound output 58 | 59 | - Windows: 60 | Depending upon the hardware and the music driver used, OpenTTD may have problems 61 | to playback some songs without error or that it may happen that subsequent sound 62 | output is changed in a detrimental way. The latter is especially know to happen 63 | with the windows "dmusic" sound driver. You may want to try the "win32" music 64 | driver, if you have problems with Windows' default dmusic driver. Search your 65 | openttd.cfg for "musicdriver" and change the line to "musidriver = win32". 66 | Consult also the OpenTTD readme for available options and its known-bugs.txt 67 | for a more detailed and possibly more up to date description of Windows music 68 | driver issues. 69 | 70 | - GNU/Linux: 71 | If you cannot get music to play, it might be because your system does not 72 | support MIDI playback yet. 73 | Please refer to the manual of your Linux distribution to learn about how 74 | to get MIDI files to play. 75 | 76 | 77 | ## 4.0 Contributing and compiling from source 78 | 79 | The OpenMSX source is available in a Git repository or as gzip'ed tarball. 80 | You can do a clone from https://github.com/OpenTTD/OpenMSX, e.g. using 81 | ``` 82 | git clone https://github.com/OpenTTD/OpenMSX.git 83 | ``` 84 | or obtain the tarball from 85 | https://www.openttd.org/downloads/openmsx-releases/latest.html 86 | 87 | Prerequisites to building OpenMSX: 88 | - Git (only when not building from a tarball) 89 | - md5sum (Linux, MinGW) or md5 (macOS) 90 | - some GNU utils: make, cat, sed 91 | - unix2dos for convenient conversion of the text files 92 | - Python 93 | and you might additionally want a text editor of your choice and possibly a 94 | programme capable of creating and editing midi files. 95 | 96 | The use of Git is strongly encouraged as only that allows to keep track of 97 | changes. 98 | 99 | Once all tools are installed, get a checkout of the repository and you can build 100 | OpenMSX using 'make'. The following targets are available: 101 | - all: builds all grfs and the obm file 102 | - install: build and then copy OpenMSX in your OpenTTD music directory. Use 103 | Makefile.local to specify a different path 104 | - clean: cleans all generated files 105 | - mrproper: also cleans generated directories 106 | - bundle_src: create a source tarball 107 | - bundle_zip: create a zip archive of OpenMSX 108 | - bundle_bz2: create a bzip2 archive of OpenMSX 109 | - bundle_tar: create a tar archive of OpenMSX 110 | - check: checks the md5 sums of the built grf and obg files against those of 111 | the official release versions 112 | 113 | Given the usual case that you modify something within OpenMSX and want to test 114 | that, a simple 'make install' should suffice and you can immediately test the 115 | changes ingame, if you selected the nightly version of OpenMSX. Given default 116 | paths, a 'make install' will overwrite a previous nightly version of OpenMSX. 117 | Mind to re-start OpenTTD as it needs to re-read the files. 118 | 119 | 120 | ## 5.0 License 121 | 122 | The OpenMSX music set for OpenTTD Copyright (C) 2010-2021 OpenMSX Authors 123 | (see below or in the source in themes.list) and is licensed under GPL v2. 124 | 125 | This program is free software; you can redistribute it and/or modify it under 126 | the terms of the GNU General Public License version 2 as published by the Free 127 | Software Foundation. 128 | 129 | This program is distributed in the hope that it will be useful, but WITHOUT ANY 130 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 131 | PARTICULAR PURPOSE. See the GNU General Public License for more details. 132 | 133 | You should have received a copy of the GNU General Public License along with 134 | this program; if not, write to the Free Software Foundation, Inc., 1 Franklin 135 | Street, Fifth Floor, Boston, MA 02110-1301 USA. 136 | 137 | 138 | ## 6.0 Credits 139 | 140 | OpenMSX is created by the following people: 141 | 142 | Programming and coordination: 143 | - Ingo von Borstel (planetmaker) 144 | 145 | Music critic and advisor: 146 | - kamnet 147 | 148 | Musicians: 149 | - All 'Ezy Street' tracks 150 | - The Hobo 151 | - Jim Redfarn 152 | - All 'Modern' tracks 153 | - Tistou Blomberg 154 | - Downtown cab ride 155 | - Skydive 156 | - Train filled with cash 157 | - Unidentified Flying Scotsman 158 | - Chugga Chugga Cha-ching 159 | - imuh3 160 | - Busy Schedule 161 | - The Fast Route 162 | - mimm 163 | - Modern Motion 164 | - Kyle Timmerman (Mr.Ksoft) 165 | - Trolley Trev 166 | - Keep on Rolling 167 | - OpenTTD journey 168 | - -lucas- 169 | 170 | Song notes: 171 | - Moo Moo Boogie: inspired by Cow Cow Boogie 172 | by Benny Carter, Gene de Paul and Don Raye 173 | - Careless Love: is a traditional song in the Public Domain 174 | -------------------------------------------------------------------------------- /docs/redfarn_music_grant.txt: -------------------------------------------------------------------------------- 1 | Betreff: Re: OpenTTD Link 2 | Von: Redfarn Jim 3 | Datum: Sat, 26 Jun 2010 21:05:08 +0100 4 | An: ottd@planetmaker.de 5 | 6 | Hello Ingo, 7 | 8 | I am strictly non-commercial and am happy for others to use my music. 9 | I won't accept money at any time. 10 | 11 | I now understand that the GPL license would allow others commercial use under certain conditions. 12 | I am prepared to accept that use, provided that I was still acknowledged as the composer / originator. 13 | I definitely would not want any money deriving from any commercial enterprise. 14 | 15 | I would not like to lose the right to edit my music, on my website, should I wish to do so. 16 | I am assuming that the GPL license would not prevent me from doing this. 17 | Please tell me if this is not the case. 18 | 19 | All the pieces that your group have selected are entirely my own compositions, except for: 20 | 21 | 1. "Careless Love" This comes under the "traditional" category and is therefore in the public domain. 22 | 23 | 2, "Moo Moo Boogie" was partly inspired by "Cow Cow Boogie". 24 | In my opinion, Moo Moo Boogie is sufficiently different from Cow Cow Boogie not to raise any copyright issues. 25 | In any case, the composer of Cow Cow Boogie died 66 years ago so that composition is also out of copyright. 26 | 27 | Thank you for your care. 28 | 29 | Regards, 30 | 31 | Jim 32 | 33 | 34 | On 26 Jun 2010, at 15:32, planetmaker wrote: 35 | 36 | > -----BEGIN PGP SIGNED MESSAGE----- 37 | > Hash: SHA1 38 | > 39 | > Hello Jim, 40 | > 41 | > thanks for adding the link to OpenTTD :-) and of course all your music. 42 | > Now we've listened to all your songs properly we decided that we'd like 43 | > these songs for our music set: 44 | > 45 | > http://homepage.ntlworld.com/jim.redfarn/SoulBoogie.mid 46 | > http://homepage.ntlworld.com/jim.redfarn/5432Gone.mid 47 | > http://homepage.ntlworld.com/jim.redfarn/CityBlues.mid 48 | > http://homepage.ntlworld.com/jim.redfarn/BoogieStopShuffle.mid 49 | > http://homepage.ntlworld.com/jim.redfarn/SlowNEasy.mid 50 | > http://homepage.ntlworld.com/jim.redfarn/Moo.mid 51 | > http://homepage.ntlworld.com/jim.redfarn/BigManBoogie.mid 52 | > http://homepage.ntlworld.com/jim.redfarn/BoogiMarabi.mid 53 | > http://homepage.ntlworld.com/jim.redfarn/SayWhat.mid 54 | > http://homepage.ntlworld.com/jim.redfarn/BeSharpBW.mid 55 | > http://homepage.ntlworld.com/jim.redfarn/CarelessPerc.mid 56 | > http://homepage.ntlworld.com/jim.redfarn/MoseyAlong.mid 57 | > http://homepage.ntlworld.com/jim.redfarn/NoWorkSong.mid 58 | > http://homepage.ntlworld.com/jim.redfarn/TheHobo.mid 59 | > 60 | > As you write on your website that the songs are "free for personal use", 61 | > but the GPL license we use in principle also allows commercial use under 62 | > certain conditions (we don't do it, we all work for free and don't sell 63 | > anything), I'd like to briefly explain what the GPL license means in 64 | > laymen's terms. Please tell me (again) that you're ok with this license 65 | > - - there are some people in the community who are concerned that I have 66 | > not been clear enough in my past e-mail :-) ; I'd then add your response 67 | > to the documentation so that no one has to be concerned anymore :-) 68 | > 69 | > I've added them locally to the music set, but I haven't yet published 70 | > it, awaiting your response. 71 | > 72 | > Cheers, 73 | > Ingo 74 | > 75 | > 76 | > Here attached the short human-readable break-down of it (quote from 77 | > http://creativecommons.org/licenses/GPL/2.0/ ). For the purpose of the 78 | > music you can replace the words "programme" and "source code" by "midi 79 | > files" (they are after all the 'source', the original work. 80 | > 81 | > ====================================================================== 82 | > 1. The freedom to run the program for any purpose. 83 | > 2. The freedom to study how the program works and adapt it to your needs. 84 | > 3. The freedom to redistribute copies so you can help your neighbor. 85 | > 4. The freedom to improve the program and release your improvements 86 | > to the public, so that the whole community benefits. 87 | > 88 | > You may exercise the freedoms specified here provided that you comply 89 | > with the express conditions of this license. The principal conditions are: 90 | > 91 | > * You must conspicuously and appropriately publish on each copy 92 | > distributed an appropriate copyright notice and disclaimer of warranty 93 | > and keep intact all the notices that refer to this License and to the 94 | > absence of any warranty; and give any other recipients of the Program a 95 | > copy of the GNU General Public License along with the Program. Any 96 | > translation of the GNU General Public License must be accompanied by the 97 | > GNU General Public License. 98 | > * If you modify your copy or copies of the program or any portion of 99 | > it, or develop a program based upon it, you may distribute the resulting 100 | > work provided you do so under the GNU General Public License. Any 101 | > translation of the GNU General Public License must be accompanied by the 102 | > GNU General Public License. 103 | > * If you copy or distribute the program, you must accompany it with 104 | > the complete corresponding machine-readable source code or with a 105 | > written offer, valid for at least three years, to furnish the complete 106 | > corresponding machine-readable source code. 107 | > 108 | > ====================================================================== 109 | > - - 110 | > -----BEGIN PGP SIGNATURE----- 111 | > Version: GnuPG v1.4.9 (Darwin) 112 | > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ 113 | > 114 | > iEYEARECAAYFAkwmD20ACgkQrNrK4E09wGqTkgCgpm9TwQl3X7WcVTO4WUm3+DM0 115 | > gWkAn3wS81gkvWs6F+pcoNCr/1ziZaje 116 | > =4XJY 117 | > -----END PGP SIGNATURE----- 118 | 119 | ############################################################################################### 120 | 121 | Betreff: Addendum to OpenTTD JPL license issues. 122 | Von: Redfarn Jim 123 | Datum: Sat, 26 Jun 2010 21:19:32 +0100 124 | An: Ingo von Borstel von Borstel 125 | 126 | Dear Ingo, 127 | 128 | Apologies. 129 | I should also have said that "Big Man Boogie" is derived from a piece called "Clockwork Boogie" 130 | by Steve Clayton (who lives in Germany). 131 | However, I did write to Steve and he gave permission. 132 | 133 | Regards, 134 | 135 | Jim 136 | 137 | ################################################################################################ 138 | 139 | Betreff: Re: OpenTTD Link 140 | Von: Redfarn Jim 141 | Datum: Sun, 27 Jun 2010 09:53:13 +0100 142 | An: Ingo von Borstel 143 | 144 | Hello Ingo, 145 | 146 | Thanks very much for your detailed clarification. 147 | 148 | I am completely happy with everything. 149 | 150 | I hope you have every success with your ongoing project. 151 | 152 | Regards, 153 | 154 | Jim 155 | 156 | 157 | On 26 Jun 2010, at 23:44, Ingo von Borstel wrote: 158 | 159 | > -----BEGIN PGP SIGNED MESSAGE----- 160 | > Hash: SHA1 161 | > 162 | > Hi Jim, 163 | > 164 | > thanks for your prompt reply. Let me answer your questions and concerns 165 | > in place: 166 | > 167 | >> I am strictly non-commercial and am happy for others to use my music. 168 | >> I won't accept money at any time. 169 | > You don't have to :-) 170 | > 171 | >> I now understand that the GPL license would allow others commercial 172 | >> use under certain conditions. I am prepared to accept that use, 173 | >> provided that I was still acknowledged as the composer / originator. 174 | > That's absolutely required by the GPL license. AND they always have to 175 | > provide the source, your songs, for a shipping fee at most, if they 176 | > utilize GPL-licensed work. 177 | > 178 | >> I definitely would not want any money deriving from any commercial 179 | >> enterprise. 180 | > 181 | >> I would not like to lose the right to edit my music, on my website, 182 | >> should I wish to do so. I am assuming that the GPL license would not 183 | >> prevent me from doing this. Please tell me if this is not the case. 184 | > It's one of the fundamental requirements of the GPL: give credits, also 185 | > and especially if derivative work is created and your work used as part 186 | > of it. It has to be clearly stated what part was your work (that's why I 187 | > contacted you in the first place: I want and I have to give the proper 188 | > credits of any work I want to use. 189 | > 190 | > Also you as author don't give up any rights in any way except that you 191 | > cannot revoke the permission you gave. But this license is only about 192 | > the rights you grant others; it's a non-exclusive license. You as author 193 | > (and only you!) can re-license it under any conditions you like. It is 194 | > and will remain your work. An author can always do with his stuff what 195 | > he likes. 196 | > 197 | >> All the pieces that your group have selected are entirely my own 198 | >> compositions, except for: 199 | >> 200 | >> 1. "Careless Love" This comes under the "traditional" category and is 201 | >> therefore in the public domain. 202 | >> 203 | >> 2, "Moo Moo Boogie" was partly inspired by "Cow Cow Boogie". In my 204 | >> opinion, Moo Moo Boogie is sufficiently different from Cow Cow 205 | >> Boogie not to raise any copyright issues. In any case, the composer 206 | >> of Cow Cow Boogie died 66 years ago so that composition is also out 207 | >> of copyright. 208 | > 209 | >> I should also have said that "Big Man Boogie" is derived from a piece 210 | >> called "Clockwork Boogie" by Steve Clayton (who lives in Germany). 211 | >> However, I did write to Steve and he gave permission. 212 | > 213 | > Thanks for the clarification concerning "Careless Love", "Moo Moo 214 | > Boogie" and "Clockwork Boogie". I hope I could help with my 215 | > explanations, too, and that you find the license still acceptable :-) 216 | > The main practical purpose (and why commercial permission as in GPL is 217 | > kinda required) is that this pack may then also be put on e.g. CDs which 218 | > are shipped with gaming magazines or so on (which are obviously sold). 219 | > 220 | > I propose that you'll be credited in the readme for each song like 221 | > 5432gone_redfarn.mid: Jim Redfarn 222 | > (http://homepage.ntlworld.com/jim.redfarn/MidiPage.htm) 223 | > Please tell me, if you like to be credited differently. 224 | > 225 | > Best regards and looking forward to your reply 226 | > Ingo 227 | > 228 | > -----BEGIN PGP SIGNATURE----- 229 | > Version: GnuPG v1.4.9 (Darwin) 230 | > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ 231 | > 232 | > iEYEARECAAYFAkwmgtQACgkQrNrK4E09wGo9SQCgghBogmTthWOmUGYD84Bj+4tJ 233 | > ZwEAni6GT1kCfsUrX9lsvPwKWg1HQotQ 234 | > =lCJq 235 | > -----END PGP SIGNATURE----- 236 | 237 | 238 | 239 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Lesser General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | 294 | Copyright (C) 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License along 307 | with this program; if not, write to the Free Software Foundation, Inc., 308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 309 | 310 | Also add information on how to contact you by electronic and paper mail. 311 | 312 | If the program is interactive, make it output a short notice like this 313 | when it starts in an interactive mode: 314 | 315 | Gnomovision version 69, Copyright (C) year name of author 316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 | This is free software, and you are welcome to redistribute it 318 | under certain conditions; type `show c' for details. 319 | 320 | The hypothetical commands `show w' and `show c' should show the appropriate 321 | parts of the General Public License. Of course, the commands you use may 322 | be called something other than `show w' and `show c'; they could even be 323 | mouse-clicks or menu items--whatever suits your program. 324 | 325 | You should also get your employer (if you work as a programmer) or your 326 | school, if any, to sign a "copyright disclaimer" for the program, if 327 | necessary. Here is a sample; alter the names: 328 | 329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 331 | 332 | , 1 April 1989 333 | Ty Coon, President of Vice 334 | 335 | This General Public License does not permit incorporating your program into 336 | proprietary programs. If your program is a subroutine library, you may 337 | consider it more useful to permit linking proprietary applications with the 338 | library. If this is what you want to do, use the GNU Lesser General 339 | Public License instead of this License. 340 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # This file is part of the NML build framework 3 | # NML build framework is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. 4 | # NML build framework is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 5 | # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with NML build framework. If not, see . 6 | # 7 | 8 | SHELL := /bin/bash 9 | 10 | -include Makefile.config 11 | 12 | ################################################################## 13 | # 14 | # For easy updates you can copy these basic definitions in 15 | # Makefile.config 16 | # and place that next to the Makefile. This will allow easy 17 | # updates to the generic Makefile 18 | # 19 | ################################################################## 20 | 21 | # Definition of the grfs 22 | REPO_NAME ?= OpenMSX 23 | 24 | # This is the filename part common to the grf file, main source file and the tar name 25 | BASE_FILENAME ?= openmsx 26 | 27 | # Documentation files 28 | DOC_FILES ?= README.md LICENSE changelog.txt 29 | 30 | # Possible offset to baseset version. Increase by one, if a release 31 | # branch is added to the repository 32 | REPO_BRANCH_VERSION ?= 0 33 | 34 | # Directory structure 35 | SCRIPT_DIR ?= build-common 36 | 37 | # Uncomment in order to make use of gimp scripting. See the file 38 | # for a description of the format 39 | # GFX_SCRIPT_LIST_FILES := gfx/png_source_list 40 | 41 | # If needed, declare the minimum NML requirements 42 | # REQUIRED_NML_BRANCH = 0.3 43 | # MIN_NML_REVISION = 0 44 | 45 | ################################################################### 46 | # 47 | # Everything below here usually need not change for simple basesets 48 | # 49 | ################################################################### 50 | 51 | # Define the filenames of the grf and nml file. They must be in the main directoy 52 | GRF_FILE ?= $(BASE_FILENAME).grf 53 | NML_FILE ?= $(BASE_FILENAME).nml 54 | # uncomment MAIN_SRC_FILE if you do not want any preprocessing to happen to your source file 55 | MAIN_SRC_FILE ?= $(BASE_FILENAME).pnml 56 | 57 | # List of all files which will get shipped 58 | # documentation files: readme, changelog and license, usually $(DOC_FILES) 59 | # grf file: the above defined grf file, usualls $(GRF_FILE) 60 | # Add any additional, not usual files here, too, including 61 | # their relative path to the root of the repository 62 | BUNDLE_FILES ?= $(GRF_FILE) $(DOC_FILES) 63 | 64 | # Replacement strings in the source and in the documentation 65 | # You may only change the values, not add new definitions 66 | # (unless you know where to add them in other places, too) 67 | REPLACE_TITLE := {{GRF_TITLE}} 68 | REPLACE_GRFID := {{GRF_ID}} 69 | REPLACE_REVISION := {{REPO_REVISION}} 70 | REPLACE_FILENAME := {{FILENAME}} 71 | 72 | GENERATE_GRF ?= grf 73 | GENERATE_PNML ?= pnml 74 | GENERATE_NML ?= nml 75 | GENERATE_GFX ?= gfx 76 | GENERATE_DOC ?= doc 77 | GENERATE_LNG ?= lng 78 | 79 | # target 'all' must be first target 80 | all: $(GENERATE_GRF) $(GENERATE_DOC) bundle_tar 81 | 82 | -include Makefile.in 83 | 84 | # general definitions (no rules!) 85 | -include Makefile.dist 86 | .PHONY: all clean distclean doc bundle bundle_bsrc bundle_bzip bundle_gsrc bundle_src bundle_tar bundle_xsrc bundle_xz bundle_zip bundle_zsrc check 87 | 88 | # We want to disable the default rules. It's not c/c++ anyway 89 | .SUFFIXES: 90 | 91 | # Don't delete intermediate files 92 | .PRECIOUS: %.nml %.scm %.png 93 | .SECONDARY: %.nml %.scm %.png 94 | 95 | ################################################################ 96 | # Programme definitions / search paths 97 | ################################################################ 98 | MAKE ?= make 99 | MAKE_FLAGS ?= -r 100 | 101 | NML ?= $(shell which nmlc 2>/dev/null) 102 | NML_FLAGS ?= -c 103 | ifdef REQUIRED_NML_BRANCH 104 | NML_BRANCH = $(shell nmlc --version | head -n1 | cut -d. -f1-2) 105 | endif 106 | ifdef MIN_NML_REVISION 107 | NML_REVISION = $(shell nmlc --version | head -n1 | cut -dr -f2 | cut -d: -f1) 108 | endif 109 | 110 | ifdef MAIN_SRC_FILE 111 | CC ?= $(shell which gcc 2>/dev/null) 112 | CC_FLAGS ?= -C -E -nostdinc -x c-header 113 | endif 114 | 115 | AWK ?= awk 116 | 117 | GREP ?= grep 118 | 119 | GIT ?= $(shell git status >/dev/null 2>/dev/null && which git 2>/dev/null) 120 | 121 | PYTHON ?= python 122 | 123 | UNIX2DOS ?= $(shell which unix2dos 2>/dev/null) 124 | UNIX2DOS_FLAGS ?= $(shell [ -n $(UNIX2DOS) ] && $(UNIX2DOS) -q --version 1>&2 2>/dev/null && echo "-q" || echo "") 125 | 126 | ################################################################ 127 | # 128 | # Working copy / bundle version detection. 129 | # 130 | ################################################################ 131 | 132 | # Always run version detection, so we always have an accurate modified 133 | # flag 134 | REPO_VERSIONS := $(shell AWK="$(AWK)" "./findversion.sh") 135 | 136 | # Use autodetected revisions 137 | REPO_VERSION ?= $(shell echo "$(REPO_VERSIONS)" | cut -f 1 -d' ') 138 | REPO_DATE ?= $(shell echo "$(REPO_VERSIONS)" | cut -f 2 -d' ') 139 | REPO_HASH ?= $(shell echo "$(REPO_VERSIONS)" | cut -f 4 -d' ') 140 | 141 | # Days of commit since 2000-01-01. REPO_DATE is in format YYYYMMDD. 142 | REPO_DATE_YEAR := $(shell echo "${REPO_DATE}" | cut -b1-4) 143 | REPO_DATE_MONTH := $(shell echo "${REPO_DATE}" | cut -b5-6 | sed s/^0//) 144 | REPO_DATE_DAY := $(shell echo "${REPO_DATE}" | cut -b7-8 | sed s/^0//) 145 | REPO_DAYS_SINCE_2000 := $(shell $(PYTHON) -c "from datetime import date; print( (date($(REPO_DATE_YEAR),$(REPO_DATE_MONTH),$(REPO_DATE_DAY))-date(2000,1,1)).days)") 146 | 147 | REPO_TAGS ?= $(REPO_VERSION) 148 | 149 | # The version reported to OpenTTD. Usually days since 2000 + branch offset 150 | NEWGRF_VERSION ?= $(shell let x="$(REPO_DAYS_SINCE_2000) + 65536 * $(REPO_BRANCH_VERSION)"; echo "$$x") 151 | 152 | # The shown version is either a tag, or in the absence of a tag the revision. 153 | REPO_VERSION_STRING ?= $(shell [ -n "$(REPO_TAGS)" ] && echo $(REPO_TAGS) || echo $(REPO_DATE)$(REPO_BRANCH_STRING) \($(NEWGRF_VERSION):$(REPO_HASH)\)) 154 | 155 | # The title consists of name and version 156 | REPO_TITLE ?= $(REPO_NAME) $(REPO_VERSION_STRING) 157 | 158 | # Remove the @ when you want a more verbose output. 159 | _V ?= @ 160 | _E ?= @echo 161 | 162 | distclean:: clean 163 | maintainer-clean:: distclean 164 | 165 | # target nml 166 | ################################################################ 167 | # Pre-processing and generation of $(NML_FILE) 168 | ################################################################ 169 | 170 | # ifdef $(MAIN_SRC_FILE) 171 | pnml: 172 | 173 | nml: $(GENERATE_PNML) 174 | $(_E) "[CPP] $(NML_FILE)" 175 | $(_V) $(CC) -D REPO_REVISION=$(NEWGRF_VERSION) -D NEWGRF_VERSION=$(NEWGRF_VERSION) $(CC_USER_FLAGS) $(CC_FLAGS) -o $(NML_FILE) $(MAIN_SRC_FILE) 176 | 177 | clean:: 178 | $(_E) "[CLEAN NML]" 179 | $(_V)-rm -rf $(NML_FILE) 180 | # else 181 | # nml: 182 | # endif 183 | 184 | # target 'gfx' which builds all needed sprites 185 | # Only a special gfx target for gimp exists so far 186 | ################################################################ 187 | # Targets related to creation of graphics files 188 | ################################################################ 189 | # Dependency on source list file via dep check 190 | ifdef GFX_SCRIPT_LIST_FILES 191 | # include dependency file, if we generate graphics 192 | -include Makefile_gfx.dep 193 | 194 | GIMP ?= $(shell [ `which gimp 2>/dev/null` ] && echo "gimp" || echo "") 195 | GIMP_FLAGS ?= -n -i -b - < 196 | 197 | %.scm: $(SCRIPT_DIR)/gimpscript $(SCRIPT_DIR)/gimp.sed 198 | $(_E) "[GIMP-SCRIPT] $@" 199 | $(_V) cat $(SCRIPT_DIR)/gimpscript > $@ 200 | $(_V) cat $(GFX_SCRIPT_LIST_FILES) | grep $(patsubst %.scm,%.png,$@) | sed -f $(SCRIPT_DIR)/gimp.sed >> $@ 201 | $(_V) echo "(gimp-quit 0)" >> $@ 202 | 203 | # create the png file. And make sure it's re-created even when present in the repo 204 | %.png: %.scm 205 | $(_E) "[GIMP] $@" 206 | $(_V) $(GIMP) $(GIMP_FLAGS) $< >/dev/null 207 | 208 | Makefile_gfx.dep: $(GFX_SCRIPT_LIST_FILES) Makefile 209 | $(_E) "[GFX-DEP] $@" 210 | $(_V) echo "" > $@ 211 | $(_V) for j in $(GFX_SCRIPT_LIST_FILES); do for i in `cat $$j | grep "\([pP][cCnN][xXgG]\)" | grep -v "^#" | cut -d\ -f1 | sed "s/\.\([pP][cCnN][xXgG]\)//"`; do echo "$$i.scm: $$j" >> $@; echo "$(GRF_FILE): $$i.png" >> $@; done; done 212 | $(_V) cat $(GFX_SCRIPT_LIST_FILES) | grep "\([pP][cCnN][xXgG]\)" | grep -v "^#" | sed "s/[ ] */ /g" | cut -d\ -f1-2 | sed "s/ /: /g" >> $@ 213 | 214 | gfx: Makefile_gfx.dep 215 | 216 | maintainer-clean:: 217 | $(_E) "[MAINTAINER CLEAN GFX]" 218 | $(_V) rm -rf Makefile_gfx.dep 219 | $(_V) for j in $(GFX_SCRIPT_LIST_FILES); do for i in `cat $$j | grep "\([pP][cCnN][xXgG]\)" | cut -d\ -f1 | sed "s/\.\([pP][cCnN][xXgG]\)//"`; do rm -rf $$i.scm; rm -rf $$i.png; done; done 220 | else 221 | gfx: 222 | endif 223 | 224 | ##################################################### 225 | # target 'lng' which builds the lang/*.lng files 226 | ##################################################### 227 | lng: custom_tags.txt 228 | 229 | custom_tags.txt: $(GENERATE_NML) 230 | $(_E) "[LNG] $@" 231 | $(_V) echo "VERSION :$(REPO_VERSION_STRING)" > $@ 232 | $(_V) echo "VERSION_STRING :$(REPO_VERSION_STRING)" >> $@ 233 | $(_V) echo "TITLE :$(REPO_TITLE)" >> $@ 234 | $(_V) echo "FILENAME :$(GRF_FILE)" >> $@ 235 | $(_V) echo "REPO_DATE :$(REPO_DATE)" >> $@ 236 | $(_V) echo "REPO_HASH :$(REPO_HASH)" >> $@ 237 | $(_V) echo "REPO_BRANCH :$(REPO_BRANCH)" >> $@ 238 | $(_V) echo "NEWGRF_VERSION :$(NEWGRF_VERSION)" >> $@ 239 | $(_V) echo "DAYS_SINCE_2K :$(REPO_DAYS_SINCE_2000)" >> $@ 240 | 241 | clean:: 242 | $(_E) "[CLEAN LNG]" 243 | $(_V)-rm -rf custom_tags.txt 244 | 245 | ################################################################ 246 | # grf - specific rules 247 | # target 'grf' which builds the grf from the nml 248 | ################################################################ 249 | 250 | grf: $(GENERATE_GFX) $(GENERATE_NML) $(GENERATE_LNG) 251 | $(_E) "[NML] $(GRF_FILE)" 252 | ifeq ($(NML),) 253 | $(_E) "No NML compiler found!" 254 | $(_V) false 255 | endif 256 | ifdef REQUIRED_NML_BRANCH 257 | ifneq ($(REQUIRED_NML_BRANCH),$(NML_BRANCH)) 258 | $(_E) "Wrong NML version. This baseset requires an NML from the $(REQUIRED_NML_BRANCH) branch, but $(NML_BRANCH) found." 259 | $(_V) false 260 | endif 261 | endif 262 | ifdef MIN_NML_REVISION 263 | ifeq ($(shell [ "$(NML_REVISION)" -lt "$(MIN_NML_REVISION)" ] && echo "true" || echo "false"),true) 264 | $(_E) "Too old NML revision. At least r$(MIN_NML_REVISION) is required, but r$(NML_REVISION) found." 265 | $(_V) false 266 | endif 267 | endif 268 | $(_V) $(NML) $(NML_FLAGS) --grf $(GRF_FILE) $(NML_FILE) 269 | 270 | $(GRF_FILE): $(GENERATE_GRF) 271 | 272 | clean:: 273 | $(_E) "[CLEAN GRF]" 274 | $(_V)-rm -rf $(GRF_FILE) 275 | $(_V)-rm -rf $(GRF_FILE).cache 276 | $(_V)-rm -rf $(GRF_FILE).cacheindex 277 | $(_V)-rm -rf parsetab.py 278 | 279 | maintainer-clean:: 280 | $(_E) "[MAINTAINER-CLEAN GRF]" 281 | $(_V) -rm -rf $(MD5_SRC_FILENAME) 282 | 283 | ############################################################### 284 | # Documentation targets 285 | # target 'doc' which builds the docs 286 | ################################################################ 287 | 288 | %.txt: %.ptxt 289 | $(_E) "[DOC] $@" 290 | $(_V) cat $< \ 291 | | sed -e "s/$(REPLACE_TITLE)/$(REPO_TITLE)/" \ 292 | | sed -e "s/$(REPLACE_GRFID)/$(GRF_ID)/" \ 293 | | sed -e "s/$(REPLACE_REVISION)/$(NEWGRF_VERSION)/" \ 294 | | sed -e "s/$(REPLACE_FILENAME)/$(OUTPUT_FILENAME)/" \ 295 | > $@ 296 | $(_V) [ -z "$(UNIX2DOS)" ] || $(UNIX2DOS) $(UNIX2DOS_FLAGS) $@ 297 | 298 | doc: $(DOC_FILES) $(GRF_FILE) 299 | 300 | clean:: 301 | $(_E) "[CLEAN DOC]" 302 | $(_V) -for i in $(patsubst %.txt,%,$(DOC_FILES)); do [ -f $$i.ptxt ] && [ -f $$i.txt ] && rm -rf $$i.txt || true; done 303 | 304 | ################################################################ 305 | # Bundle targets 306 | # Binary bundle targets 307 | ################################################################ 308 | # target 'bundle' and bundle_xxx which builds the distribution files 309 | # and the distribution bundles like bundle_tar, bundle_zip, ... 310 | 311 | # Programme definitions 312 | TAR ?= $(shell which tar 2>/dev/null) 313 | TAR_FLAGS ?= -cf 314 | 315 | ZIP ?= $(shell which zip 2>/dev/null) 316 | ZIP_FLAGS ?= -9rq 317 | 318 | GZIP ?= $(shell which gzip 2>/dev/null) 319 | GZIP_FLAGS ?= -9f 320 | 321 | BZIP ?= $(shell which bzip2 2>/dev/null) 322 | BZIP_FLAGS ?= -9fk 323 | 324 | XZ ?= $(shell which xz 2>/dev/null) 325 | XZ_FLAGS ?= -efk 326 | 327 | # OSX has nice extended file attributes which create their own file within tars. We don't want those, thus don't copy them 328 | CP_FLAGS ?= $(shell [ "$(OSTYPE)" = "Darwin" ] && echo "-rfX" || echo "-rf") 329 | 330 | # Use the grfID programme to find the checksum which OpenTTD checks 331 | GRFID ?= $(shell which grfid 2>/dev/null) 332 | GRFID_FLAGS ?= -m 333 | 334 | # Rules on how to generate filenames. Usually no need to change 335 | 336 | # Define how the displayed name and the filename of the bundled grf shall look like: 337 | # The result will either be 338 | # nightly build: mynewgrf-nightly-r51 339 | # a release build (tagged version): mynewgrf-0.1 340 | # followed by an M, if the source repository is not a clean version. 341 | 342 | # Common to all filenames 343 | FILE_VERSION_STRING ?= $(shell [ -n "$(REPO_TAGS)" ] && echo "$(REPO_TAGS)" || echo "$(REPO_BRANCH_STRING)$(NEWGRF_VERSION)") 344 | DIR_NAME := $(shell [ -n "$(REPO_TAGS)" ] && echo $(BASE_FILENAME)-$(FILE_VERSION_STRING) || echo $(BASE_FILENAME)) 345 | VERSIONED_FILENAME := $(BASE_FILENAME)-$(FILE_VERSION_STRING) 346 | DIR_NAME_SRC := $(VERSIONED_FILENAME)-source 347 | 348 | TAR_FILENAME := $(DIR_NAME).tar 349 | BZIP_FILENAME := $(TAR_FILENAME).bz2 350 | GZIP_FILENAME := $(TAR_FILENAME).gz 351 | XZ_FILENAME := $(TAR_FILENAME).xz 352 | ZIP_FILENAME := $(VERSIONED_FILENAME)-all.zip 353 | MD5_FILENAME := $(DIR_NAME).md5 354 | MD5_SRC_FILENAME ?= $(DIR_NAME).check.md5 355 | 356 | # Creating file with checksum 357 | %.md5: $(GRF_FILE) 358 | $(_E) "[GRFID] $@" 359 | $(_V) $(GRFID) $(GRFID_FLAGS) $< > $@ 360 | 361 | # Bundle directory 362 | $(DIR_NAME): $(GENERATE_GRF) $(GENERATE_DOC) 363 | $(_E) "[BUNDLE] $@" 364 | $(_V) if [ -e $@ ]; then rm -rf $@; fi 365 | $(_V) mkdir $@ 366 | $(_V) -for i in $(BUNDLE_FILES); do cp $(CP_FLAGS) $$i $@; done 367 | 368 | $(DIR_NAME).tar: $(DIR_NAME) 369 | $(_E) "[BUNDLE TAR] $@" 370 | $(_V) $(TAR) $(TAR_FLAGS) $@ $< 371 | 372 | bundle_tar: $(DIR_NAME).tar 373 | bundle_zip: $(ZIP_FILENAME) 374 | %.zip: $(DIR_NAME).tar 375 | $(_E) "[BUNDLE ZIP] $@" 376 | $(_V) $(ZIP) $(ZIP_FLAGS) $@ $< >/dev/null 377 | bundle_bzip: $(DIR_NAME).tar.bz2 378 | %.tar.bz2: %.tar 379 | $(_E) "[BUNDLE BZIP] $@" 380 | $(_V) $(BZIP) $(BZIP_FLAGS) $^ 381 | bundle_gzip: $(DIR_NAME).tar.gz 382 | # gzip has no option -k, so we cat the tar to keep it 383 | %.tar.gz: %.tar 384 | $(_E) "[BUNDLE GZIP] $@" 385 | $(_V) cat $^ | $(GZIP) $(GZIP_FLAGS) > $@ 386 | bundle_xz: $(DIR_NAME).tar.xz 387 | %.tar.xz: %.tar 388 | $(_E) "[BUNDLE XZ] $@" 389 | $(_V) $(XZ) $(XZ_FLAGS) $^ 390 | 391 | clean:: 392 | $(_E) "[CLEAN BUNDLE]" 393 | $(_V) -rm -rf $(DIR_NAME) 394 | $(_V) -rm -rf $(DIR_NAME).tar 395 | $(_V) -rm -rf $(DIR_NAME).tar.zip 396 | $(_V) -rm -rf $(DIR_NAME).tar.gz 397 | $(_V) -rm -rf $(DIR_NAME).tar.bz2 398 | $(_V) -rm -rf $(DIR_NAME).tar.xz 399 | 400 | ################################################################ 401 | # Bundle source targets 402 | # target 'bundle_src which builds source bundle 403 | ################################################################ 404 | RE_FILES_NO_SRC_BUNDLE = ^.devzone|^.git 405 | 406 | check: $(MD5_FILENAME) 407 | $(_V) if [ -f $(MD5_SRC_FILENAME) ]; then echo "[CHECKING md5sums]"; else echo "Required file '$(MD5_SRC_FILENAME)' which to test against not found!"; false; fi 408 | $(_V) if [ -z "`diff $(MD5_FILENAME) $(MD5_SRC_FILENAME)`" ]; then echo "Checksums are equal"; else echo "Differences in checksums:"; echo "`diff $(MD5_FILENAME) $(MD5_SRC_FILENAME)`"; false; fi 409 | $(_V) rm $(MD5_FILENAME) 410 | 411 | $(DIR_NAME_SRC).tar: $(DIR_NAME_SRC) 412 | $(_E) "[BUNDLE SRC]" 413 | $(_V) $(GIT) archive --format=tar HEAD | tar -x -C $(DIR_NAME_SRC) 414 | $(_V) $(TAR) -uf $@ $^ 415 | 416 | bundle_src: $(DIR_NAME_SRC).tar 417 | 418 | bundle_bsrc: $(DIR_NAME_SRC).tar.bz2 419 | bundle_gsrc: $(DIR_NAME_SRC).tar.gz 420 | bundle_xsrc: $(DIR_NAME_SRC).tar.xz 421 | bundle_zsrc: $(DIR_NAME_SRC).tar.zip 422 | 423 | # Addition to config for tar releases 424 | Makefile.fordist: 425 | $(_V) echo '################################################################' > $@ 426 | $(_V) echo '# Definitions needed for tar releases' >> $@ 427 | $(_V) echo '# This part is automatically generated' >> $@ 428 | $(_V) echo '################################################################' >> $@ 429 | $(_V) echo 'REPO_VERSION := $(REPO_VERSION)' >> $@ 430 | $(_V) echo 'REPO_REVISION := $(NEWGRF_VERSION)' >> $@ 431 | $(_V) echo 'NEWGRF_VERSION := $(NEWGRF_VERSION)' >> $@ 432 | $(_V) echo 'REPO_HASH := $(REPO_HASH)' >> $@ 433 | $(_V) echo 'REPO_VERSION_STRING := $(REPO_VERSION_STRING)' >> $@ 434 | $(_V) echo 'REPO_TITLE := $(REPO_TITLE)' >> $@ 435 | $(_V) echo 'REPO_DATE := $(REPO_DATE)' >> $@ 436 | $(_V) echo 'REPO_BRANCH := $(REPO_BRANCH)' >> $@ 437 | $(_V) echo 'GIT := :' >> $@ 438 | $(_V) echo 'PYTHON := :' >> $@ 439 | 440 | ifneq ("$(strip $(GIT))",":") 441 | $(DIR_NAME_SRC): $(MD5_SRC_FILENAME) Makefile.fordist 442 | $(_E) "[ASSEMBLING] $(DIR_NAME_SRC)" 443 | $(_V)-rm -rf $@ 444 | $(_V) mkdir $@ 445 | $(_V) cp $(CP_FLAGS) $(MD5_SRC_FILENAME) $(DIR_NAME_SRC) 446 | $(_V) cp $(CP_FLAGS) Makefile.fordist $@/Makefile.dist 447 | else 448 | $(DIR_NAME_SRC): 449 | $(_E) "Source releases can only be made from a git checkout." 450 | $(_V) false 451 | endif 452 | 453 | clean:: 454 | $(_E) "[CLEAN BUNDLE SRC]" 455 | $(_V) -rm -rf $(DIR_NAME_SRC) 456 | $(_V) -rm -rf $(DIR_NAME_SRC).tar 457 | $(_V) -rm -rf Makefile.fordist 458 | 459 | maintainer-clean:: 460 | $(_E) "[MAINTAINER-CLEAN BUNDLE SRC]" 461 | $(_V) -rm -rf $(MD5_SRC_FILENAME) 462 | 463 | # target 'install' which installs the baseset 464 | ################################################################ 465 | # Install targets 466 | ################################################################ 467 | ################################################################ 468 | # OS-specific definitions and paths 469 | ################################################################ 470 | 471 | # If we are not given an install dir explicitly we'll try to 472 | # find the default one for the OS we have 473 | ifndef INSTALL_DIR 474 | 475 | # Determine the OS we run on and set the default install path accordingly 476 | OSTYPE:=$(shell uname -s) 477 | 478 | # Check for OSX 479 | ifeq ($(OSTYPE),Darwin) 480 | INSTALL_DIR :=$(HOME)/Documents/OpenTTD/baseset/$(BASE_FILENAME) 481 | endif 482 | 483 | # Check for Windows / MinGW32 484 | ifeq ($(shell echo "$(OSTYPE)" | cut -d_ -f1),MINGW32) 485 | # If CC has been set to the default implicit value (cc), check if it can be used. Otherwise use a saner default. 486 | ifeq "$(origin CC)" "default" 487 | CC=$(shell which cc 2>/dev/null && echo "cc" || echo "gcc") 488 | endif 489 | WIN_VER = $(shell echo "$(OSTYPE)" | cut -d- -f2 | cut -d. -f1) 490 | ifeq ($(WIN_VER),5) 491 | INSTALL_DIR :=C:\Documents and Settings\All Users\Shared Documents\OpenTTD\baseset\$(BASE_FILENAME) 492 | else 493 | INSTALL_DIR :=C:\Users\Public\Documents\OpenTTD\baseset\$(BASE_FILENAME) 494 | endif 495 | endif 496 | 497 | # Check for Windows / Cygwin 498 | ifeq ($(shell echo "$(OSTYPE)" | cut -d_ -f1),CYGWIN) 499 | INSTALL_DIR :=$(shell cygpath -A -O)/OpenTTD/baseset/$(BASE_FILENAME) 500 | endif 501 | 502 | # If non of the above matched, we'll assume we're on a unix-like system 503 | ifeq ($(OSTYPE),Linux) 504 | INSTALL_DIR := $(HOME)/.openttd/baseset/$(BASE_FILENAME) 505 | endif 506 | 507 | endif 508 | 509 | install: $(DIR_NAME).tar 510 | ifeq ($(INSTALL_DIR),"") 511 | $(_E) "No install dir defined! Aborting." 512 | $(_E) "Try calling 'make install -D INSTALL_DIR=path/to/install_dir'" 513 | $(_V) false 514 | endif 515 | $(_E) "[INSTALL] to $(INSTALL_DIR)" 516 | $(_V) install -d $(INSTALL_DIR)/$(DIR_NAME) 517 | $(_V) install -m644 $(DIR_NAME)/* $(INSTALL_DIR)/$(DIR_NAME) 518 | 519 | # misc. convenience targets like 'langcheck' 520 | -include $(SCRIPT_DIR)/Makefile_misc 521 | 522 | help: 523 | $(_E) "all: Build the entire baseset and its documentation" 524 | $(_E) "install: Install into the default baseset directory ($(INSTALL_DIR))" 525 | $(_E) "$(GENERATE_DOC): Build the documentation ($(DOC_FILES))" 526 | ifdef GFX_SCRIPT_LIST_FILES 527 | $(_E) "$(GENERATE_GFX): Build the graphics dependencies" 528 | endif 529 | $(_E) "$(GENERATE_GRF): Build the grf file only ($(GRF_FILE))" 530 | ifdef MAIN_SRC_FILE 531 | $(_E) "$(GENERATE_NML): Generate the combined nml file only ($(NML_FILE))" 532 | endif 533 | $(_E) "$(GENERATE_LNG): Generate the language file(s) and custom_tags.txt" 534 | $(_E) 535 | $(_E) "clean: Clean all built files" 536 | $(_E) "distclean: Clean really everything" 537 | $(_E) "maintainer-clean:" 538 | $(_E) " Reset the repository to prestine state" 539 | $(_E) 540 | $(_E) "Bundles for distribution:" 541 | $(_E) "bundle: Build the distribution bundle in $(DIR_NAME)" 542 | $(_E) "bundle_tar: Build the distritubion bundle as tar archive ($(DIR_NAME).tar)" 543 | $(_E) "bundle_zip: Build the distritubion bundle and compress with zip ($(DIR_NAME).tar.zip)" 544 | $(_E) "bundle_xz: Build the distritubion bundle and compress with xz ($(DIR_NAME).tar.xz)" 545 | $(_E) "bundle_gzip: Build the distritubion bundle and compress with gzip ($(DIR_NAME).tar.gz)" 546 | $(_E) "bundle_bzip: Build the distribution bundle and compress with bzip2 ($(DIR_NAME).tar.bz2)" 547 | $(_E) "bundle_src: Build the source bundle as tar archive for distribution" 548 | $(_E) "bundle_bsrc: Build the source bundle as tar archive compressed with bzip2" 549 | $(_E) "bundle_gsrc: Build the source bundle as tar archive compressed with gzip" 550 | $(_E) "bundle_xsrc: Build the source bundle as tar archive compressed with xz" 551 | $(_E) "bundle_zsrc: Build the source bundle as tar archive compressed with zip" 552 | $(_E) 553 | $(_E) "Valid command line variables are:" 554 | $(_E) "Helper programmes:" 555 | $(_E) "MAKE MAKE_FLAGS. defaults: $(MAKE) $(MAKE_FLAGS)" 556 | ifdef MAIN_SRC_FILE 557 | $(_E) "CC CC_FLAGS. defaults: $(CC) $(CC_FLAGS)" 558 | endif 559 | $(_E) "AWK defaults: $(AWK)" 560 | $(_E) "GREP defaults: $(GREP)" 561 | $(_E) "GRFID GRFID_FLAGS. defaults: $(GRFID) $(GRFID_FLAGS)" 562 | $(_E) "UNIX2DOS UNIX2DOS_FLAGS defaults: $(UNIX2DOS) $(UNIX2DOS_FLAGS)" 563 | ifdef GFX_SCRIPT_LIST_FILES 564 | $(_E) "GIMP GIMP_FLAGS defaults: $(GIMP) $(GIMP_FLAGS)" 565 | endif 566 | $(_E) "CP_FLAGS (for cp command): $(CP_FLAGS)" 567 | $(_E) 568 | $(_E) "NML NML_FLAGS. defaults: $(NML) $(NML_FLAGS)" 569 | $(_E) 570 | $(_E) "archive and compression programmes:" 571 | $(_E) "TAR TAR_FLAGS . defaults: $(TAR) $(TAR_FLAGS)" 572 | $(_E) "ZIP ZIP_FLAGS. defaults: $(ZIP) $(ZIP_FLAGS)" 573 | $(_E) "GZIP GZIP_FLAGS defaults: $(GZIP) $(GZIP_FLAGS)" 574 | $(_E) "BZIP BZIP_FLAGS defaults: $(BZIP) $(BZIP_FLAGS)" 575 | $(_E) "XZ XZ_FLAGS defaults: $(XZ) $(XZ_FLAGS)" 576 | $(_E) 577 | $(_E) "INSTALL_DIR defaults: $(INSTALL_DIR)" 578 | $(_E) " Sets the default installation directory for basesets" 579 | 580 | --------------------------------------------------------------------------------