Lots of progress, little man.
So I got a bunch more done since the last time you and I hung out. Thanks for stopping by again!
First of all, I added a global little text field that shows you on every screen and all the time what item you have selected in your inventory at any moment. The modified play screen looks a little like this:
As you can see, you’re currently holding the wrist watch, which does nothing except tell you that you need to get laid by midnight. Hopefully users won’t get too confused as to which button does what. A tries to perform an action with whatever is in front of you at any given moment and B tries to use whatever item you’re currently holding. Not too confusing with a controller, but just using the keyboard in an emulator is kind of tripping me up.
I got a lot more work done in the bathroom. I got it so you can get the password and retrieve the ring from the sink. Here’s a little sneak peak:
Nothing special, but I think it looks okay. I don’t have him taking a poop just yet, but I have the important items functioning, so that was enough to motivate me to move on to the next room. I’ll have to go back and tweak things. One thing I’ll definitely need to tweak is the fact that Larry is standing in front of the text box in tight spaces like the bathroom when the text box is triggered. That makes me sad because I REALLY like having him stay on the screen. I don’t really see any other way around it though, besides moving the placement of the text box, and at this point I don’t think that’s something I’d even consider. I like the way it looks in the center.
So the room I got to work on after the bathroom was the bouncer room, that you can only enter after you’ve learned the password. I drew the bouncer and got him into his position and got his text working if you get close enough to him and try going up the stairs.
I also got the TV text in there for when you try to turn it on. Uh oh, the knob is broken! How will you turn it on without the knob??
Other than that I got some basic tweaks here and there that I don’t even remember, but I also got the generic text box working in every room that I have coded into the game so far. I’m a little pissed because one of my banks that has nothing but 8 nametable data maps is almost full. I can’t believe 8 maps would take up that much space. So frustrating. How am I supposed to fit the other 20 maps in there?
Who knows. Never a dull moment when programming for the NES.





Ahh I was wondering what you were planning on doing for controls. What about item selection? Will they cycle when you hit select, or do you pause the game and select it from a menu.
Don’t you have a retroport? It’s the only way to go when you are forced to use emulators.
With 20 items to scroll through in the inventory, I think it’s better to just require you to press start to change what you’re holding. Cycling through all those items would be a pain in the ass.
And I do have a retroport, but I never have it hooked up. I only plug it in when I want to seriously test something. Plus I do all my coding on a laptop so toting around a controller would be annoying.
To make Larry appear behind the text box you could try to partially hide him by using the 8-sprites-per-scanline limit to your advantage.
Just place 8 transparent sprites on the same scanlines (at the left edge of the screen) as the portion of him you want to hide.
Gimmick does this whenever you enter a level.
The downside is, depending on how much you need to hide and whether you’re using 8×8 or 8×16 sprites, it will eat up a lot of the NES’s 64 available sprites. Doesn’t look like this game will need a lot of them, though, so it might be worth a shot.
You are a genius, sir. I never even thought of that!!
How does the NES determine which sprites are shown? The first 8 on a given scanline?
That’s a good question. Just tested it, looks like the OAM entries that come first are those that get rendered, which makes sense if the PPU is traversing OAM from sprite 0 to sprite 63, rendering the first 8 sprites it finds on the current scanline. So you’d have to make sure your hero sprite resides somewhere in the higher area of OAM.
Not 100% sure about this, though. Hope one of the nesdev “veterans” can confirm.
Yes, the first 8 it encounters for a particular scanline are the ones used.
It also gives visual priority to the earlier ones. Meaning if sprites 1 and 2 write to the same pixel, sprite 1 gets drawn.
And to make it even more fun, if you draw sprite 1 BEHIND the background (so it is invisible) then sprite 2 will not be drawn whereever its pixels intersect those of sprite 1. That is how mushrooms coming out of a pipe in mario work.
Al
Great progress there Kevin! Looks like the play style will work quite well (perhaps a little quicker than the original, but still have a lot of puzzles to solve).
I guess you may need to think about compressing some of the data in your banks, or spreading out into more banks?
It’s definitely quicker than the original, but I think it will still pose a challenge to those who have never played the original (and maybe give a laugh to those who have already played it).
What sort of compression could I use to save space? I’ve never really had to deal with this sort of thing, so it’s foreign to me.
Updates!!! Need…. More…. Updates…. I check this site almost every day lol.