ryanfb Posted June 10, 2017 Release: Cruisin' for a Word that Rhymes With Cruisin' on itch.io "Cruisin' [anything]" invokes an intense nostalgia of a specific type of driving game for me, so I want to make a super-idiotic driving game based on the premise of the title alone where the goal is to hit as many words that rhyme with "cruisin'" while avoiding words that don't rhyme with "cruisin'". Looking around at old games that I wanted to emulate the style of, I stumbled into someone who developed an SDK for the original Out Run arcade hardware, so of course I needed to crank up the idiocy of this project even more by trying to develop this so that it runs on original Out Run arcade hardware (or more realistically, runs in MAME or in a browser via JSMESS). As of right now, I've wasted an immense amount of time getting the build environment completely inside Docker, as the SDK was originally developed for Windows. I've also reverse engineered the Out Run PCM audio ROMs and replaced some of the voice samples so I can make it say "Cruisin' for a Word that Rhymes With Cruisin'" after booting up ("reverse engineered" sounds more complex than what was actually involved, which was figuring out the ROMs and sample rate info for the PCM data and editing/re-exporting them in Audacity). I've also modified the SDK road sample so that it displays "Cruisin' for a Word that Rhymes With Cruisin'" and displays the Ferrari sprite on the scrolling road: Next steps will be to add the first pass of crude input handling, scrolling words (probably initially just using the basic text mode, which I don't think will let me scale - maybe I could load/display letters as sprites and scale them?), and scorekeeping/lives. Share this post Link to post Share on other sites
Zirrrus Posted June 10, 2017 This is good, I like this. Share this post Link to post Share on other sites
nkornek Posted June 11, 2017 This is such a cool idea! Share this post Link to post Share on other sites
ryanfb Posted June 11, 2017 One thing I'm wondering about as I'm working on this is what words should count as "rhymes with cruisin'". One clear-cut criteria would be that it has to end in the "-oozin" sound ("oozin'" is definitely on the good words list). This would mean words like "wooshin'", "dupin'", or "Rodkin" wouldn't count as rhymes. Part of my reasoning is this also makes it easier to add a little challenge by starting out with words that definitely don't rhyme with cruisin' ("Goldblum", "wizard", etc.) then ramping up the difficulty by mixing in words that nearly sort of rhyme. But I can see people getting frustrated with that too, if they think a rhyme is close enough. Any thoughts? Share this post Link to post Share on other sites
BluShine Posted June 11, 2017 This project is nuts, and I love it. I just hope it won't be too hard to actually run your game. Maybe package up a zip file with an emulator and the rom all set up? I think you're probably better-off just avoiding near-rhymes like "whoosin", rhyming definitely has some gray areas, and it's hard to objectively say where a true rhyme stars and a half-rhyme begins. If you want to distract and challenge the player, what if you included words that look kinda like a rhyming word but sound completely different? So, alongside "boomin", you could also have "bombin", "bonin", "bannin", "bossin", "burpin", etc. Putting text sprites on the road seems like it might be tricky. If the text exists in the 3D space, it might be hard to read because of the low resolution, especially at a distance. I guess one solution would be to put scaled "target" sprites on the road, and have the text float above or beside the sprite. Share this post Link to post Share on other sites
ryanfb Posted June 11, 2017 7 hours ago, BluShine said: This project is nuts, and I love it. I just hope it won't be too hard to actually run your game. Maybe package up a zip file with an emulator and the rom all set up? I think you're probably better-off just avoiding near-rhymes like "whoosin", rhyming definitely has some gray areas, and it's hard to objectively say where a true rhyme stars and a half-rhyme begins. If you want to distract and challenge the player, what if you included words that look kinda like a rhyming word but sound completely different? So, alongside "boomin", you could also have "bombin", "bonin", "bannin", "bossin", "burpin", etc. Putting text sprites on the road seems like it might be tricky. If the text exists in the 3D space, it might be hard to read because of the low resolution, especially at a distance. I guess one solution would be to put scaled "target" sprites on the road, and have the text float above or beside the sprite. Thanks! These are all great suggestions. I think the easiest option for running will be to package it up in a webpage with JSMESS pointing to a configured ROM, like what the Internet Archive has for the original Out Run. (Plus a downloadable version of the ROM as well, for people who want to run it locally in MAME…or anyone maniacal enough to try it on real hardware). It looks like I can do that on itchio. Text rendering is tricky, and I might have to wind up sticking with the sorta-clunky "text drops down from the top". Text rendering on the Out Run hardware gets its own rendering layer and ROM bank, completely separate (and inaddressable, it seems) from the sprite rendering layer. This splits the screen into 64x28 cells of text, so you can't smoothly scroll text down the screen. I've hooked up some controls (with bonus car sprite angle-changing as it moves across the screen!) and the very first pass at dropping words: One interesting discovery while coding this was that there's a bug (also in the original Out Run game) where the Ferrari logo flips as the car moves across the screen (because there's just one Ferrari sprite that gets horizontally flipped). With how many sprites they have for other rare things in the game, I'm pretty surprised they didn't just use a separate sprite for the logo! Digging into this project has let me learn all sorts of interesting things about the original Out Run game, and how much care was put into some of the ports/updates. For example, the original Out Run hardware had a bug in the percussion samples introduced during ROM manufacturing that distorted some of the music tracks which they fixed for the 20th anniversary edition of the soundtrack (see also this interview about how they fixed even more subtle issues for the 3DS version). For the 3DS port of Out Run, they composed two new songs on the original arcade Z80/YM2151 sound hardware. That's hardcore. Share this post Link to post Share on other sites
brendonsmall Posted June 11, 2017 I give this my whole hearted endorsement, as a fellow "Cruisin'" Wizard Jam entry maker. Godspeed @ryanfb, can't wait to see the final result Share this post Link to post Share on other sites
ryanfb Posted June 13, 2017 On 6/11/2017 at 10:24 AM, brendonsmall said: I give this my whole hearted endorsement, as a fellow "Cruisin'" Wizard Jam entry maker. Godspeed @ryanfb, can't wait to see the final result Thanks! Glad I'm not steppin' on any cruisin' toes. Got a MAME/JSMESS "outrun" driver built and working with my ROM in a local webpage by following these instructions, and did a little bit more work on the actual "game loop". This week and weekend are pretty busy for me, so I'm trying to work with a mind to being able to stop at any point and still have a working game. So it might not have all the silly features I can dream up, but it should at least run and be a playable game! Share this post Link to post Share on other sites
brendonsmall Posted June 14, 2017 I would have gone with "...runnin' over any cruisin' toes" *puts on shades* Also, here's a word list if you want some extra zazz and don't already have them all in your list: ACCUSIN, AFFUSIN,AMUSIN,CHOOSIN,CONFUSIN,DEFUSIN,EXCUSIN,FUSIN,INFUSIN,MISUSIN,OOZIN,OVERUSIN,PERUSIN,RECUSIN,REFUSIN,REUSIN,SCHMOOZIN,SNOOZIN,SUFFUSIN,TRANSFUSIN Share this post Link to post Share on other sites
ryanfb Posted June 15, 2017 Pretty happy with the main game loop and difficulty ramp right now: (forgot to move my cursor out the way when recording) Might try to add a little more polish, but at least I have something that works for the most part. Here are the current word lists, if there's any suggestions. I tried to avoid ambiguity but I think the difficulty is still good (it ramps from mixing in "bad words" to mixing in "hard words", and also increases the difficulty in other ways as your score goes up): Spoiler const char * const good_words[] = { "abusin'", "accusin'", "amusin'", "bemusin'", "bruisin'", "boozin'", "choosin'", "confusin'", "cruisin'", "defusin'", "diffusin'", "enthusin'", "excusin'", "fusin'", "infusin'", "losin'", "misusin'", "musin'", "oozin'", "overusin'", "perusin'", "recusin'", "reusin'", "refusin'", "schmoozin'", "snoozin'", "susan", "transfusin'", "usin'" }; const char * const bad_words[] = { "goldblum","gazoo","wizard","corvo","pizza","hotdog", "dino","cruiser","idle","molyneux","luigi","remo", "gaynor","bogost","itchio","riendeau","coffee", "dishonored","racecar","brain","crate","podcast", "robot","beer","usa","world","exotica","tiki", "word","that","rhymes","with","game","fallin'", "droppin'","outrun","kitten","puppy","grain", "gain","strain","violin","bomb","nope", "wrong","gamejam","dolphin","spin","wave", "rhythm","roadtrip","flat","stop","puncture","cloud" }; const char * const hard_words[] = { "bombin'", "bonin'", "bannin'", "bossin'", "burpin'", "escapin'","paddlin'","trampin'","runnin'","braisin'", "pamperin'","crashin'","frackin'","rinsin'","racin'", "bumpin'","rubbin'","clashin'","flashin'","crushin'", "skiin'","skatin'","flyin'","gamin'","jumpin'","russian", "fallin'","amazin'","explodin'","moppin'","wreckin'", "guns'n'","breakin'","shreddin'","flippin'","eatin'", "trippin'","fryin'","clickin'","laughin'","boastin'", "burpin'","bikin'","slashin'","nuts'n'","chompin'", "speedin'","snipin'","pointin'","makin'", "touchin'","blastin'","blockin'","writin'","campin'", "sippin'","spelunkin'","maxin'","bombin'","playin'", "readin'","tappin'","scrappin'","hosin'","hoisin","boxin'", "raisin","testin'","basin","rosin","resin","concussion", "satin","cabin","merlin","kelvin","toxin","percussion", "firkin","marlin","goblin","gobblin'","mushin'", "regain","pectin","chopin","choppin'","sloshin'", "reachin'","strainin'","preachin'","tumblin'","fussin'", "exposin'","grumblin'","typin'","sneezin'","tweezin'", "achin'","quittin'","pickin'","talkin'", "idlin'","thumbin'","wizardin'", "bonus","rodkin","vanaman","breckon","gerstmann" }; Share this post Link to post Share on other sites
ryanfb Posted June 16, 2017 Figured out multiple sprite rendering and added a strong female protagonist (unlike the original Out Run): Can you handle these graphics?! Share this post Link to post Share on other sites
infamous space turtle Posted June 16, 2017 I cant handle. its good, very good. Share this post Link to post Share on other sites
brendonsmall Posted June 16, 2017 13 hours ago, ryanfb said: Can you handle these graphics?! No I cannot. They are really great. Share this post Link to post Share on other sites
ryanfb Posted June 17, 2017 Game is live and submitted to the jam on itch.io! https://ryanfb.itch.io/cruisin Anyone wanna go for a high score contest? Share this post Link to post Share on other sites
brendonsmall Posted June 19, 2017 On 6/17/2017 at 0:05 PM, ryanfb said: Anyone wanna go for a high score contest? Nice and chill, and I like the minimal music and robot voice. I managed to get 1300 points! Spoiler And got totally hoisted not thinking that Susan rhymed with Cruisin' but of course it does! Sneaky! Share this post Link to post Share on other sites
ryanfb Posted June 20, 2017 Thanks! My high score during development was 1750, but I think it's pretty easily beatable with some work. I wish I had taken some more time to figure out more of the sound hardware so I could have simultaneous music and SFX, but oh well. Speaking of which, someone ported the 3DS Out Run music tracks to run on arcade hardware, because of course they did: (see also here) Some more links of things that I stumbled across while developing this: Lou's Pseudo 3D Page - some explanation and analysis of psuedo-3D road rendering Out Run Enhanced Edition - fixes various bugs in the original ROMs CannonBall - a from-scratch disassembly/reassembly of the original Out Run engine LayOut - an Out Run track editor The MAME outrun driver source - immensely helpful for tinkering and understanding what's going on Share this post Link to post Share on other sites
cyberstition Posted June 21, 2017 Very cool, I love the graphics! Share this post Link to post Share on other sites
getinthedamnbox Posted June 23, 2017 The retro look of this is really authentic. I like the way the car sprite subtly shifts to match the side of the screen it's on. Share this post Link to post Share on other sites