Tuesday, 6 June 2017

Gotchas When Porting C++ and OpenGL Applications to the Dreamcast

Over the past month or so I've been steadily working on porting my game engine Simulant to the Dreamcast. While it's not quite ready for prime-time, I did discover a lot of road-bumps along the way, and I thought I should write some of them down so that anyone else porting to the Dreamcast will at least have some results on Google to look at!

Compile the Dreamcast SDK with GCC 4.x

It didn't take very long to compile my code, but when it came to linking all kinds of trouble awaited me. Whenever I tried to link, most of the C++ symbols (things like string and vector) were missing. After several days trying different linker flags I decided the problem must be with the SDK itself. A quick `nm` of libstdc++.a showed up the problem; only a handful of symbols were in there!

I've been using a Docker container to compile my code, which is fortunate because it allowed me to gradually roll back the Fedora version until I hit one that correctly compiled libstdc++. Fedora 21 is where it worked!

The moral of the story is that for some reason, GCC 5.x and above will not correctly compile libstdc++.a from GCC 4.x - so if you're compiling the SDK for C++ code, you're going to need to use an old GCC version.

Don't rely on std::atomic or std::async

The SH4 CPU only has a single limited atomic instruction which rules out support for std::atomic. That by itself wouldn't be so bad, but it turns out that even though the standard defines that std::async can be implemented without atomics, GCC hasn't done that.

In most cases it's trivial enough to build what you need using std::mutex and std::thread - but it is a bit of a hassle.

std::chrono::high_resolution_clock ... er... isn't

This had me confused for a while. I had a sample GL application running; a spinning cube, and it would run at a consistent 1FPS. I know the DC is slow compared to modern machines, but, 1FPS for a cube?!

Turns out that the "high resolution" timer had an accuracy of 1 second! Using the built-in KallistiOS timer functions fixed it.

libGL is still a WIP

The GL port for the DC is a great little library, but it has some rough edges. I recommend that you get your application runnable on both your PC and the DC and focus on targetting GL 1.1. If the graphics in your application don't work on the Dreamcast but do on the PC then investigate and submit a patch!

13 comments:

  1. Although I don't fully understand this post, I'm sure some of my computer science friends will love your blog. Will share with them.

    ReplyDelete
  2. CrownQQ | Domino agent QQ | BandarQ | Domino99 Online Largest

    Who Is The Agent Bandarq, Domino 99, And The Trusted Online Poker City in Asia comes to all of you with exciting game games and exciting bonuses for all of you

    Bonus on CrownQQ:
    * Bonus rolling 0.5%, every week
    * Refferal Bonus 10% + 10%, lifetime
    * Bonus Jackpot, which you can get easily

    Featured Games CrownQQ:
    * Online Poker
    * BandarQ
    * Domino99
    * Bandar Sakong
    * Sakong
    * Bandar66
    * AduQ
    * Sakong

    More Info Visit:
    Website: AGEN BANDARQ CrownQQ
    BBM: 2B382398
    FB: AgentCrownqq
    Twitter: crown_qq

    ReplyDelete
  3. CrownQQ | Agen Domino QQ | BandarQ | Domino99 Online Terbesar

    Yang Merupakan Agen Bandarq, Domino 99, Dan Bandar Poker Online Terpercaya di asia hadir untuk anda semua dengan permainan permainan menarik dan bonus menarik untuk anda semua

    Bonus yang di berikan CrownQQ :
    * Bonus rollingan 0.5%,setiap minggunya
    * Bonus Refferal 10% + 10%,seumur hidup
    * Bonus Jackpot, yang dapat anda dapatkan dengan mudah

    Games Yang di Hadirkan CrownQQ :
    * Poker Online
    * BandarQ
    * Domino99
    * Bandar Sakong
    * Sakong
    * Bandar66
    * AduQ
    * Sakong

    Info Lebih lanjut Kunjungi :
    Website : AGEN BANDARQ CrownQQ
    BBM : 2B382398
    FB : AgenCrownqq
    Twitter : crown_qq

    ReplyDelete
  4. CrownQQ | Agen Domino QQ | BandarQ | Domino99 Online Terbesar

    Yang Merupakan Agen Bandarq, Domino 99, Dan Bandar Poker Online Terpercaya di asia hadir untuk anda semua dengan permainan permainan menarik dan bonus menarik untuk anda semua

    Bonus yang di berikan CrownQQ :
    * Bonus rollingan 0.5%,setiap minggunya
    * Bonus Refferal 10% + 10%,seumur hidup
    * Bonus Jackpot, yang dapat anda dapatkan dengan mudah

    Games Yang di Hadirkan CrownQQ :
    * Poker
    * BandarQ
    * Domino99
    * Bandar Poker
    * Sakong
    * Bandar66
    * AduQ
    * Sakong

    Info Lebih lanjut Kunjungi :
    Website : http://zonaemas.com | http://topiemas.com
    BBM : 2B382398
    FB : AgenCrownqq
    Twitter : crown_qq

    ReplyDelete


  5. Mau menang banyak dengan modal sedikit..
    Ayo gabung di Agen Domino NAGAQQ.
    =>Bonus Refferal 20%
    =>Bonus Turn Over 0,5%
    =>Min Deposit Rp 15.000
    =>1 User ID 4 Games
    Situs yang bisa memberikan kemenangan AGEN BANDARQ TERBAIK
    Raih kemenangan anda segera...
    WHATSAPP : +855967014811
    PIN BB : 2B209F68

    ReplyDelete
  6. Cari Situs Judi BANDAR POKER ONLINE Online yang aman dan terpercaya ?
    Solusinya hanya di CROWNQQ
    Bonus Refferal 20%
    Bonus Turn Over 0,5%
    Hanya dengan minimal deposit 20ribu sudah bisa bermain 8 game sekaligus lohh..
    "NEW AGEN BANDAR 66"
    Ayo daftar dan gabung sekarang juga,,
    WHATSAPP : +855967646513
    PIN BB : 2B382398

    ReplyDelete
  7. Susah menang di situs lain ???
    Ayo daftarkan diri anda di Crownqq
    Raih kemenangan Dengan Agen BandarQ
    Bonus Refferal 20%
    Bonus Turn Over 0,5%
    WHATSAPP : +855967646513
    PIN BB : 2B382398

    ReplyDelete
  8. this blog was really great, never seen a great blog like this before. i think im gonna share this to my friends.. tik tok video

    ReplyDelete
  9. NAGAQQ | AGEN BANDARQ | BANDARQ ONLINE | ADUQ ONLINE | DOMINOQQ TERBAIK

    Yang Merupakan Agen Bandarq, Domino 99, Dan Bandar Poker Online Terpercaya di asia hadir untuk anda semua dengan permainan permainan menarik dan bonus menarik untuk anda semua

    Bonus yang diberikan NagaQQ :
    * Bonus rollingan 0.5%,setiap senin di bagikannya
    * Bonus Refferal 10% + 10%,seumur hidup
    * Bonus Jackpot, yang dapat anda dapatkan dengan mudah

    * Minimal Depo 15.000
    * Minimal WD 20.000

    Memegang Gelar atau title sebagai AGEN BANDARQ Terbaik di masanya

    Games Yang di Hadirkan NagaQQ :
    * Poker Online
    * BandarQ
    * Domino99
    * Bandar Poker
    * Bandar66(NEW GAMES)

    Dengan Link alternatif resmi :
    - http://www.nagaqiuqiu.com/
    - http://www.nagaqiuqiu.info/
    - http://www.nagaqiuqiu.org/
    - http://www.nagaqiuqiu.net/

    Info Lebih lanjut Kunjungi :
    Website : NAGAQQ
    WHATSAPP : +855967014811
    Line : Cs_nagaQQ

    BACA JUGA BLOGSPORT KAMI YANG LAIN:
    https://dragonqq99.blogspot.com/
    https://nagaqqone.blogspot.com/
    https://winnernagaqq.blogspot.com//



    ReplyDelete
  10. RajaBandarQ
    Adalah website yang paling digemari saat ini oleh para pecinta judi online
    Dengan adanya 8 game terbaik yang disediakan oleh pihak website RajaBandarQ , akan banyak mengundang para pecinta judi poker online untuk bermain diwebsite RajaBandarQ

    8 Game Yang disediakan oleh pihak RajaBandarQ diantaranya adalah :

    * AduQ
    * BandaarQ
    * Bandar Poker
    * Bandar 66 ( New Games )
    * Capsa Susun
    * Domino QQ
    * Poker
    * Sakong

    Keunggulan jika bergabung di website RajaBandarQ :

    - 100% Mudah Menang & Fairplay Game
    - Minimal Deposit & Withdraw Rp 20.000,-
    - Bonus Rollingan 0.3% (Tanpa Syarat)
    - Bonus Referral 20% (Seumur Hidup)
    - Bonus Extra Rollingan (S&K Berlaku)
    - Sistem keamanan terbaru
    - Support 6 Bank Local ( BCA , BNI , BRI , CIMB NIAGA , DANAMON , MANDIRI )

    Contact Us

    Whatsapp : +6281 3260 55762
    Line : rajabandarq

    Link Official :
    - rajabandarqiu.com
    - rajabandarqiu.info
    - rajabandarqiu.org
    - rajabandarqiu.net

    Tunggu apalagi ? Daftarkan diri anda segera juga dan menangkan jackpot jutaan rupiah hanya dengan modal Rp 20.000,-
    Hanya Di RajaBandarQ

    ReplyDelete
  11. JACKPOT MENANTI ANDA BOSQUEE ^^

    Mari bergabung bersama KARTUVIPQQ Agen Poker Online Terpercaya dan Terbesar di Indonesia.

    Jangan menunda kesempatan untuk jadi jutawan, join sekarang juga !!!

    Jangan mengaku jago main poker & domino kalau belum bermain di KARTUVIPQQQ

    Kami hadir dengan 8 macam permainan dalam 1 ID :
    - Bandar Poker
    - Poker
    - BandarQ
    - Bandar66
    - Domino99
    - Bandar66
    - Sakong
    - Capsa Susun

    Dapatkan bonus terbesar di KARTUVIPQQ
    - BONUS MINGGUAN : 0.5% [Tanpa Syarat]
    - BONUS REFERRAL : 20% [Seumur Hidup]

    Ajak teman anda sebanyak-banyaknya dan tingkatkan turnover Anda, maka makin banyak bonus yang akan di dapatkan.

    Kemenangan anda merupakan kebanggaan kami, karena dengan kemenangan anda, maka anda akan semakin betah bermain di KARTUVIPQQ

    - LiveChat KARTUVIPQQ Online 24 Jam Non Stop
    - Support Platform ANDROID dan IOS
    - Minimal Deposit 15.000 / Withdrawnya Rp 20.000
    - Proses Deposit / Withdraw tidak sampai 3 menit !
    - Bertransaksi di support 5 BANK : BCA - MANDIRI - BNI - BRI - DANAMON
    - 100% Player VS Player ( NO ROBOT / ADMIN!)
    - Win Rate Tertinggi 99% Pasti Menang


    Gabung Di Sini, Lebih Banyak Menangnya !!!

    Untuk informasi lebih lanjut, silahkan hubungi kami di.
    Link : https://bit.ly/2Jhy2iu
    Whatsapp : +85510791654

    ReplyDelete
  12. PERMAINAN ONLINE TERBESAR DI INDONESIA

    Website paling ternama dan paling terpercaya di Asia ^^
    Sistem pelayanan 24 Jam Non-Stop bersama dengan CS Berpengalaman respon tercepat :)
    Memiliki 8 Jenis game yang sangat digemari oleh seluruh peminat poker / domino

    - Adu Q
    - Bandar Q
    - Bandar Sakong
    - Bandar Poker
    - Poker
    - Domino 99
    - Capsa Susun
    - BANDAR66 / ADU BALAK ( GAME TERBARU )

    Permainan Judi online yang menggunakan uang asli dan mendapatkan uang asli ^^
    * Minimal Deposit : 20.000
    * Minimal Withdraw : 20.000
    * Deposit dan Withdraw 24 jam Non stop ( Kecuali Bank offline / gangguan )
    * Bonus REFFERAL 15 % Seumur hidup tanpa syarat
    * Bonus ROLLINGAN 0.3 % Dibagikan 5 hari 1 kali
    * Proses Deposit & Withdraw PALING CEPAT
    * Sistem keamanan Terbaru & Terjamin
    * Poker Online Terpercaya
    * Live chat yang Responsive
    * Support lebih banyak bank LOKAL


    Contact Us
    Website SahabatQQ
    WA 1 : +85515769793
    WA 2 : +855972076840
    Telegram 1 :+85515769793
    Telegram 2 : +855972076840
    LINE : SAHABATQQ
    TWITTER : SahabatQQ
    Kami Siap Melayani anda 24 jam Nonstop
    daftar sahabatqq
    Kontak SahabatQQ : Kontak SahabatQQ

    ReplyDelete
  13. Saya memiliki skor kredit yang sangat rendah sehingga upaya saya untuk meminjam dari Bank ditolak. Saya bangkrut sampai-sampai saya tidak mampu makan tiga kali sehari dan juga saya benar-benar bangkrut karena nama saya identik dengan kemiskinan. saya berhutang baik dari teman-teman saya dan juga dari rentenir hidup saya di bawah ancaman saya harus melarikan diri dari rumah dan saya membawa anak-anak saya untuk bertemu ibu mertua saya karena sifat ancaman yang saya terima dari orang-orang yang meminjamkan saya uang Jadi saya harus mencari cara cepat dan mendesak untuk membayar kembali uang itu dan juga memulai bisnis baru usaha pertama saya sangat mengerikan karena saya ditipu sebesar Rp5.390.020.00 saya harus pindah juga dua minggu kemudian saya kehilangan Rp350.000,00 kepada pemberi pinjaman yang curang jadi saya turun secara finansial dan emosional karena ini adalah yang paling tidak saya harapkan sehingga seorang teman saya memberi tahu saya untuk menghubungi email ini: :( iskandalestari.kreditpersatuan@gmail.com) bahwa saya harus meminta jumlah berapa pun berharap agar Bunda Iskandar selalu menjadi kembali untuk memberikan bantuan keuangan kepada siapa pun yang membutuhkan sehingga saya meminta untuk jumlah Rp850.000.000,00 dalam waktu 24 jam cerita saya berubah untuk selamanya saya membayar semua hutang saya dan saya juga memiliki cukup uang untuk membiayai sendiri bisnis semua terima kasih kepada teman saya yang memperkenalkan saya kepada ibu khususnya dan juga kepada Ibu Iskandar pada umumnya untuk mengubah rasa malu saya menjadi terkenal
    Atas perkenan: ISKANDAR LESTARI LOAN COMPANY
    Email: (iskandalestari.kreditpersatuan@gmail.com)

    ReplyDelete