Asmusr Posted December 19, 2023 Share Posted December 19, 2023 Very nice! 1 Quote Link to comment Share on other sites More sharing options...
retrodroid Posted December 22, 2023 Share Posted December 22, 2023 (edited) 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. 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. Edited December 22, 2023 by retrodroid 2 Quote Link to comment Share on other sites More sharing options...
TheMole Posted December 23, 2023 Author Share Posted December 23, 2023 Thanks! Yes, I'm probably forgetting to set a register somewhere when restarting the level after you die. But I wanted to get it out before Christmas, so didn't look into it yet. Definitely not something MiSTer specific! 2 Quote Link to comment Share on other sites More sharing options...
TheMole Posted April 3 Author Share Posted April 3 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... 18 Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted April 3 Share Posted April 3 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" ?? 2 2 Quote Link to comment Share on other sites More sharing options...
PeteE Posted April 3 Share Posted April 3 The background layer water effect looks really great. Are you using the GPU to adjust the background horizontal scroll on every scanline? Quote Link to comment Share on other sites More sharing options...
TheMole Posted April 4 Author Share Posted April 4 (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 April 4 by TheMole added C code for GPU program 6 Quote Link to comment Share on other sites More sharing options...
+Vorticon Posted April 4 Share Posted April 4 I was wondering how you managed to do that fantastic wavy background effect. So this game is strictly F18A dependent? Quote Link to comment Share on other sites More sharing options...
TheMole Posted April 4 Author Share Posted April 4 (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. 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 April 4 by TheMole 4 Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted April 4 Share Posted April 4 At times, I have difficulty differentiating between right and left... Spoiler 2 Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted April 10 Share Posted April 10 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.