Jump to content
IGNORED

Alex Kidd on Miracle Island - Playable Demo


TheMole

Recommended Posts

This is very impressive work!  The smooth scrolling effect, even on the plain-old 99/4A, is like butter. I also hate ice levels, haha.

 

IMG_6604.thumb.JPG.c88f4d5054545c2ebdfb90c3cf8a1642.JPGIMG_6599.thumb.JPG.42f7d86342be96f4685ae59d233aa730.JPG

 

I noticed that on my MiSTer setup, the F18A core plays perfectly for the duration of the 1st game, but if you start a 2nd game, the graphics are corrupted for some reason. EDIT-> Same issue happens upon starting a 2nd game on the js99er.net emulator as well.

 

IMG_6601.thumb.JPG.7c2cfc1b7010b00ec13c1ba839761589.JPG

Edited by retrodroid
  • Like 2
Link to comment
Share on other sites

  • 3 months later...

While I'm waiting on the final feedback on Ghostbusters, I picked up Alex Kidd again. Decided to add a bit of variety and, after ice levels, added support for that other platform game cliché: underwater levels :).

I need to rework the sprites a bit (the fish aren't supposed to be transparent, and I'm not 100% happy with Alex's animations yet), but I've been mostly focused on the swimming physics and integrating that in the rest of the game engine. I also optimized the 9918 version to support more enemies per level (it started skipping frames with the 12 enemies in this level), and we're back within the 1/60th of a second window now.

 

I've also spent a lot of time working on the tools that allow me to more easily create levels, which are shaping up nicely. With a bit of luck, I can knock out a few levels over the next couple of weeks/months and have the game finished sometime this year. The title screen says 2015, which I guess is when I started working on this, so with a bit of luck I can avoid this thing being "under development" for a full decade... :) 

 

  • Like 18
Link to comment
Share on other sites

1 hour ago, TheMole said:

the fish aren't supposed to be transparent

Actually think the semi-transparent fish have a certain charm.

 

1 hour ago, TheMole said:

I can avoid this thing being "under development" for a full decade...

"Alex Kidd Forever" ??

  • Like 2
  • Haha 2
Link to comment
Share on other sites

Posted (edited)
9 hours ago, PeteE said:

The background layer water effect looks really great.  Are you using the GPU to adjust the background horizontal scroll on every scanline?

Yes, there's a tiny GPU program that triggers every scanline and applies two sine waves: one for the bigger "wavy" effect, and once with a higher frequency for the smaller "shimmer" effect.

 

C code looks like this:

// Define VRAM memory locations we want to read/write
volatile unsigned char* vdp_reg	= (volatile unsigned char*)0x6000;
#define scanline_cnt *((volatile unsigned char*)0x7000)

// Sinus lookup table
const char sintab[] = {
	0x08,0x08,0x08,0x09,0x09,0x09,0x09,0x09,0x0a,0x0a,
	0x0a,0x0a,0x0a,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0c,
	0x0c,0x0c,0x0c,0x0c,0x0c,0x0d,0x0d,0x0d,0x0d,0x0d,
	0x0d,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0f,
	0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
	0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
	0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
	0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,
	0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
	0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0d,0x0d,
	0x0d,0x0d,0x0d,0x0d,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,
	0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
	0x0a,0x09,0x09,0x09,0x09,0x09,0x08,0x08,0x08,0x08,
	0x08,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,
	0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x04,0x04,0x04,
	0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x02,
	0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x01,
	0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
	0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,
	0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,
	0x03,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x05,
	0x05,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x06,0x07,
	0x07,0x07,0x07,0x07,0x08,0x08
};

int _start()
{
	__asm__("li r15, 0x47fe\n");		// Set stack pointer

	unsigned char cnt = 0;			// Frame counter
	unsigned char offset;			// Shimmer offset
	unsigned char scroll_pos = 0;

	while(1)
	{
		offset = sintab[(((scanline_cnt) + cnt) * 8) & 0xff] >> 3;	// Calculate shimmer effect
		if (scanline_cnt & 0x01)					// Apply positive or negative shimmer
			vdp_reg[27] = scroll_pos + offset;			// depending on odd/even lines
		else
			vdp_reg[27] = scroll_pos - offset;

		vdp_reg[27] += (sintab[((scanline_cnt) + cnt) & 0xff] - 8) >> 1;// Apply wave effect on top

		if (scanline_cnt == 192)					// Increase frame counter
			cnt++;

		__asm__("idle\n");						// Halt GPU (until next HBLANK interrupt)
	}

	return 0; // never reached
}

 

Edited by TheMole
added C code for GPU program
  • Like 6
Link to comment
Share on other sites

Posted (edited)
On 12/23/2023 at 12:34 AM, retrodroid said:

This is very impressive work!  The smooth scrolling effect, even on the plain-old 99/4A, is like butter. I also hate ice levels, haha.

IMG_6604.thumb.JPG.c88f4d5054545c2ebdfb90c3cf8a1642.JPGIMG_6599.thumb.JPG.42f7d86342be96f4685ae59d233aa730.JPG

1 hour ago, Vorticon said:

I was wondering how you managed to do that fantastic wavy background effect. So this game is strictly F18A dependent?

 

No no, not at all... See the screenshots above (thanks retrodroid), it shows the difference in rendering between the tms9918a (left) and the F18A (right). If you happen to have the F18A, you get all of the fancy extras, but even on the tms9918a you will get the smooth scrolling and (mostly) multicolor sprites.

 

 

Edited by TheMole
  • Like 4
Link to comment
Share on other sites

On 12/19/2023 at 8:22 AM, CLBrown said:

Hi, Mole!  Bringing this into this conversation from the other (older thread) I'd posted in before.

 

Yeah, the game runs fine on my real hardware (from FinalGrom), noting I have no F18A in real life (I really, really wish that they were available, or even better, that the gen 2 version was available, but so far, they're sort of like unicorns or pretty virgins... )

 

On Classic99, with F18A (partial) support enabled, I get the funky graphics I saw earlier.  This is what I see:

1.bmp 165.78 kB · 8 downloads

 

And Classic99 locks up... I need to do a hard reboot.

 

If I disable F18A support in Classic99, everything works fine, albeit obviously in the somewhat less pretty 9918 mode.

 

I don't have TI MAME or MESS emulation running locally, and I'm not really familiar with JS99, either...  I have PC99, Classic99, TI994W, v9t9, and Win994a...  but it seems I'm behind the times where the "emulation community" is doing things these days, huh?  And among my choices, only Classic99 has F18A support (which USUALLY works quite well, but according to Tursi himself is not a "complete" implementation).

 

So, what I'm picking up here is that if I ever manage to get my hands on an F18A (hopefully gen2, but gen1 would be nice, too!) upgrade, the BIN file I've been playing with ought to work properly... right?  And apparently, running in JS99 or MAME would be workable as well.

I have f18a MK1s in stock. FYI I intend on stocking them as long as there's demand in the MK2 hasn't come out then I'll be stocking the MK2.. and I wouldn't expect it for quite a while

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...