WIP: Wizard of Wor

A place where you can keep others updated about your NES-related projects through screenshots, videos or information in general.

Moderator: Moderators

tschak909
Posts: 142
Joined: Mon Jul 03, 2017 4:37 pm
Contact:

Re: WIP: Wizard of Wor

Post by tschak909 »

Oh my @#%(@# ... Wow, Finally squashed that one, turns out, it was in this part of the code:

Code: Select all

 void handle_player_in_field(void)
 {
-  if ((stamps[STAMP_X(i)]==PIXEL_BOX_X(a)) && (stamps[STAMP_Y(i)]==PIXEL_BOX_Y(b)))
+   if ((stamps[STAMP_X(i)]==PIXEL_BOX_X(a)) && (stamps[STAMP_Y(i)]==PIXEL_BOX_Y(b)))
     {
       // We are aligned.
       if (PLAYER_PAD_RIGHT(i) && stamps[STAMP_LAST_STATE(i)] != STATE_PLAYER_RIGHT && !BOX_WALL_RIGHT(d))
-       stamps[STAMP_STATE(i)]=stamps[STAMP_LAST_STATE(i)]=STATE_PLAYER_RIGHT;
+       stamps[STAMP_STATE(i)]=stamps[STAMP_LAST_STATE(i)]=STATE_PLAYER_RIGHT;
       else if (PLAYER_PAD_LEFT(i) && stamps[STAMP_LAST_STATE(i)] != STATE_PLAYER_LEFT && !BOX_WALL_LEFT(d))
-       stamps[STAMP_STATE(i)]=stamps[STAMP_LAST_STATE(i)]=STATE_PLAYER_LEFT;
+       stamps[STAMP_STATE(i)]=stamps[STAMP_LAST_STATE(i)]=STATE_PLAYER_LEFT;
       else if (PLAYER_PAD_UP(i) && stamps[STAMP_LAST_STATE(i)] != STATE_PLAYER_UP && !BOX_WALL_UP(d))
-       stamps[STAMP_STATE(i)]=stamps[STAMP_LAST_STATE(d)]=STATE_PLAYER_UP;
+       stamps[STAMP_STATE(i)]=stamps[STAMP_LAST_STATE(i)]=STATE_PLAYER_UP;
       else if (PLAYER_PAD_DOWN(i) && stamps[STAMP_LAST_STATE(i)] != STATE_PLAYER_DOWN && !BOX_WALL_DOWN(d))
-       stamps[STAMP_STATE(i)]=stamps[STAMP_LAST_STATE(d)]=STATE_PLAYER_DOWN;
+       stamps[STAMP_STATE(i)]=stamps[STAMP_LAST_STATE(i)]=STATE_PLAYER_DOWN;
       else if (PLAYER_PAD_IDLE(i))
-         handle_pad_idle();
+         handle_pad_idle();


I was accidentally using (d) as an index into the stamps table, which in this case, literally was returning 0 if the opposing player had just aligned with the box.

*BLUSH* :)

welp, we all make mistakes, don't we? :)

Now it's on to shooting the phasor cannons and then to implement monster to cannon and monster to player collision. (I need to study the last one, it's not a bounding box detection, nor is it pixel detection, but I suspect it literally is a direct box alignment, need to observe.)

**WHEW** :)

-Thom
tschak909
Posts: 142
Joined: Mon Jul 03, 2017 4:37 pm
Contact:

Re: WIP: Wizard of Wor

Post by tschak909 »

my OCD has gotten the better of me, and I'm spending the next couple of days shifting the maze downward, so that it can fit properly within NTSC overscan. which in my case means a minimum of one tile shift, but I'm doing two, so that the bottom of the dungeon will meet flush with the dungeon text, like it does in the arcade.

This does mean, that I had to make copies of the tops of my A-Z tiles, and paint horizontal rules above them to match the bottom of the dungeon. This also means that there currently is some attribute clash that I am working out, but the result will look a LOT better, when I'm done.

once this is done, I will start to implement player shooting.

-Thom
lidnariq
Posts: 11430
Joined: Sun Apr 13, 2008 11:12 am

Re: WIP: Wizard of Wor

Post by lidnariq »

Could you adjust the Y scroll instead?
tschak909
Posts: 142
Joined: Mon Jul 03, 2017 4:37 pm
Contact:

Re: WIP: Wizard of Wor

Post by tschak909 »

lidnariq wrote:Could you adjust the Y scroll instead?
Not in this case, I'll post a before and after, and you'll see why i'm doing this.

-Thom
tschak909
Posts: 142
Joined: Mon Jul 03, 2017 4:37 pm
Contact:

Re: WIP: Wizard of Wor

Post by tschak909 »

I was going to post this earlier, but nesdev was being moved. :)

So, I've managed to shift the playfield a bit down so that it looks a LOT better (there isn't that goofy gap between the dungeon and the dungeon name, and the radar, anymore.). I also color coded the player countdowns, and implemented teleporting (both players, as well as the enemies can utilize the teleport, which, given that it has a delay, definitely makes things interesting.)

https://www.youtube.com/watch?v=qYrk4bJcSeo

-Thom
tschak909
Posts: 142
Joined: Mon Jul 03, 2017 4:37 pm
Contact:

Re: WIP: Wizard of Wor

Post by tschak909 »

Now i've got an interesting problem, I'm running out of CHR-ROM space for my sprites. Shit.

Basically, I need space for two things:

* The Wizard of Wor needs 36 CHR tiles (2x3, all different, can't reuse bits, 3 frames horizontal, and 3 frames vertical.)
* The between level messages need approximately 32 tiles a piece, of which there are basically four.

I've made the concession that the between level messages always wind up on their own screen. (instead of in the arcade where some of the messages appear over the playfield)

So basically, I need...two more CHR ROM banks. How can I best pull this off?

-Thom
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: WIP: Wizard of Wor

Post by tepples »

I've got a solution in mind, but to pull it off, I need to know the following:
  • Are there any pairs of enemies that never appear at once?
  • How much background manipulation are you doing during vblank?
  • How much PRG ROM space is free?
tschak909
Posts: 142
Joined: Mon Jul 03, 2017 4:37 pm
Contact:

Re: WIP: Wizard of Wor

Post by tschak909 »

The Worluk and the Wizard of Wor appear only once on the playfield, no other enemies present.

I'm doing my background manipulation very much interleaved, I spin between four background updating states:

* score (28 tiles)
* teleports (6 tiles)
* Doors (12 tiles)
* Box timers (up to 4 tiles)

and the memory map: https://i.imgur.com/ZoXgCe7.png .. which shows 14K of PRG left (but I haven't implemented the rest of gameplay yet.)

-Thom


p.s. And maybe the sprite CHR rom has enough space, because I calculated the space for all 6 different sprites, with 6 tiles each, with 6 possible states + 36 tiles for the player shooting, so that means 252 tiles... which once you add in the 3 radar dots and the laser, that's all the cells....wheee.)
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: WIP: Wizard of Wor

Post by tepples »

You should be able to store the CHR data in PRG ROM and copy it to CHR RAM, following these instructions. Then in levels with normal enemies, you can load their tiles, and in levels with the bosses, you can load their tiles.
tschak909
Posts: 142
Joined: Mon Jul 03, 2017 4:37 pm
Contact:

Re: WIP: Wizard of Wor

Post by tschak909 »

tepples wrote:You should be able to store the CHR data in PRG ROM and copy it to CHR RAM, following these instructions. Then in levels with normal enemies, you can load their tiles, and in levels with the bosses, you can load their tiles.
Cool! Thanks! :)

-Thom
tschak909
Posts: 142
Joined: Mon Jul 03, 2017 4:37 pm
Contact:

Re: WIP: Wizard of Wor

Post by tschak909 »

Am A/Bing my game/vs the arcade...not happy with the walk cycles.. going to mess with the delay and the frames so that the walking tweens are close enough.

Yeah..yeah...procrastinating on the shooting...but this is part of me trying to make sure what I have so far will withstand later testing and polishing.

Some may think this is nuts, but I _really_ want this to be good.

-Thom
tschak909
Posts: 142
Joined: Mon Jul 03, 2017 4:37 pm
Contact:

Re: WIP: Wizard of Wor

Post by tschak909 »

Am curious.

What do you guys do, to rekindle motivation? This year has been very stressful, and I'm having difficulty jumping back in to work on this, even though, I really want to see this completed. What do you guys do when you're faced with a deficit of motivation?

-Thom
User avatar
FrankenGraphics
Formerly WheelInventor
Posts: 2064
Joined: Thu Apr 14, 2016 2:55 am
Location: Gothenburg, Sweden
Contact:

Re: WIP: Wizard of Wor

Post by FrankenGraphics »

What do you guys do, to rekindle motivation? This year has been very stressful
Don't i know it. What i don't know is the proper thing to say here, but...

I do find it helpful to collaborate on projects. Not as much because it's a joint effort but because it feels more "real" than when doing something alone, and because i'm held accountable, which feels good in my case. The realness might be important or nonimportant to you, but it's a theory (i think it was Hegel perhaps?) that people need to "mirror" themselves in their productive/creative output in order to not feel alienated. Having someone you for certain know is interested in the project means you can help each other mirror back and forth. My individual projects may sag behind, but that's ok to me as long as i do something with that sense of realness and recreation. I don't think everyone needs a partner like this, but i think that mirroring (even for oneself) and self-creation is pretty important. Does that resonate with you in some way?

Though if the underlying problem is too much background stress and it won't go away on its own sometime soon, i think the solution might be a structural one. No easy way around that. Not that it's an either or case, thankfully.

If tingering with wizards of wor gives you relief or has given you relief at some point from that stress, then that's good.


What made you think about porting it in the first place?
User avatar
Kasumi
Posts: 1293
Joined: Wed Apr 02, 2008 2:09 pm

Re: WIP: Wizard of Wor

Post by Kasumi »

I keep my motivation by making the tasks on my todo list smaller.

Code: Select all

Make enemy one
Make enemy two
Might be overwhelming.

Code: Select all

Make enemy one
	Add timer to stop it from smiling before attacking
	Add data for its attack
	create a new attack state
		make it slide while attacking toward the player
Make enemy two
It's may seem more stressful because it's longer, but you're much more likely to be able to "add a timer" than "make enemy one" in one sitting. And sometimes the reason I don't do something is like, "Well, I don't have time to do *task* right now, so I will do nothing." This makes *task* smaller, so it's more likely to fit in a smaller block of time.
Edit:
I guess it also helps to define what you actually want. Sometimes you think you know what you want for enemy one, but the vagueness of what's in your head is actually what's stopping you from making it. The small tasks force you to define what's needed in a real way. "Add ladders" vs "Handle these 5 real cases ladders will need." You're forced to think about the problem.
User avatar
FrankenGraphics
Formerly WheelInventor
Posts: 2064
Joined: Thu Apr 14, 2016 2:55 am
Location: Gothenburg, Sweden
Contact:

Re: WIP: Wizard of Wor

Post by FrankenGraphics »

kasumi wrote:but the vagueness of what's in your head is actually what's stopping you from making it.
This is so relatable, in my experience.

Also with a bit of luck, doing the tiniest/least threatening task you can find sometimes starts off an avalanche of creative pushes. Don't force it. A tiny task here, another there. Maybe with a lot of time in between, maybe not. When the avalanche comes, you rarely realize you're in it before the midpoint.
Post Reply