It is currently Fri Nov 24, 2017 4:10 am

All times are UTC - 7 hours





Post new topic Reply to topic  [ 57 posts ]  Go to page Previous  1, 2, 3, 4  Next
Author Message
 Post subject:
PostPosted: Sun Jan 24, 2010 5:57 am 
Offline

Joined: Sun May 14, 2006 10:26 am
Posts: 48
Location: Norway
UncleSporky wrote:
Actually, you could almost do it at full resolution, though it might be hard to see where you're going at times:

Image

This image isn't quite there, but it's close. Chip's body and the fire use too many colors.


I considered using 32x32 pixel blocks, but in my opinion it gets to small. And the colors would be a problem too.

The way it is now, all objects that are static and can use one of the four background palettes, use background tiles. An example is the chips. All objects that may occur many times within the same visible area, so that the 8 sprite-per-line-limit is broken, also use tiles (and the graphics is simplified if needed to.) That's why the fire looks like lava here.

Some objects will need to be implemented as a sort of hybrid between the two. The movable blocks for example; they can occur many places, and many in a row in a map, and therefore can't be drawn as sprites. At the same time they'll have to move when they collide with Chip. So the only solution will be to, at the time they collide with Chip, remove the background tile, add a new metasprite at the same position, move this metasprite to the next block position and then replace it with a metatile.


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jan 24, 2010 4:03 pm 
Offline

Joined: Sun May 14, 2006 10:26 am
Posts: 48
Location: Norway
UncleSporky wrote:


Haha, great!

When it comes to sounds an music I must say I don't really know ANYTHING about it. I've never programmed anything sound related for the NES. But I find it very interesting, so maybe I'll look into it when I get stuck in the current development.


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jan 31, 2010 3:57 pm 
Offline

Joined: Sun May 14, 2006 10:26 am
Posts: 48
Location: Norway
I've worked on the project a bit this weekend. Movable dirt blocks are now working. When they're not moving they are displayed as background tiles. Otherwise a lot of the original levels would have to be excluded because of the NES sprite limit. Also notice that they can be moved into water and force fields etc.

You can download a demo here.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Feb 01, 2010 5:49 am 
Offline

Joined: Sat Nov 17, 2007 8:44 pm
Posts: 385
That's really cool. I like how you've duplicated the exact mechanics of the block, I know that's always been the goal but it's nice to see it working. :)


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 09, 2010 11:06 pm 
Offline

Joined: Tue Feb 02, 2010 9:01 pm
Posts: 4
this would have been really cool if it was finished...
Have you considered re-releasing the extent of what you have if you don't plan on working on it anymore in hopes that others will learn from it or carry it on?
That's what I would do anyway...
That, and chips challenge rules!


Top
 Profile  
 
 Post subject:
PostPosted: Wed Feb 10, 2010 4:51 am 
Offline

Joined: Tue May 05, 2009 6:12 pm
Posts: 164
fireseed wrote:
this would have been really cool if it was finished...
Have you considered re-releasing the extent of what you have if you don't plan on working on it anymore in hopes that others will learn from it or carry it on?
That's what I would do anyway...
That, and chips challenge rules!

why do you think he doesn't work on it anymore? :S


Top
 Profile  
 
 Post subject:
PostPosted: Wed Feb 10, 2010 6:06 am 
Offline

Joined: Sat Nov 17, 2007 8:44 pm
Posts: 385
Did he say anywhere that he was quitting it? I don't see it. It's only been a week since an update.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Feb 10, 2010 7:57 am 
Offline

Joined: Sun May 14, 2006 10:26 am
Posts: 48
Location: Norway
I'm not thinking about quitting yet, it's too much fun :p

I haven't worked on it that much lately, but I have completed a few new things. Moving objects will bounce back if they hit a solid block while sliding on ice. Also movable blocks cannot be moved if something is blocking them (this wasn't hard to implement, I was just too lazy to do it :p)

You can download a demo here.

Next up will probably be object-to-object-collision detection. It's really just one situation that will require it: blocks colliding with each other on ice. Monsters/blocks/balls colliding with Chip will kill him, and that doesn't look too bad if it happens only at 16-pixel boundaries. So maybe I'll do it a little hardcoded so that only moving block objects check for fine collision.

Also I have to work on various bug fixes. One critical bug I have found is that scrolling while moving blocks can corrupt nametable data. It happens when moving a block just past the point that triggers nametable updates of the two first rows of $2000 and $2400 due to a buffer conflict. Really, the whole buffer system should be rewritten entirely. I've been thinking about something along the lines of an interpreter that reads opcodes from the buffer along with data. For example $00 could mean to set address, $01 could mean to update a metatile, $02 could mean to write a row of upper- or lower halfs of metatiles, $03 could mean to write attributes, etc. So e.g. buffer contents $00 $40 $20 $01 $02 $03 $04 $05 would translate to "set PPU address to $2040 and write a metatile with upper tiles 2 and 3 and lower tiles 4 and 5. I'm afraid running an interpreter for such a "buffer program" would be far to cycle consuming when doing large updates, and really, it's far too general and high level for the few practical situations it would be used.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Feb 10, 2010 8:03 am 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 19254
Location: NE Indiana, USA (NTSC)
The refresh engine in Super Mario Bros. runs a kinda-sorta interpreter: each VRAM update has a start address, length, and direction (+1 or +32).


Top
 Profile  
 
PostPosted: Thu Mar 04, 2010 4:03 am 
Offline
User avatar

Joined: Sun Oct 11, 2009 5:21 am
Posts: 189
Location: Sol 3 in Mutter's Spiral
As a suggestion, you might want to look at the code of the Lynx version of the game...

(EDIT) Sorry Ortega, I replied before noticing that you said exactly the same thing.

I look forward to further updates on this project. Chip's Challenge was probably my favourite Lynx game, so I;d really love to see a NES port of it! Any news???

-Xious

Jaffe wrote:
I'm currently working on a NES version of this old classic. As you can see if you try the ROM, it's going to resemble the Windows version. It isn't too complex yet and I certainly have a long way to go before it's even playable.

What currently works:

- Map decoding (RLE) and rendering (expanding metatiles, writing attributes, etc.)
- Various functions for replacing metatiles in VRAM etc.
- Objects (metasprites) including movement and collision testing
- Player movement and scrolling (the screen scrolls whenever Chip is in the center of the screen)
- A rudimentary system for "actions" happening when an object is in contact with different types of map blocks
- Picking up objects

A lot of this stuff still has to be improved. I consider the most basic graphical functions as finished, such as scrolling and object drawing (drawing here really just means going through the object list, checking if the objects are in range and if yes, compute their position depending on scroll speed and position.)

What will probably be a challange is the two layered map format of Chip's challenge (there can be things hidden under bricks etc.). I also have to implement a sort of "hybrid" object system where objects remain background blocks as long as they're not moving. And when they move, they'll be replaced by a sprite at the same initial position, move, and then be replaced by a background block again.

You can try what I've done so far: test 1, test 2 (this is a demo showing that objects react to background blocks in the same way as the player)

What do you think so far? As you can see, it's far from playable. I have to implement buttons, teleports, tanks, monsters ... the list lis long. However, this is farther than I've come on any previous NES project :p


Top
 Profile  
 
 Post subject:
PostPosted: Tue Mar 23, 2010 3:36 pm 
Offline

Joined: Sun May 14, 2006 10:26 am
Posts: 48
Location: Norway
I'm sorry, it's been way too long since last update. And unfortunately there's nothing new now. I've sort of lost a bit of interest in this project lately. Last time I worked on it, I discovered some deep structural faults in the design (one of them was the nametable update problem described in my last post). I know they can be fixed, but I'm just not up for it. I would much rather continue on the game design and implementing new features rather than rewriting a lot of code, constantly checking that it hasn't broke, etc.

As for a Lynx version, I don't plan to make a NES version of that. The Windows version was the one I grew up with and is the one I like the most (graphics wise.) I will however release the source code when I feel that it is in shape to do so, so that people can modify it the way they like.


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jul 04, 2010 2:17 am 
Offline

Joined: Sun May 14, 2006 10:26 am
Posts: 48
Location: Norway
Ok, so three more months have passed, and I haven't touched the project at all. I don't have time for it, and I can't see me having any more time or energy for it in the forseeable future... As fireseed suggested I will release the source code and graphics files so that people can learn from it, continue on it or something. I'll upload it to http://home.no/johan-af/chip


Top
 Profile  
 
 Post subject:
PostPosted: Wed Dec 29, 2010 6:40 pm 
Offline

Joined: Sun May 14, 2006 10:26 am
Posts: 48
Location: Norway
Hi all. I've got some time to work on this during the Christmas holidays. I've fixed a few (not many) bugs, and implemented some new features:

- Objects now change sprites depending on what direction they are facing
- Keys and doors are properly implemented
- Collecting chips and completing levels works (it loads the next level.)

I've also started to work on various monsters. The easiest is the 'frog', which I'm nearly finished with. As of now, it chases you in some way, but not as it should. You can see this in the last level of the demo. The bees and bugs shouldn't be to hard either.

Sadly, the code looks like a mess right now, so I've just uploaded the compiled ROM if anyone wants to try it. It's here.

I think next up will be bug fixes. There are some serious ones, best seen on the third level in this demo when moving on ice. Try to walk in any direction while on the ice. It is also impossible to move when on a force field... These should be minor bugs though.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jan 05, 2011 3:58 pm 
Offline

Joined: Sun May 14, 2006 10:26 am
Posts: 48
Location: Norway
Hi again. I've uploaded a new ROM, showing what I've worked on the last couple of days. The demo shows 6 levels from the original game. My development strategy now is working on successive levels from the game, and implementing the necessary features as I go. Here's what and what's not working as well as some notes about each level:

- Level 1 ("Lesson 1"):

Image

This is pretty much complete. I haven't noticed any bugs in this level. The only thing I had to implement in order for this level to work was the doors. A rather simple (and boring) task.

- Level 2 ("Lesson 2"):

Image

Finally got the bug code to work. I noticed that the bees, bugs, tanks, fireballs, gliders and balls pretty much work the same way. They only differ in what move they take when free to do so. E.g. the bees always want to go left when possible, if not straight ahead, then eventually right and as a last resort backwards. The only difference with the other monsters is how moves are prioritized.

- Level 3 ("Lesson 3"):

Image

Everything works as expected here too. Moving on ice is no longer glitchy.

- Level 4 ("Lesson 4"): When trying out this level, you don't have to collect more than the available chips to finish the level!

Image

I'm currently working on the features necessary to implement in order for this level to be playable. As mentioned, I noticed that the tanks really just work the same way as the bees in Level 2. The only difference is that the tank only knows one move -- go straight ahead. The same code that controls the bugs also takes care of the tanks, it just uses a different list of direction priorities. The green buttons and toggle walls is a bigger problem. In order for them to work, my engine needs to be able to update several single tiles in one bite. Far back when I coded the part of the update engine that does this, I didn't think that this would be necessary. It seems I'll have to do a rather large rewrite of the whole nametable update system.

- Level 5 ("Lesson 5"):

Image

This is just an early test to show that clone machines work! Whatever object is placed on this tile will be cloned when another object touches the red button. This feature is still very early in development. I have not yet implemented mapping between individual buttons and their respective clone machines. In order for that to work, I'll also need to extend my map format and figure out how it should most effeiciently be implemented.

Also note that the bomb graphics used in the windows version has been replaced by my brother with a TNT-tile. It would look too ugly trying to mimick the bomb (on a floor tile background) using the available red palette, and it would be impossible to use an object (metasprite) for this purpose, as there are lots of levels with many, many bombs.

- Level 6 ("Lesson 6"): A rather straight forward level to get working on this engine. However this level also shows the same shortcoming as described over here -- my engine can't update several individual metatiles in the same frame (it can only update whole lines of tiles when scrolling.) This is seen when trying to pick up a chip and at the same time touching one of the blue walls beside. Only the wall tile will be updated, since it was touched after stepping on the chip.

- Level 8 ("Lesson 8"): Still haven't worked any more on the monster AI. It's just lazyness really. I have to focus on the larger issues first...

The issue I will concentrate on now is getting the tile updating system fixed. I'll do something like what I wrote about a few posts over here.
Also, I guess those who've tried it have noticed some graphical sprite glitches when scrolling. This is something I'll look into when the tile updating issue is resolved.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 01, 2011 3:41 pm 
Offline

Joined: Tue Feb 01, 2011 2:44 pm
Posts: 6
I am a huge fan of this game! If by any chance it will be ready by May we would love to release it at Too Many Games!


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 57 posts ]  Go to page Previous  1, 2, 3, 4  Next

All times are UTC - 7 hours


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group