6 ms·
Source Code for Populous for Windows CE / Dreamcast Released
- TheAceOfHearts 4y agoIt would be beneficial to add a readme explaining what this is.
- readthenotes1 4y agoit's a nefarious underhanded dump to legetimize misspelling deprecate as depricate
- IntelMiner 4y agoNefarious is pretty insulting. Software preservation is important
- readthenotes1 4y agoImportant enough to promulgate a wrong spelling of deprecate?
- Jiocus 4y agoAbsolutely.
- eek2121 4y agoSeems pretty spot on to me. Which part has you confused? Maybe Google Populous (game) if you don't know the title or "Dreamcast" if you don't know what that is.
- Sakos 4y agoThe only google results about Populous and the Dreamcast refer back to this HN post and a comment-less Reddit post or two linking to the same repo. Mysterious. It doesn't look like Populous ever got a Dreamcast release either. edit: Oh, I dug around for LemonHaze and found this twitter post https://nitter.mint.lgbt/i/status/1607154272612896769 https://nitter.mint.lgbt/i/status/1607154272612896769 I think the title of the HN post is erroneous. It seems to be an unreleased Pocket PC port, which makes way more sense. edit2: The source for the code seems to be https://en.sega-dreamcast-info-games-preservation.com/liste-des-codes-source https://en.sega-dreamcast-info-games-preservation.com/liste-... where it's titled as "Source code of Populous for the Pocket PC system (Unreleased Windows CE Version)" Apparently WinCE games can be ported to Dreamcast too?
- tiernano 4y agoDreamcast ran windows ce, so it would be easy (ish?) to port it.
- helf 4y agoThe Dreamcast didn’t come with CE. There was just a version that could be used /with/ the DC. For some reason people equate “compatible with Windows CE” stickers with “runs Windows CE when you turn it on”
- safety1st 4y agoAccording to segaretro.org the Dreamcast did actually run an "optimized" version of WinCE (painful acronym) with DirectX. Some games ran on top of it but most ran a different OS that actually booted off of the game disc. https://segaretro.org/Windows_CE https://segaretro.org/Windows_CE
- helf 4y agoFrom that link: “ In the end, Sega chose to go down a different route than what was originally planned - bundling simple operating systems within the discs themselves. Running games through Windows CE was still an option for developers, but most games used Sega's proprietary software instead. The limited adoption of Windows CE is often blamed on console programmers lacking the experience to deal with the OS, and a lack of advantages that Windows CE offered over the competition.” It doesn’t by default boot to CE. It /is/ an option though. But it doesn’t boot it from an internal ROM.
- djmips 4y agoOr having the experience to not want to deal with that OS
- Firmwarrior 4y agoYeah, what an odd decision. I did a lot of work on CE back in the day, and I'm not a pro game dev by any means, but I don't know what advantage it would offer over any SDK that abstracted the hardware a little CE was a very lightweight OS that was mostly nice for making it easier to port drivers and apps from one embedded system to another Maybe Sega had some vague plans to turn the Dreamcast into a multipurpose family computer?
- mmastrac 4y agoIs this an actual release or a nebulously-licensed dump of some random port? If it's the former, that's awesome as this was one of my favourite games as a kid.
- Jensson 4y agoThe files don't look generated at least, no generator would produce unordered stuff like this (god.h): #define FIRST_RUIN_TOWN 54 #define BAD_LAND 66 #define FLAG_SPRITE 64 #define SHIELD_SPRITE 68 #define GODS_HAND_SPRITE 78 #define ANHK_SPRITE 80 #define SKULL_SPRITE 81 #define DEVILS_HAND_SPRITE 79
- WirelessGigabit 4y agoA generator wouldn't even have this file. You'd just see 54 embedded somewhere in a call.
- rootw0rm 4y agothat was my first thought, too
- ytch 4y agoI guess it is ported version: https://github.com/LemonHaze420/DCPopulous/blob/4cd8b7562191d0b96616cf82a19bf7a303877477/populous_frontend.cpp#L500 https://github.com/LemonHaze420/DCPopulous/blob/4cd8b7562191... It's license dialog has a link to http://www.portable-games.com/populous http://www.portable-games.com/populous
- omoikane 4y agoA different repository by the same user had a similar text: https://github.com/LemonHaze420/DCSpeedBall2/blob/e6d9ce3c11fe9117048a1cf83fe26f7bd44577f1/frontend.cpp#L7582 https://github.com/LemonHaze420/DCSpeedBall2/blob/e6d9ce3c11... I don't remember Speedball 2 having a DreamCast port, so these repositories seem somewhat strange. They are also strange for missing license files and various other asset files.
- Cyph0n 4y agoWhere is the Dreamcast code? I don’t see any non-Windows preprocessor directives.
- deleted 4y ago[deleted]
- davikr 4y agoDreamcast games often run Windows CE as their host operating system.
- hnlmorg 4y agoDreamcast supported Windows CE but it was mainly the homebrew community which used it because it didn’t perform as well as Sega’s own hardware specific SDK. So most games didn’t use WinCE
- deleted 4y ago[deleted]
- roperj 4y ago> Windows CE but it was mainly the homebrew community Name some? Granted I’ve been out of the homebrew dev scene for a while, but this doesn’t sound right. Developing for Windows CE would require a commercial/proprietary copy of Platform Builder and Dreamcast BSP. This is not very “homebrew” friendly at all - especially when there were a ton of homebrew libraries and OSes for Dreamcast through the years, eg Kallistios.
- TapamN 4y agoThere are a few homebrew releases that used WinCE, but that makes up something like 1% or less of homebrew software. I think there was some MP3 player, a 3D FPS that was never released, and a Duke3D port? Maybe a couple more? KallistiOS is, by far, the most popular choice, and is used in probably 98% of homebrew.
- sys_64738 4y agoWhat did they do here? Verbatim copy it from the original assembler implementation to C code for WinCE? https://github.com/LemonHaze420/DCPopulous/blob/master/populous_drawsprs.cpp https://github.com/LemonHaze420/DCPopulous/blob/master/popul...
- Sakos 4y agoSeems to be an unreleased port for the PocketPC, see my other comment https://news.ycombinator.com/item?id=34133405 https://news.ycombinator.com/item?id=34133405
- tom_ 4y agoIt looks like it's been converted from arm to c - any assembly language bits in the original populous would have been presumably in 68000? If it was based on the Archimedes version then maybe the sprite routines would have been the only assembly language bit.
- thom 4y agoSo kids, how would we refactor this? https://github.com/LemonHaze420/DCPopulous/blob/master/populous_peeps.cpp https://github.com/LemonHaze420/DCPopulous/blob/master/popul...
- bluedino 4y agoStuff like this would be great for a computer science class. Algorithms, performance, software engineering.
- glass-z13 4y agoIt's almost a perfect wave of brackets
- mappu 4y agoMost of the bracket lines are space-indented and most of the if lines are tab-indented - likely GitHub rendering with 8-space instead of 4-space tabs is making it look worse than intended,
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- britneybitch 4y agoWell first off it needs to be rewritten in Rust, obviously. I just can't enjoy playing a game if I don't know for sure it's memory safe.
- linsomniac 4y agoPopulous is a game I'd love to play again! I had high hopes for Godus, but in the end Godus was pretty much everything I hate about modern games.
- frogulis 4y agoCould you explain that in more detail? I was thinking about buying it.
- avereveard 4y agotime gating, microtransactions, ties to "social" features where the first to dig a specific piece out of a cube would win godus related things (that were never delivered), and ultimately abandoned after early monetization failed.
- linsomniac 4y ago@frogilus: This sounds correct, it's been too long for me to remember specifics, but time gating and microtransactions sound like some of the biggest issues I had with it at the time.
- bartread 4y agoIf you have three hours (!) to spare, Kim Justice's documentary on Peter Molyneux is worth a watch: https://www.youtube.com/watch?v=zFZ92jySWe0 https://www.youtube.com/watch?v=zFZ92jySWe0. If you don't have three hours to spare and all you want to know about is Godus then, helpfully, the documentary is also available in several parts (which, I believe, was its original format). Godus is covered in part 4: https://www.youtube.com/watch?v=V9ysOEFJhFY https://www.youtube.com/watch?v=V9ysOEFJhFY. Bit of a sad tale overall. Nevertheless, for reasons I've explained at https://news.ycombinator.com/item?id=24377333 https://news.ycombinator.com/item?id=24377333, and despite all of this history, Peter Molyneux will always remain something of a legend to me.
- lelandfe 4y ago
- QIYGT 4y agoInteresting: #ifdef COMPAQ_SOUND // IPaqs are slow to declare a buffer finished with. Need fewer, but longer buffers. // Longer buffers result in a time lag between the code // issuing a sample play command and it actually being // played. This configuration seems to be the best. // Short or longer buffers cause stutter. #define SOUND_BUFFER_LENGTH (3072) #define NUMBER_OF_QUEUED_BUFFERS 2 #else // All other machines are much better about the sound code // and have a response time half that of the IPaq. #define SOUND_BUFFER_LENGTH (1024) #define NUMBER_OF_QUEUED_BUFFERS 3 #endif
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- pjmlp 4y agoI love how they even took into consideration safe programming practices, who says game devs shouldn't care about security. https://github.com/LemonHaze420/DCPopulous/blob/master/safeprogramming.h https://github.com/LemonHaze420/DCPopulous/blob/master/safep...
- kevingadd 4y agoParanoia was pretty common (and reasonable!) back in the era before you could easily release patches. Tossing in all those asserts etc would mean you would catch problems sooner during testing and be able to fix them quicker. Many game companies ship with asserts + assert messages turned on, for example, instead of making them DEBUG-only.
- iso8859-1 4y agoWould they abort(3) when an assert fails? Isn't there a risk of having a erroneously strict assert predicate and then having the game abort unnecessarily? If the game keeps going without aborting in the case that state has somehow been compromised, there is still the chance that the player won't actually notice. I wonder if they are afraid that the game state will be compromised in a way that makes the player not realize the corruption, but still ruin the game.
- kevingadd 4y agoYou have the aggressive asserts in during development, you can make them nonfatal in release builds. Though many games actually leave them on, for example World of Warcraft still has them set to crash the game with a detailed error message. Tabula Rasa (the ill-fated MMO) handled many assertion failures in a nonfatal way with an in-game popup, and errors in WoW mods also don't crash the game. Most of the games I work on have a mixed approach where if an error is recoverable I don't crash out, but if it's not then I fail-fast out with a detailed error popup. An example of a recoverable error would be a bug causing a player-activated ability to fail to activate, while fail-fast would be the right choice for something like an unexpected null in a data structure.