Working on Chu Chu Rocket NES

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Working on Chu Chu Rocket NES
by on (#58053)
I am working on a Chu Chu Rocket 'port' for the NES.
Here is a mock-up screenshot showing what it might look like:
Image

Right now, I have the CHR file containing all the possibilities for mice movement finished, it adds up to 100k.

by on (#58056)
Awesome I love chu chu rocket.

by on (#58067)
Not quite there yet...
Image
Image

by on (#58070)
Oooh, that looks really cool. :D

I'd love to see an nes version of this game. :)

By "all combinations of mice movement", do you mean all positions between two tiles? It *does* seem like you'd need to rely heavily on nametable updates in order to avoid massive sprite headaches.

by on (#58073)
Will you be able to animate this smoothly (i.e., no "cascade" updates)? Looking forward to this!

by on (#58080)
Image
Got the MMC3 interrupts in now, so it is bankswitching every 8 lines now. Wish there was a better way to handle them though, right now I need to burn 165 PPU cycles to delay the bankswitching until the end of the scanline. Obviously graphics are still incorrect here, looks like I have some invalid data in my lookup tables.

I expect to be able to blast the playfield nametable from the buffer into PPU memory within 2 vblank periods.
It will use bankswitching to animate the mice moving to the next square, for all possibilities of mice travelling in all directions. Of course, the walls stop certain possibilities. Arrows and rockets will be sprites.

Should be silky smooth at 60FPS once it's working.

by on (#58083)
Image
Bugs squished. Looking much better now.

by on (#58087)
Looks really good so far. I'm looking forward to seeing how you do with this.

by on (#58088)
Image
Now it has attribute tables and a border, so it look far less ugly. I haven't yet added any intersection dot tiles in yet.

by on (#58089)
Isn't there anything you can do to make the walls look more like walls? The way it is sometimes it looks like they are the dark faces of raised/sunk floor tiles. Maybe making the checkered pattern smaller (8x8) so that it doesn't match the length of the walls would help...

by on (#58123)
Oh,YES,I'm looking forward it!
It's really nice you can make it moving smoothly :D
Little question about music:Will be all new music,or maybe "remakes" for other Chu chu rocket games?

by on (#58150)
IT'S ALIIIIIIIVE!!!
Image

Blue stuff at the bottom is from turning off the screen early. My nametable updates were 3 scanlines too long.

Edit: replaced image with one including all frames of animation. The old image still available, but it's missing half of the animation frames. You probably can't tell the difference.

by on (#58152)
Awesome job.

by on (#58155)
Dwedit wrote:
but it's missing half of the animation frames. You probably can't tell the difference.

You're right; I can't tell the difference. Players probably won't be able to either, especially if you start running low on CHR space.

by on (#58161)
Dwedit wrote:
Blue stuff at the bottom is from turning off the screen early. My nametable updates were 3 scanlines too long.

Watch out for that nasty bug tepples discovered where OAM would get corrupted depending on where in the scanline you disabled rendering. Enabling rendering late is safer, IMO.

by on (#58162)
Bug?You mean,a bug in NES Hardware?
Or bug in assemblers?

by on (#58164)
The nes hardware.

by on (#58167)
tokumaru wrote:
Watch out for that nasty bug tepples discovered where OAM would get corrupted depending on where in the scanline you disabled rendering. Enabling rendering late is safer, IMO.

As long as there aren't any sprites overlapping the disable point, and the disable point is close to X=128, there shouldn't be a problem. But make sure to turn off any vblank-extender when running on PAL consoles if the background of the cut area isn't color 0.

by on (#58239)
I just tested it out on various emulators.

Works perfectly in: RockNES, FCEUX, Nintendulator, VirtuaNES, LoopyNES, Mednafen

Minor timing errors in: Jnes, Nessie (shaky hell), Nester, NNNesterJ, Nesten

Fails in: Nesticle, fwnes, rew, famtasia, NO$NES

In QuickNES and Nestopia, it has garbage in the secondary nametable for an unknown reason.

Nestopia screnshot:
Image

by on (#58421)
I'm working on the sprite sheet for the game. This is what I have so far:
Image

I think I have almost all the game elements in there, except for the player's cursor.

Why have mice as sprites in the game if they are already the background tiles? So I can have the gold +50 mice, and the mice with question marks (which will be colored purple for this game). Not to mention the flying mice that would happen with Mouse Monopoly.

by on (#58465)
I can't be of much dev "help" but I just wanted to say "keep up the good work" :-)

Seems like a cool project to reach the NES...

by on (#58468)
Dwedit wrote:
I just tested it out on various emulators.

Works perfectly in: RockNES, FCEUX, Nintendulator, VirtuaNES, LoopyNES, Mednafen

Minor timing errors in: Jnes, Nessie (shaky hell), Nester, NNNesterJ, Nesten

Fails in: Nesticle, fwnes, rew, famtasia, NO$NES

In QuickNES and Nestopia, it has garbage in the secondary nametable for an unknown reason.

Nestopia screnshot:
Image

Call me crazy, but that looks kinda cool, actually...

Where it looks like a floating game board, and there's the shadow thing off to the right and bottom.

by on (#58482)
You might like the glitchy look, but it will look horrible when the cats walk offscreen to the other side.

I think this should do for the sprite sheet:
Image
Can't imagine anything else I'd want to display on the main game screen besides these sprites.

by on (#58491)
Looks cool! I used to love that game. :)

by on (#58700)
Someone please kick me or something, need to get motivated again...

by on (#58702)
Have you initialized RAM at startup ? Because I had a demo which worked on all emus (including Nintendulator), but failed misarably on the real NES and Nestopia, and in fact that was because uninitialized RAM. Most emus initialise all RAM (and VRAM) to $00, while the real HW have it mostly $ff (but could be some different values).

by on (#58747)
Dwedit wrote:
Someone please kick me or something, need to get motivated again...


Ok then, I will officially "kick you". I don't know if it will give you motivation, but pain is sure to come ;) Jokes aside, it all depends if you really want to make that game or not. When you port a game, the motivation part goes fast since it doesn't feel "yours" in a way, especially when you hit a wall. I know, it happened for me for the mm9 thing.

But now I don't have time anymore to program so it's another issue ;) When I can get more free time (hard with 2 children and one is a newborn baby), I may be able to work on it again. For now I may work on some tools since it may be the only thing that will pass under the radar during my lunch time at work, the only time I have left to do hobbies.

by on (#58752)
Write up an implementation schedule. :P

I personally find it easier to work on a project when I write down exactly what I want to implement, and the order I want to implement those things in. This kinda rescues me from the trap of thinking about "all of the stuff I still have to implement", and trying to think of the dependencies on the spot, etc etc.

Having a purely objective list and being able to take things on one at a time is very helpful. :P

by on (#58922)
Now I have a cool title screen in there!

Image

It's made up of two layers overlaid on top of each other:
Image Image

That's all 64 sprites being used there.
This title screen takes up about 10.5K of CHR data, plus the 1k map, and 256 byte sprite list.

by on (#58925)
That title screen looks really good!

I'm looking forward to you finishing this game. I've never played Chuchu Rocket before and I'm too lazy to find the original, but it looks fun!

by on (#58926)
Wow, that title screen looks really good! Is that just a conversion of the title screen on another version or did you make that yourself? I seriously would never have guessed it was a NES screenshot by looking at it, simply because of how free the layout is along with the amount of color (you can't look at it and really see where all the tile borders are or anything).

I am confused about some of your sprite overlays, though. Like why are you needing to have sprites in some of the red parts on the rocket? It looks like it could have still been part of the BG. Or is the red sprite part a different shade of red from the BG red?

by on (#58939)
It's the same red. But red + sky blue + white + dark blue + lighter blue = 5 colors, so I need the overlay. In other words, I could take out sections of the grid pattern and need almost no overlay at all.

The top half of the elements are derived from the GBA version, then heavily edited to make them NES.
The rocket, mouse, and half of the cat were heavily edited from the box art.
Most elements were created, resized, color-reduced, and arranged through the magic of Ulead Photoimpact. MSPaint was used for touchups.

by on (#59038)
Heh, nice, dude!

:)

by on (#59040)
Dwedit wrote:
This title screen takes up about 10.5K of CHR data, plus the 1k map, and 256 byte sprite list.


Looks very nice! Any way I could borrow that CHR data for testing my compressor?

by on (#59041)
That title screen was brilliant! This is looking better and better all the time. Can't wait to see it in motion.

by on (#59047)
Dwedit wrote:
It's the same red. But red + sky blue + white + dark blue + lighter blue = 5 colors, so I need the overlay. In other words, I could take out sections of the grid pattern and need almost no overlay at all.

The top half of the elements are derived from the GBA version, then heavily edited to make them NES.
The rocket, mouse, and half of the cat were heavily edited from the box art.
Most elements were created, resized, color-reduced, and arranged through the magic of Ulead Photoimpact. MSPaint was used for touchups.


Ah, I see. Would it be better to make overlays for where the grid would be around the rocket (and the other objects), instead of making the grid part of the BG in those areas? Maybe not, and you might go over the 8 sprites per scanline limit, but it's just a suggestion.

by on (#59064)
Your project is looking very nice. Keep up the good work. :)

by on (#59067)
Nevermind what I said above; you already have several peices of the grid done with overlays. Anyways, it looks really good. It will be interesting to see what you come up with for the game!

by on (#61688)
Top screenshot: Showing the title screen, and a dummy Mode Selection screen that isn't programmed yet.
Still isn't drawing the rockets yet.
Mice and cats stay put until you press a button, then the action starts.
Image

Bottom screenshot: OAM cycling from hell!
Image

These mice are not animated by bankswitching in the screenshots where they aren't moving forward. They are animated by updating the nametables.

Screenshots best viewed in Firefox. Chrome slows them down.

by on (#61855)
Place The Arrows
Image

Then the mice escape into the rocket
Image

by on (#61946)
The Level Selection screen
Image

The display showing how many arrows you have left to place
Image

by on (#61952)
I love the title screen!

by on (#61973)
Who has a powerpak? I'd like to know how the game behaves on hardware now.

Right now the game draws things slightly differently on Nestopia than it does on other emulators.
FCEUX, Nintendulator, VirtuaNES, and QuickNES work correctly.
There are minor bugs with the game running on Nestopia, where it seems to update the screen differently than on other emulators when switching levels. I want to know whether hardware matches Nestopia or matches Nintendulator.

by on (#61999)
I've got one.

by on (#62002)
So do I, but I've never played CCR before. Do I need to know how to play in order to help test?

by on (#62011)
I've got one.

Any chance for an option to use 2 controllers à la smash tv?

by on (#62015)
I'll just publicly post a very early build then...
Still very early.
Cats eating mice is broken right now, sometimes eats when it shouldn't eat.
Game does not stop on lose conditions: when a cat eats a mouse, a cat reaches a rocket, or a mouse falls in a pit
Game does not advance to the next level when you meet win conditions: get all mice into the rocket
Game mode selection screen at the beginning is a dummy, just a picture of the menu.

Controls:
D-Pad: move the cursor
A + Direction: Place an arrow if you have one remaining - or pick up an arrow at the cursor location
B: pick up last placed arrow
START: Start moving everything
SELECT: Go back to arrow placement screen, or go back to level selection screen. If at level selection screen, selects which set of levels (4 pages)


Specifically, I want to know:
*When you select levels, if the graphics updates for the top half, bottom half, and attributes appear to happen in separate frames (Nestopia), or all at once like it should (FCEUX, Nintendulator, VirtuaNES, QuickNES, etc...) This one seems to be a scrolling related problem, where Nestopia displays the wrong nametable.
*If there are any sprite glitches caused by turning off the screen early. Maybe flickering on screens with 8 or fewer sprites per scanline.
*Or just give me some feedback on what you think so far.

download

4 player support is planned, but dual controller mode (to place arrows with a direction key on another controller) is not.

by on (#62016)
Hmmm... my eyes aren't quick enough to find out if the screen is being updated in time, but I am getting either completely different levels, or levels assigned to the wrong number when I load them on the powerpak.

Edit: DID NOT READ THE README (bad Kasumi) Then again maybe it wasn't there. That post changed.

by on (#62017)
I also can't see if the graphics updates are happening on separate frames or not. I tried it on a couple emulators and couldn't tell the difference.

Cats flicker for me regardless of number until I start everything moving, at which point the flickering stops.

Looks fantastic, by the way!

by on (#62019)
Using my PowerPak/NTSC NES, I get sprite flickering, even if there are fewer than 8 per line. It only happens when there is a cat on the screen. For instance, on level 12 the pointer flickers anywhere on the screen, but on level 1 it doesn't. After pressing start, the cat on level 12 still flickers slightly while it is walking around. Also the arrows on the ground flicker when a mouse moves over them.

EDIT: the cat flickering seems to get better once the mice have left the screen. But that's only on "one cat" levels. Add another cat and you're back to flickers, even if they are on different scanlines.

by on (#62020)
Let me know if any of these 8 different builds resolve the sprite flickering problem. Each build is identical, but turns off the screen at a different time.
Download

The screen update issue in Nestopia is best noticed when you switch between a level with pits and a level without them.

by on (#62023)
D is by far the best, but I still get some flicker in regards to the cursor. When the cursor is on a line with one cat, the top left of the arrow flickers. When the cursor is on a line with two cats, both the cats and all of the cursor flickers. Once the game starts it's solid so long as there aren't a lot of cats, level 22-4 is an epilepsy lawsuit in the making. Interesting tho.. the last row of that level has only 4 cats, I believe that would be 8 sprites, yet it still flickers very badly. I just tried it with the other rom versions and D is the best, but it's still really bad. 18-4 is really bad too, and it's flickering on that last row of only three cats.

by on (#62024)
Note that on some of the levels, it's exceeding the 64 sprite limit instead of just the 8 sprite limit. Each cat is 4 sprites, some levels have 20 cats. One level (3-20) even has 30 cats, which is more than the GBA version's level designer allows you to place.


Edit:
I just tried out all those builds in Nintendulator, and they all fail miserably, drawing a bunch of random sprites in random places, but the sprites are okay in other emulators.

by on (#62032)
A - Similar to Previous

B - Blue level select box flickers. Single cats flickerless until level is selected, then flickers constantly.

C - Flicker greatly reduced throughout. A single cat will flicker on occasion but only once everything starts moving.

D - Rock Solid.

E - Lots of flicker. Cats flicker as long as there are mice on the screen.

F - Similar to A. Cats flicker until everything is moving.

G - Similar to D.

H - Single cats don't flicker but multiple cats flicker unusually bad, regardless of how many are on a line.

Hopefully someone else will chime in on the screen updates, though...

by on (#62034)
I actually managed to trigger the screen update bug in FCEUX, so I guess I'll go fix it. You see the partial stages of the screen update, instead of the updates happening to the back buffer. Fortunately, it only lasts 4 or so frames anyway.

by on (#62395)
This is going to sound very dorky, but where did your font come from? It looks really good. :P

by on (#62397)
Uppercase letters and numbers are from Super Mario Bros, Lowercase letters are from the Final Fantasy 3 fan translation (which is very close to the Final Fantasy 2 SNES font, but it's edited a little, some lowercase letters are moved over slightly)
I also borrowed the some punctuation marks from the 8x8 MS-DOS font, slightly edited (such as the asterisk).

by on (#62996)
I think I'll go release a new build, I'll call this "Alpha 1".

Download.

There is no sound or music yet. It does not yet keep track of which levels you have cleared.

Puzzle mode is basically complete.
Stage Challenge mode isn't finished:
* Missing the 30 second time limit
* The 100 mice and Cat Soccer levels don't do anything.
There is no multiplayer mode yet.

The layout of screens and such is subject to change. Can anyone design better looking "Stage Cleared!" windows?

Controls:
* Start or A: Confirm or select something
* B or Select: Cancel or go back

Puzzle Mode:
* A + Arrow: place an arrow, replace an arrow, or pick up an arrow
* B: Take back the latest placed arrow
* Select: Quit, or return to puzzle mode if the game is running.
* Start: Set the game in motion! Also toggles double speed mode while the game is running.

Stage Challenge:
* A + Arrow: place an arrow. You can only have 3 on at a time, and can not place arrows on top of another. Arrows last for 10 seconds before they expire.
* Select: Quit

Emulator Compatibility:
Works great in FCEUX, Nintendulator, Nestopia, VirtuaNES, QuickNES, Mednafen.
Almost works in LoopyNES, there is some vertical shaking.
Almost works in PocketNES, there isn't any screen shaking or timing problems like in other emulators, but it hits some limits of bankswitching and tilemap updates so the graphics look bad.
Fails on most older emulators.
Joystick reading doesn't work on RockNES for some reason.

by on (#62997)
Looks great!

(fwiw, it works well in nemulator, too.)

by on (#63060)
This looks and plays great. You are really talented!

by on (#63108)
Very nice! With music and sfx it's going to be awesome.

Maybe you should add an ingame tutorial or at least a HELP option to display the controls at some point. Or try to detect if the player has no idea what he's doing (e.g. hasn't placed any arrows in some time) and automatically display the help.

by on (#63124)
I was thinking of adding a HELP feature for players who hit the A button 5 times on level 1 without placing an arrow. Maybe get rid of the level restriction, just count the number of idle presses of A.

by on (#97219)
What is the current status of this game?
Re: Working on Chu Chu Rocket NES
by on (#98103)
I can't believe how awesome this port is. It deserves to get finished :)
Re: Working on Chu Chu Rocket NES
by on (#98500)
I just heard about this sega franchise long ago, but never played the original version, but this one looks really interesting! :D
Re: Working on Chu Chu Rocket NES
by on (#111701)
Got a bit excited when I saw this and designed me a Famicom label for it. Hope that's okay?

Here's a copy at 300DPI so it should print and look decent.

Image
Re: Working on Chu Chu Rocket NES
by on (#112022)
You really got to resize that pic my friend... :shock:
Re: Working on Chu Chu Rocket NES
by on (#112026)
GameMachineJames wrote:
Got a bit excited when I saw this and designed me a Famicom label for it. Hope that's okay?

If you had used the forum's attachment feature, it would have automatically resized it to fit on the screen for preview (while maintaining the original resolution).
Re: Working on Chu Chu Rocket NES
by on (#112433)
SkinnyV wrote:
You really got to resize that pic my friend... :shock:


That pic takes up more space then any NES game every released (Pic - 1.7Mb, Dragon Warrior IV - 1Mb)
Re: Working on Chu Chu Rocket NES
by on (#112434)
Action 52 is bigger.

I wonder whether it'd be more reasonable as an SVG.
Re: Working on Chu Chu Rocket NES
by on (#112435)
tepples wrote:
Action 52 is bigger.

I wonder whether it'd be more reasonable as an SVG.


I knew I was wrong!

I actually thought it was an SVG at first. It certainly seems simple enough.
Re: Working on Chu Chu Rocket NES
by on (#112436)
It would have made a very nice 8 color SVG (or other vector format of choice). Inkscape's being kind of a pain at actually decomposing it that way, though.