• entries
222
608
• views
588385

1028 views

On bakery2k1's suggestion, I took a look at my sprite collision flag code. It only checked for collisions between sprites appearing in the foreground - sprites that were hidden behind a background tile weren't checked, which caused the Fantastic Dizzy bug.

I have decided to give Google's free project hosting a whirl. As usual, they can't get it working in Opera [flaming] (no big surprises there) and it's horrifically slow, but I can't really complain given that it's free, and the issue tracking is pretty handy.

Another game that has been fixed is the conversion of that arcade classic, Gauntlet. This was partially due to buggy controller port emulation, but a long-standing bug has been the lack of the y-scrolling inhibition flag. Games could set a flag on the VDP that would prevent the rightmost 64 pixels from scrolling vertically - this is useful to create a locked status bar on the right for a vertical scrolling game, for example.

I'm slowly getting there with FluBBa's VDP tester...

Nice to see it actually get hosted, I plan on having mine hosted soon as well. It'll be interesting to see the source, but it'll have to wait since I'm up north on a crappy 56k connection.

Is there any reason you went with Google? I'm considering CodePlex, but I've never hosted anything so I wouldn't know the difference(other than how they look).

Quote:
 Original post by Scet Nice to see it actually get hosted, I plan on having mine hosted soon as well. It'll be interesting to see the source, but it'll have to wait since I'm up north on a crappy 56k connection.
That's more than sufficient for Google's sluggish SVN service. [rolleyes]
Quote:
 Is there any reason you went with Google? I'm considering CodePlex, but I've never hosted anything so I wouldn't know the difference(other than how they look).
I picked Google purely because the SlimDX guys are using it, so though that if it's good enough for them, it can't be all that bad. I've been using SVN locally, and as far as I can see CodePlex doesn't offer an SVN service - it was nice to be able to synchronise the repositories, even if it took three failed attempts to get Google to finally start accepting the data (and then taking over an hour to upload!)

Really, it's just nice to have some issue tracking stuff and an automatic off-site backup at my disposal. I'll still be using my personal web hosting to host the final binaries.

I just wish Google would hire one guy who could get their stuff working in Opera, though. [sad]

I'm glad my suggestion helped get Fantastic Dizzy working.[smile]

I was going to have a scan through the code I'm glad I helped get Fantastic Dizzy working. I've I have had trouble trying to check out the source from your SVN repository. It seems the instructions on the "Source" tab of your Google Code page are wrong; they refer to a non-existent "trunk" top-level folder.

Other than that,

Thanks for making the code for Cogwheel openly available. I managed to check it out from your SVN repository, but this took a bit of doing since the SVN checkout instructions on your Google Code "Source" page seem to be incorrect - they refer to a non-existent "trunk" top-level directory in the repository.

I've spent a little time looking through the code; I'm always looking to improve my C# and I've picked up a few tips from it. In return, I'd like to help you out with your interrupt problems:

The Z80 does not have the concept of "(maskable) interrupt pending". If the /INT line is lowered (made active) and raised again while interrupts are disabled, this will be missed - there will be no interrupt taken when they are enabled again. This is why the VDP keeps the /INT line low until the control port is read, the idea being that a program reads the control port in its interrupt handler.

A very quick change to your code to emulate this behaviour is to simply change line 47 of "Fetch Execute.cs" from:
if (this.InterruptPending) {
to:
if (this.Interrupt) {
This fixes a few of the "Issues" on your Google Code page, including "Desert Speedtrap" and "Aladdin". It also fixes the "Register Mirrors" VDP test, since this test uses the hblank interrupt enable bit in the VDP registers to test the mirroring.

On the other hand, /NMI is edge- rather than level-triggered and I believe your use of "NonMaskableInterruptPending" is correct.

Thanks again, and keep up the good work![smile]

Quote:
 Thanks for making the code for Cogwheel openly available. I managed to check it out from your SVN repository, but this took a bit of doing since the SVN checkout instructions on your Google Code "Source" page seem to be incorrect - they refer to a non-existent "trunk" top-level directory in the repository.
Sorry about that. Google assume a repository directory structure with a trunk subdirectory for source code and a wiki subdirectory for Wiki entries, and their documentation reflects that. I have now moved all the source code into a trunk subdirectory as they suggest - thanks for the heads up!

Quote:
 I've spent a little time looking through the code; I'm always looking to improve my C# and I've picked up a few tips from it.
Starting with "how not to decode Z80 instructions", I suspect. [grin] The code is quite a mess.

Quote:
 The Z80 does not have the concept of "(maskable) interrupt pending". If the /INT line is lowered (made active) and raised again while interrupts are disabled, this will be missed - there will be no interrupt taken when they are enabled again…
Thank you again for your advice, this has certainly fixed a large number of problems.

Quote:
 Thanks again, and keep up the good work![smile]

Maybe assembla would work in Opera? I've been forced to use it for a team project, and it's not too bad. Again, the SVN service seems to be fairly slow. I haven't found a free service which is fast (and my non-free web host, which offers SVN, is also slow too).

## Create an account

Register a new account