Thwaite: stuff blowing up

Thwaite: stuff blowing up
by on (#74488)
Video of stuff blowing up

You may need to install the Xvid codec if you don't already use VLC media player.

by on (#74489)
Really nice. Looks polished. I like the particle effects on the missiles and bombs.

Great job!

by on (#74493)
Can't wait to try it out. Looks really nice. I love games like this :)

by on (#74494)
I love the houses, they're super cute.

by on (#74517)
tepples, by now you probably know how I feel about single screen games, so I will not talk about that and will focus on the presentation instead.

It looks OK, but there's something about the presentation that makes it look like it was made in 1985 rather than 2010/11. The title screen is a good example of more modern design, with interesting stylized fonts and all, but the actual game screen is pretty bland.

The font in the status bar is boring. The scene is too static, nothing besides the projectiles moves. Maybe you could flicker the stars a bit (and make them blue instead of gray?), add (very) little people running around in panic... You know, add some complexity to it.

The houses are indeed very cute, but the explosions look very cheap. Maybe you should try giving them a more interesting shape, like Memblers did in an unfinished game he once showed us (I think it was Memblers, I can't find the post right now). It doesn't have to be realistic, just more interesting than a circle.

Another thing that bothers me is the lack of any kind of screen transition. There's only black between screens and that is very typical of first generation NES games. Add some fading, or scrolling, or anything that makes the transitions more dynamic.

by on (#74541)
I like it, very cool. Can't wait to see what gets added. Yeah, more polish like Tokumaru said would be nice, I'm sure your just messing with the games core engine right now though.

by on (#74552)
It looks like a good solid start to a Missile Command type of game. Can't really think of anything at the moment to suggest. I do like the smoke trails and while the explosions looks uniform and very circle like, I didn't find them unfitting or anything.

by on (#74553)
Very nice Missile Command clone. The missile trails are a quite nice touch, and the explosions manage to look better than usual for the NES, while still keeping some of the feel of the original game; I do agree, though, that the game needs some more variation: even something simple, like a powerup that gives you ridiculous firepower for a couple of seconds or some sporadic additional tricky enemy that must be defeated in some different way would serve to improve the game. Then again, maybe keeping it short and simple could also lead to better gameplay...

There I go trying to sound like some expert... well, just do whatever sounds fun to code, and you should be okay. :P

by on (#74554)
I just found a video of the explosion I was talking about before. It's a bit too realistic though, so I don't think you should do exactly that... A bit more cartoony maybe? If you really want to keep them as circles, maybe you could have them fade out less uniformly, like in this Mega Man intro.

by on (#74556)
Thanks for the constructive criticism.

Stars: I could do like Balloon Fight and randomize which of eight star tiles I have at each star tile location. That wouldn't be too much of a problem compared to the current location. But blue would invite other palette problems, as the only blue palette I have is brown-blue-white, used for the blue houses and player 1's silo.

Font: I'm currently using a variant of Chicago because Susan Kare did a damn good job of making a readable font. I tried a more artistic font for body text in another program (Multiboot Menu) and got complaints that it hurt readability, just as the font in Caveman Games hurt readability. Even other games whose logos use the same "artistic" font as this (Animal Crossing, Big Brain Academy, Puppy Palace) use a plainer font for body text.

Panicked villagers leaving houses: Another good idea. I'd have to make them more active early in each wave while the player is waiting for the first incoming missiles, so that they don't eat up too many OAM slots. (Smoke uses a lot, which is why it tends to fade faster when lots of action is happening.)

Circular explosions: The collision detection assumes the explosions are circles, as in the original. But you're right that it might be worth spending a few more tiles on explosions that aren't so symmetric in their shading.

Transitions: A short cut scene for the sunrise and sunset transition every five levels is planned. A (skippable) opening cut scene involving panning from the stars down to the playfield would be a good idea too, and it'd give me a bit of a chance to explain the excuse plot behind this sugar apocalypse. Strangely enough, it involves the O in Mario Paint's title screen.

Additional tricky enemy: I thought about a missile type that tries to avoid explosions, somewhat like the diamond-shaped missile from the original. But I'm not sure how to work that into the setting.

And in case you're wondering, it speeds up movement by roughly 20% if it detects a 50 Hz console.

by on (#74562)
This is cool, the closest thing I have seen to Ganja Farmer (a DOS game I loved to play). Keep up the good work.

by on (#74829)
This looks really cool so far. The generation of the missile's locations and their angles of decent look truly random. Pseudo-random generation was something I had a real pain-in-the-ass time with, myself. Everything's moving pretty smoothly, as well.

by on (#75730)
I haven't had much time to work on the game over the past week, seeing as I've been making the MGC multicart's menu, helping clueless test nesyar for MGC, and taking advantage of above-freezing mornings by getting my legs back in shape for cycling.

In a game with missile silos and villagers who help one another rebuild a house every five waves, it pays to have ligatures.

The pseudorandom number generator here is the same polynomial counter + least recently used structure that I've used before. Choosing targets with LRU has three benefits here:
  1. Allow a non-power-of-two number of targets: the 8 that can be picked at any moment and the 4 that are too recent.
  2. Don't aim consecutive missiles at a single target.
  3. The LRU is preloaded so as not to aim at a silo at the start of a wave. This is an anti-frustration feature so that players can learn to play the game without being in actual immediate danger of losing. A beginner gets his 2:30 to get the hang of it and put in another 25 bells.

The original Missile Command (MAME "missile") uses a 1.25 MHz 6502 CPU, same arch as NES. But rest assured that I'm not reading that code any time soon. MC is 12 KiB, but this game is already bigger: NROM-128, currently with 8 KiB PRG and 6 KiB CHR used. MC also uses a full-screen frame buffer, something I can't be assured of having on an NES, and some hardware support for read/modify/write an individual pixel from the four in a byte.

Control is through the standard controller. The only thing keeping me from supporting a Super NES Mouse is that I haven't learned to solder.

by on (#75732)
I'm glad to hear your project is progressing Tepples! What are your plans for it? Will you give away the ROM when you are done or are you going to publish it on a cart?

I'm obviously not familiar with how folks release their games. I am trying to get a handle on it :lol:

by on (#77480)
tokumaru wrote:
(very) little people running around in panic

This is in the latest build, along with a minor shout-out to Metal Gear series. And yes, they're very little, as in 4 pixels tall during gameplay and 8 pixels tall in the cut scenes.

I tried asymmetric explosions like the ones in the Mega Man 4 (GB) intro; they made it a bit harder to see the hitboxes' center of mass.

qbradq wrote:
I'm glad to hear your project is progressing Tepples! What are your plans for it? Will you give away the ROM when you are done or are you going to publish it on a cart?

That depends on what last minute changes are made to the rules for the competition.

Anyway, I'm finally getting around to writing the scripts and drawing the graphics for the cut scenes.

by on (#77481)
The houses are very cute, and it's nice to see people walking by. The trees could be improved a bit though. They look too much like ice cream, only in a tube rather than a cone...!

by on (#77482)
Those have to be some of the smallest animated sprites I've seen!

tepples wrote:
That depends on what last minute changes are made to the rules for the competition.

There won't be any restrictions. Everyone has total control of anything they make whether it is put on the multicart or not. Unless the submitter specifically asks us not to, the roms will be put up for distribution on the website as well. I should note that by submitting the game and not wanting it on the website, doesn't disqualify it for the multicart either. I know the rules aren't perfect (next year things will be more organized and solid BEFORE starting the competition).

by on (#77656)
tokumaru wrote:
The houses are very cute, and it's nice to see people walking by. The trees could be improved a bit though. They look too much like ice cream, only in a tube rather than a cone...!

Yeah, the houses are incredibly charming! :D

Though... what kind of script could this game have?

"Why hello there Margaret!"
"Good morning indeed, Thomas!"
"I say! Stuff is blowing up! Look at all of the stuff blowing up!"
"Indeed, things are indeed blowing up! This indeed has been a smashing morning!"
"Right oh!"

by on (#77715)
I read that in my mind as Terrance and Philip.

by on (#77751)
clueless wrote:
I read that in my mind as Terrance and Philip.

LOL! So did I :D

by on (#79608)
Thwaite 0.01 is out

Download from the compo page.

Drag wrote:
Though... what kind of script could this game have?

There are actually two scripts. Each game starts on the perfect script and sticks with it as long as the player keeps 100%ing it, meaning no houses get blown up. Then it switches to the imperfect script.

In case you haven't managed to get very far in the game since the release of the compo entries, here's a sample of the perfect script:

<Justin> It's like we get a fireworks show every night! We don't even have to wait for July.
<Briar> Cool it, Justin.

The next night:

<Justin> Last night's show was even more impressive!
<Isca> You know what, Justin? I'm starting to think you're right. Because if it weren't just a show, something would have been blown up by now.
<Briar> I don't know, but it makes me so nervous I can't sleep.

And a sample of the imperfect script, which focuses around investigation:

<Gnivad> I was looking in the wreckage of Torben's house when I noticed something. Look at this.
<Meg> It's half melted. What's that supposed to be?
<Gnivad> I'm not sure. There's some writing on it, but I can't make it out.
<Torben> Could be a guitar pick. Someone has a strange taste in shrapnel.

Finally, a tech note: How Thwaite aims player missiles

For player missiles, normal enemy missiles, and MIRV missiles, the game first calculates the atan2 function:
  1. Find the displacement from the missile silo to the target.
  2. Reflect the displacement into the first octant: 0-45 degrees, or 0 to τ/8 radians, where τ represents one turn (as suggested by Michael Hartl). Remember which reflections were performed.
  3. Divide the smaller by the larger to produce the slope, in the range 0/256 to 255/256.
  4. Search a 1-octant tangent table for the arctangent, or the angle whose tangent is closest to this slope.
  5. Undo the reflections. This gives the missile's heading as 0 to 31, in units of τ/32 radians (360/32 degrees). This heading is used to determine which sprite cel to draw for the missile and how to reflect it.
These additional steps are taken for player missiles only:
  • Look up the unit vector (x=cosine, y=sine) of this angle, and compute the dot product (2 multiplies) with the displacement. This will be very close to the actual length and can be computed without a square root.
  • Compute this length to a travel time using a speed factor that differs between NTSC and PAL.
  • Divide the displacement by the travel time to produce the velocity.

by on (#79625)
Damn man, this game is great! It looks fantastic and game play is smooth. It kicked my butt though :D I've never been good a Missile Command games.

by on (#83159)
I won the NROM division, and you get this prize: Thwaite 0.02

0.02 (2011-08-26)
  • Includes source code, partly under GPLv3 and partly under an all-permissive license
  • Added HTML5 manual
  • Added music for 04:00 and daytime
  • Dual channel drums for stronger kick and snare
  • Villagers warp to houses after each hour, making it clearer that an hour has passed

by on (#83232)
tepples wrote:
I won the NROM division
Sweet! :)

It's crazy! :D The explosions sound grand! I'm terrible at this game.

by on (#87291)
Thwaite 0.03 is out
  • Fixed crosshair braking failure
  • Can play game with a Super NES Mouse in either controller port
  • Switched to non-DPCM-safe controller reading code because the mouse needs it
  • A button icon blinks after cut scenes dialogue finishes drawing
  • Practice mode to start on any level
  • Draws much of 3x3-tile explosions with sprite flipping to save CHR
  • CHR rearranged to allow for more distinct tiles in cut scenes
  • Music for 05:00
  • Two ! alert sounds don't play at the same time
  • Some later levels are harder
  • I am within 256 bytes of filling PRG ROM

Download Thwaite 0.03

unreg: You might do better if you can use a mouse.

by on (#87300)
It just keeps getting better!

Is there any chance this build could be presented on the nesdev compo cart? I know it wasn't the official contest entry but I can't imagine who wouldn't want it in there.

by on (#87301)
Pretty fun! :D And it's NROM-128? NROM-256 is nothing to go on to, do it man! :D

by on (#87302)
infiniteneslives wrote:
Is there any chance this build could be presented on the nesdev compo cart? I know it wasn't the official contest entry but I can't imagine who wouldn't want it in there.

As soon as Memblers gives me the word that he's ready to make carts, I'll whip out a new build of the compo ROM with this version.

by on (#87311)
Tepples, Are you going to demo Thwaite this at the 2012 MGC?

by on (#87314)
My current plans:
  • Returning: LJ65 0.41; Concentration Room 0.02
  • Improved: Thwaite 0.03
  • New: Zap Ruder; Who's Cuter; Something else
  • Controllers to bring: 2 Zappers, 1 Super NES Mouse

I might leave off Zap Ruder if it offends you the way [redacted].

by on (#87315)
The MGC is a family event. I've not seen your zapruder demo. I've seen the Zapruder film though.

by on (#87316)
Zap Ruder is a bunch of Zapper tech demos, one of them being the Pong clone ZapPing. (As opposed to FlapPing.)

AWal wrote:
I do have to say, the fluidity of the 'controller' was definitely "Wii Smooth."

by on (#87320)
Tepples sometimes chooses controversial names for his games. The previous name of concentration room was concentration camp.
Re: Thwaite: stuff blowing up
by on (#103761)
hubs of #nesdev wanted the NSF, so here's the NSF for Concentration Room, Thwaite, Zap Ruder, and a couple other projects.

Track listing:
01 cover of SMB3 underground
02 [Zap Ruder] Goal
03 cover of Mozart's "Leck mich im Arsch"
04 cover of AM FM GM's "Tetris New Melody"
05 [Concentration Room] Story
06 [Concentration Room] Table Clear
07 [Thwaite] 4 PM
08 [Thwaite] 2 AM, cover of Beethoven's "Sonata 8 Pathetique: 2. Adagio cantabile"
09 [Thwaite] 3 AM
10 [Thwaite] 4 AM
11 [Thwaite] 5 AM, variations on Beethoven's "Sonata 8 Pathetique: 3. Rondo: Allegro"
12 [Thwaite] Wave Clear
13 [Zap Ruder] Axe
14 cover of Marilyn Manson's "I Don't Like the Drugs" and Puff Daddy's "It's All About the Benjamins"
15 Test case for attack track and arpeggio
Re: Thwaite: stuff blowing up
by on (#103770)
When did TOD get ported to the NES?
Re: Thwaite: stuff blowing up
by on (#103772)
The cover of IDLTD was a test case for the music player's arpeggio feature. It was divorced from TOD proper in June. In any case, there's nowhere near enough CPU, and the PPU is too inflexible, to do software mode 7 style texture mapping on an NES.
Re: Thwaite: stuff blowing up
by on (#145086)
Someone thinks this game is fan-TAS-tic.

Video: Thwaite - S5E31 - Full Playthrough Doubleplay on
by on (#150291)
Tomorrow is US Independence Day. Instead of blowing up real fireworks, be safe and blow up some virtual ones with Thwaite.
Re: Thwaite: stuff blowing up
by on (#174119)
Five years after the initial release through the compo, I can give hints toward the origin of the name "Thwaite". Before I decided to make it an Animal Crossing parody, the theming was more in the vein of Ganja Farmer or Crop Command. Milo and Staisy were almost Mary and Dickon defending their "secret garden" from herbicide bombs.
Re: Thwaite: stuff blowing up
by on (#183127)
Git a load of this: pinobatch/thwaite-nes
Re: Thwaite: stuff blowing up
by on (#183141)

I've always wondered. What exactly does the word "Thwaite" mean. The closest I can figure is that it's the name of the village being blown up. Urban Dictionary has some ideas as usual.
Re: Thwaite: stuff blowing up
by on (#183142)
The name is not the name of the village but an artifact from a previous iteration of the game's setting, as I hinted in my post from June.

Idthesda is even worse about this. The origin of the title of Quake is similarly obscure. And the title of Arena, the first Elder Scrolls game, is a reference to a gladiator tournament sidequest that never ended up developed at all for that game.

There's more street fighting in Final Fight than in any Street Fighter game or especially Street Fighter 2010. There's no Zelda in Link's Awakening. Nor are there Metroids in Metroid Prime Hunters.
Re: Thwaite: stuff blowing up
by on (#207910)
Today I learned that Iron Dome Legacy for Android exists. Its developer describes it on and r/playmygame as a Missile Command clone. But its theming resembles Thwaite in that the targets to defend are shown as buildings roughly as large as a single-family house.
Re: Thwaite: stuff blowing up
by on (#210742)
In this universe, Thwaite 2 AM is based on "Adagio cantabile" from Beethoven's Piano Sonata No. 8 (called Grande sonate pathétique by his publisher). The same inspired the themes from the films Bustin' Loose and An American Tail.

But in the SiIvaGunner universe, it's based on a different piece: Erik Satie's Gymnopédie No. 1.
Re: Thwaite: stuff blowing up
by on (#220476)
Who would be willing to stream this game on July 4?
Re: Thwaite: stuff blowing up
by on (#222176)
What was the July 4th plan for it?

I wasn't home on that day, but I have been trying to stream NES homebrew now and then. (KHan also uses twitch for stuff like that too, BTW.)
Re: Thwaite: stuff blowing up
by on (#222177)
I was hoping that someone would put it into their mix on that day.
Re: Thwaite: stuff blowing up
by on (#227826)
Lately I'm on an effort to make sure all my major projects on GitHub have at least one tag (that is, one release). So I decided to push out Thwaite 0.04, with mostly behind-the-scenes improvements from the past month.

  • Chain certain initialization functions
  • Group functions into conceptual sections using a call graph
  • Use other libraries I've since made (ppuclear, Popslide)
  • Pently audio: Rename subroutines to match the latest driver version
  • Build a second ROM as NROM-256 (32 KiB PRG ROM + 8 KiB CHR ROM), with libraries in the top half, in case I build a multicart
  • Fix a bunch of uninitialized variables (#5; reported by jroatch)
  • Port build tools to Python 3
  • i18n: Move dialogue, tips, copyright screen, and practice menu text to separate UTF-8 text files
  • Compress all text using DTE
  • Cut scene draws all 12 buildings and pans across them
  • Zipfile: No more zip bombing

Release on GitHub; ROM and source snapshot of 0.04 mirrored here