tepples wrote:
Does NESASM have the capability to output a table of debugging symbols? Usually you can estimate the ROM size from that. Otherwise look at it in a hex editor.
No. Each line of assembly language code becomes 1 to 3 bytes of object code, except for bulk data directives like .byt, .addr, or .incbin. Indentation doesn't show up in the object code, nor do comments.
Thanks, tepples. I didn't think the comments would be part of the object code, but it's good to have an expert confirm it.
tepples wrote:
Are you exceeding vertical blank time to update the VRAM?
Actually, this didn't end up being the problem. But this is something I need to teach myself so I'm glad you brought it up. I understand what vblank is, but not how to calculate the update time. It's one of the many things on my list to figure out.
tokumaru wrote:
If the collision detection alone is over 16KB it will be very hard for us to catch anything wrong.
No worries. From what you and tepples described I now know how to find my PRG size, and I can tell you this is definitely under 16 KiB.
Please keep in mind as you read this (and especially if you look at my amatuerish code in the .asm files) that I am a VERY green noob and not a programmer.
This is an uber-simple beginner collision test I made just to practice the basics. You basically are moving the blue square, and my goal was to make it stop whenever it collided with the reddish-brown square. I've been working on it a few days, and just now (finally) got it to work as I expected. Woo-hoo! I know, nothing too impressive, but one small step at a time!
I have two versions of this file. At first, all my collision tests for right, left, down, up were in the sections for those respective keys. (That's the collision.asm file, and now it's working on all three emulators.) My collision wasn't working right at first, so I moved the relevant code to subroutines. Partly because I thought the code might be interfering with each other and subs might help, and partly because I wanted to practice writing subroutines and finding out what works and what doesn't.
It turns out that I was doing something wrong with writing the subs. Either I have typos or they're placed in the wrong place or something else altogether. If you assemble the collision_subroutines.asm and run it on Nintendulator or Nestopia, you'll see what I mean. Those two emulators scream, "this ROM is stupid! For God's sakes just make it stop!" FCEU, as I've been warned, is just like "Sure, man, do whatever ya want. I'm just gonna sit here and chill while your incorrect rom runs as though its flawless..." I think from now on I'm definitely testing my stuff on the first two, as I've read a comment from Sivak on Nintendo Age forums saying they're more accurate to a real NES. I've also seen plenty of people on this forum say the same thing, like tokumaru.
Anyway, I guess what I need to figure out now is what I'm doing wrong with my subroutines, as I mentioned above.
If any of you want to look at this, please feel free. My collision test code is very beginner, like I said. So if you have any tips on cleaning it up I'll be glad to take it. I know I've got a long way to go and a LOT to learn. And I imagine I'll have to change it for a second collision object. That's actually my next goal.
http://www.mediafire.com/?jxdjdznjmog
metalslime wrote:
I think I recognize his name from the nintendoage forums, so if he is working off the Nerdy Nights tutorials a lot of that space is likely data (eg, .db of a full background).
I am actually using bunnyboy's tutorials, metalslime, as you'll see in the code. I've been bouncing between Nintendo Age and Nesdev here since I started getting into this a couple weeks ago. I've also been checking out your tummai games site, as well. Very cool, but most of is beyond my skill level at this point. I especially liked the button combos write up.
PS- Am I too off-topic for this thread? Do you guys need me to ask an admin to move it somewhere else?
PPS- Oh yeah, I also forgot to mention that I've noticed that annoying grey tile in the upper left-hand corner. For the life of me I can't figure out why the hell that thing is there. I know it's something I did, but I've just been kicking it down the road in regards to fixing it.