ryanfb

[Release] Cruisin' for a Word that Rhymes With Cruisin'

Recommended Posts

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:

 

BZ9DRYv.png

 

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

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

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
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:

 

vQtqD0U.png

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
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 :D

 

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

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

Pretty happy with the main game loop and difficulty ramp right now:

 

JJsTuqq.gif

 

(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

Figured out multiple sprite rendering and added a strong female protagonist (unlike the original Out Run):

 

zkmO5So.png

Can you handle these graphics?!

Share this post


Link to post
Share on other sites
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

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:

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now