This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Messages - Quigibo
Pages: 1 ... 101 102 [103] 104 105 ... 135
1531
« on: May 13, 2010, 02:15:51 pm »
Also (although unfortunately on the calculator you don't see much of it) the music is a factor that really immerses me into a game as well. It really sets the mood, often times even more than the backgrounds. That's one of the reasons I loved Chrono Trigger and Secret of Mana becasue those games had awesome music along with an excellent story line and great graphics.
1532
« on: May 12, 2010, 11:25:16 pm »
Yeah, this is looking really great so far! I would recommend making the player move a little faster though since the enemies are able to move twice as fast. It would also be cool to have speed increases as upgrades.
1533
« on: May 12, 2010, 09:30:18 pm »
If you run out of room, you just use some free ram location. You have to save the current stack pointer somewhere anyway before you can use it, otherwise the calc will crash becasue it can never return back to the operating system. If you're not taking advantage of the automated push/pop features that are inherent to the stack pointer, then just use a ram location becasue its smaller and faster in ever way. Trust me, you'll NEVER use the sp register until you get into the really advanced tricks, and even then you're not using it to store numbers, you're using it as a fast way to read or write to ram.
1534
« on: May 12, 2010, 12:04:56 am »
Well, what should the behavior be in the event of a tie? Just arbitrarily pick one to be more than the other?
1535
« on: May 11, 2010, 11:35:38 pm »
That's not something you would ever want to use unless you're seriously abusing the consequences of its normal use, which I only did once when I tried grayscale double buffering. The sp register is the location of the stack. If you change it, you will no longer be able to call or return from subroutines, push or pop variables, and some other nasty things. Not to mention there's a lot of roundabout code you would have to use to even load stuff to or from it.
1536
« on: May 11, 2010, 07:08:39 pm »
2 bytes in the source code if you include the colon. The actual size in the executable is 9 and 3 bytes for Full and Normal respectively. Full is a little larger because it also returns if the calculator was successful in running 15MHz mode, which is used to distinguish what type of calculator is being used.
1537
« on: May 11, 2010, 02:44:03 pm »
Just thought I'd mention I wrote a 4 level grayscale routine today for the next version and it seems to work very nicely. The only problem is that it needs to be initialized before you can start using it, so you need to add one extra command to the top of your code, but the code itself is tiny.
1538
« on: May 11, 2010, 01:05:16 pm »
I notice you're doing this a lot:
ld A,<some number> ld B,A You can load it directly instead.
ld B,<some number> Secondly, you use djnz around a lot of subroutines. Are you absolutely sure none of those subroutines are using the b register? Because if any of them are, it will completely screw up the counting for the djnz. If you use any bcalls in that routine, that also counts becasue bcalls generally mess up all the registers unless it specifically says it does not.
tbdn15: CALL hidemoveshowncount djnz tbdn15 If you can't avoid getting rid of b from the subroutine, you can save it before calling the subroutine and then restore it after with a push and pop.
tbdn15: PUSH BC CALL hidemoveshowncount POP BC djnz tbdn15
1539
« on: May 11, 2010, 12:51:43 pm »
No, a subroutine is negligible unless its called over 9000 times per second. Typically, the screen updates around 20-60 times a second.
1540
« on: May 11, 2010, 12:37:47 pm »
I could have it do that for you, but I'd rather the programmer do it themselves since those making 6MHz games won't want to have the extra size increase for a feature they're not using.
1541
« on: May 11, 2010, 12:48:17 am »
You can do this:
While getkey(0):End
That works even when you're using direct keys. It will wait until you've let go of all the keys.
1542
« on: May 11, 2010, 12:30:48 am »
I actually switch to 6MHz before grayscale display in Chip's Challenge. It's not an uncommon method.
Alright, that reinforces my thoughts. If you want 15MHz grayscale, you will have to switch to 6MHz manually to display it. Even if some new programmer accidentally tries it in the 15MHz mode, it doesn't crash the calc or anything, it just displays funky garbage on the screen, so its not a big deal.
1543
« on: May 10, 2010, 08:48:34 pm »
Also, you can use it for general optimizing.
If you check the source of Starship, I was using a bunch of things like this: conj(A-3,B-3,4) Which I changed to this: conj(A,B,4)r Since it doesn't have to do extra subtractions.
1544
« on: May 10, 2010, 05:56:01 pm »
Yes, I do use that flag. That must be it. Are there any flags that MOS doesn't use that I can steal?
1545
« on: May 10, 2010, 05:54:01 pm »
I prefer to keep my 15 MHz games cross-compatible, even if it means they run twice slower on older models. What you can do is this: prgm15MHZ :Full <some code> :Normal :DispGraph r:Full <more code> That way it will do all the game calculations in 15MHz mode but still update the graph in 6MHz mode. The 6MHz and 15MHz DispGraph routines take the same amount of time since they are limited by the same LCD delay in both cases. One thing about the new update:
Can someone please tell me how the new commands would be used? More specifically, conj()r and the bitwise "and", "or", and "xor".
This is a good explanation for the bitwise features: http://en.wikipedia.org/wiki/Bitwise_operationAs for conjr, these are the same: conj(L1,L6,100) conj(L1+99,L6+99,100) rIt copies the 99th byte first then the 98th, the 97th, ... to the 0th byte instead of the other way around.
Pages: 1 ... 101 102 [103] 104 105 ... 135
|