Leaderboard
Popular Content
Showing content with the highest reputation on 09/25/2023 in all areas
-
Because like it or loathe it the CX40 Joystick is probably one of videogames most recognised hardware accessory. Its just iconic and we had to include it without question with the 2600 console. Original CX78 GamePads are compatible with the Atari 2600+ and likely nudge nudge wink wink someone will bring out a similar Joypad in the future compatible with the 2600+9 points
-
Woo-hoo!!! Yeah!! Thanks! I didn't know if it was in the cards mathematically, but here we are And congrats @ZilchSr, amazing job! And thanks for the tips along the way Great season all, I had a lot of fun. As always, thank you @Vocelli for running an awesome club (while all along playing real-life Pressure Cooker ) Now to look back and pick my favs...7 points
-
Hello all, Champ Games is happy to announce that Elevator Agent is nearing completion and will be available at the Champ Games booth (along with Turbo Arcade and other games) at this year's Portland Retro Gaming Expo. A huge thanks to @Nathan Strum (again!) for the artwork for the game (box, manual, label and poster), as well as all of the in-game graphics. Nathan also spent numerous late nights (too many to count!) hammering out the final details of the publishing requirements; a physical release of this game (and Turbo Arcade) would not have been possible without his dedication and hard work! 🏆 Big thanks to @Pat Brady for the amazing music and sounds! Here are some images of the box: I also want to thank @Albert for reviewing the text on the box and manual and for helping with the publishing transition process. We also plan on adding Elevator Agent (both boxed version and digital download) to our Champ Games store after we return from the convention, most likely in early December. If you're in the Portland area in mid-October, come on down and visit as we will have both Elevator Agent and Turbo arcade (and our other games) set up to play as well. Hope to see you there! Thanks, John7 points
-
7 points
-
Here's a better look at the prototype board used in the demo video (Code Name: RPSX). This version got it 85% right, and served as a good platform to run experiments on, that would eventually get it another 15% towards the finish line. The Antic and the GTIA have been heat-sinked on the 576NUC+ board underneath, which is good practice for this system because of the chip density compromising the two graphics related chips ability to shed heat. The black jumper wire is providing the /CCTL signal from a header on the 576NUC+, and is the only 'extra' connection required, with everything else coming thru the piggybacked chips and the internal SIO header making this a solder-less installation. In the new upcoming version (V1.4) The battery size has been reduced, the SD Card socket has been changed to one that is in current production, and the bodge wires and extra components have been incorporated. Also the SIO signals will be passed thru to a top mounted female header for future expansion. The R-Time 8 only uses the battery when the unit is unplugged from the wall, otherwise it gets a constant power connection even when the 576NUC+ is in an OFF state, thus it doesn't need to be very big battery for back-up. SW1 is the reset for the A8Pico Cart, SW2 is for the SDrive swap disk feature, and SW3 allows selecting the SDrive's physical drive assignment. EDIT: BETA, V1.0, V1.1, V1.2 never materialized as real hardware, but were instead conceptional revisions that occurred only on paper instead. Some got close to reality, and even had PCB layouts, but simply didn't make the cut. EDIT2: Also wanted to mention that there are some blog posts that I made earlier about this project on my website.7 points
-
Nintellivision is an emulator for our beloved machine on the DS/DSi/XL/LL The latest version can always be found here: https://github.com/wavemotion-dave/NINTV-DS The last couple of releases have been mostly fixes and enhancements for various RAM/ROM segment mapping to ensure all the latest homebrews work. Loads .ROM or .BIN/.CFG format files. Up to 1024KB (512K words) of ROM memory emulated. JLP 16-bit RAM emulated (8K Words) JLP Flash support of 336 rows (42 sectors) for a total of 64K bytes (actual 64512 bytes). Each game gets their own 64K of file-backed flash. ECS emulated with 2K of 8-bit RAM, keyboard and extra sound channels. Intellivoice emulated for games that take advantage of voice enhancements. Up to 8K of extra 8-bit RAM emulated for games like USFC Chess and Land Battle (note, the 2K of ECS 8-bit RAM comes out of this pool). Up to 16K Words of extra 16-bit RAM emulated beyond dedicated 8K words of JLP RAM. Paging on all segments of memory provided the full binary is 1024KB (bytes) or less. The emulator provides some quality-of-life improvements such as high score saving, load/save states, various controller maps (including various dual-controller setups to allow for smooth move/shoot such as you might enjoy with a game like Cloudy Mountain). I've recently added the ability to play the game at 100% to 150% speed - this can be useful for games like Treasure of Tarmin (my favorite Intellivision game!) where I find playing at 130% speed allows me to zip around the dungeons a bit faster and can squeeze in more gameplay into the same time-frame. Numerous cheat codes/hacks are built into the emulation and can be enabled via a menu. A large number of game manuals are built in and can be viewed on screen (text only). Custom overlays are supported - it's a little daunting to create your first one, but instructions are provided.6 points
-
Congratulations to: ZilchSr Winner of the Atari 2600 High Score Club Season 14 ~ 3 Time CHAMPION ~ (Season 9 Champion and Season 10 Champion) Final Standings Major League Tournament Competitors 1504 ZilchSr 1443 McCallister 1404 Kermit 1310 JacobZu7Zu7 1277 JasonAtari 1273 AtariSphinx 1237 Dr Moocowz 1235 Keir 1203 JasonHRB 1166 Absalon 1160 Vocelli 1152 Keilbaca 1145 FakeCortex Minor League Tournament Competitors 1104 Capitain Classic 1086 Evandro 1045 Mikey 1026 GBAG 1012 Atarian7 963 Rickster 907 MoisesTuseto 905 LaurenTyler 904 Mchetzel 844 TheActivisionary 811 Krytol 718 SnowBound 683 ClassicGamer The Rest of the Players 598 AGB 422 JeremiahJT 375 GType 282 EricG 255 RaymanC 188 Nads 175 Danger 133 JimBlargh 110 Sapo 105 RGC 67 AbleMVada 64 AdamChevy 60 HankRearden 47 SkippyBCoyote 45 PatBB 40 BentPin 32 p1Fq03 26 JGKspsx 18 Jblenkle Season 14 is Over and now it is time to VOTE You get to pick 2 games per Category Pick from all games played from Season 14 HSC. Post in the Thread. *Favorite Game from Season 13 (2 games you loved to play from Season 13) 4 - Ms Pac-Man 4 - HERO 3 - Joust 3 - Pressure Cooker 2 - Lady Bug 2 - Rabbit Transit 2 - Crystal Castles 1 - Stay Frosty 2 1 - Amoeba Jump 1 - Lucky Chase 1 - Stampede 1 - Thunderground 1 - Crazy Climber *Most Surprising Game from Season 13 (2 games you thought were good but you never/rarely ever played it before. A nice surprise) 6 - Stay Frosty 2 3 - Elevators Amiss 2 - Revenge ot Beefsteak Tomatoes 2 - Amoeba Jump 2 - Thunderground 2 - Suicide Mission 2 - Escape ft Mindmaster 1 - Miner 2049er Challenge 1 - Ms Pac-Man 1 - Lady Bug 1 - Official Frogger 1 - Rabbit Transit 1 - Sky Diver 1 - Communist MFS *Worst Game from Season 13 ( 2 games you thought were bad and will never play again) 5 - Lost Luggage 4 - Killer Satellites 3 - Defender 3 - Burgertime 3 - Escape ft Mindmaster 2 - Suicide Mission 1 - Sky Diver 1 - Pressure Cooker 1 - Miner 2049 1 - Elevators Amiss 1 - Revenge ot Beefsteak Tomatoes Just Post Your Votes Below!6 points
-
TBH, of all the hardware modifications that are being done, one of the most useful ones would be one that provides the ability to switch between NTSC and PAL; and further to do PAL-60 and NTSC-50.6 points
-
6 points
-
Broke 200k!! No surprise that I got Special again, which really just blows your score wide open. So I skipped some early bait, but I did get some later ones, which helped me clear boards bc of the freeze, tho the bugs did manage to trap me again. I’ll give it another go tonight, but I want to make sure I have this one locked in. Wow! 214,6806 points
-
How about the for-profit company do it for their product, instead? This isn't rocket science - the source code is all there, and thoroughly commented. One could back-port the a7800 driver improvements to an earlier mess code-base (the mame4all approach) or port them to prosystem. (basically what I did with the a7800 pokey driver, for js7800)6 points
-
That's very cool, I didn't know that! Here's a video with those two scenes, as well as a third scene in one of the Spider-Man movies where the same actor once again has a boombox. ..Al6 points
-
Excellent job! If you like it, you can use my 160B - 12 colors background of Bomb Jack (128 pixel wide), it is very close to the arcade version and it has detailed and clean graphics. I also added a third green color to enhance the trees. Below, I attach the 7800 graphics. It is ready with square pixels. * there it is:6 points
-
It was tough coming up with my picks...there were a lot of great games this season! But since I have to... Favorites Ms. Pac-Man Here by default as it was my round pick for this season and is just such a strong port. Stay Frosty 2 As I said when we played it: "No notes". This is one I should spend some more time with. Most Surprising Miner 2049er I was not expecting this version to keep me engaged, but our challenge had me coming back to squeeze out every little point I could. What started off as kind of frustrating ended up being enjoyable and surprised me in the end. Plus, the sharing of strategies and back and forth here on this one really made the round fun Thunderground On the surface (no pun intended) this game didn't really interest me, but when I dug deeper (pun definitely intended) I found myself coming back. Worst Killer Satellites I felt like I had to play opposite to how it was intended in order for me to survive and get points. Wasn't much of a fan. Suicide Mission I got my pb out of the gate which I'm sure was dumb luck. I wasn't so good at the controls on this one. Special Shout-Out Revenge of the Beefsteak Tomatoes Playing this game for the first time this summer put me on a deep dive of Attack of the Killer Tomatoes. I had only ever seen the original movie, but now...oh boy... I watched all 4 movies, both seasons of the cartoon (except for two episodes that seem to be lost ), a super in-depth 3 hour documentary, and I finished it all off by reading the brand new novelization of the first film (which was a hilarious read btw). I can now say, I am very much a fan of AotKT5 points
-
5 points
-
5 points
-
5 points
-
Hello all, Champ Games is happy to announce that Elevator Agent is nearing completion and will be available at the Champ Games booth (along with Turbo Arcade and other games) at this year's Portland Retro Gaming Expo. A huge thanks to @Nathan Strum (again!) for the artwork for the game (box, manual, label and poster), as well as all of the in-game graphics. Nathan also spent numerous late nights (too many to count!) hammering out the final details of the publishing requirements; a physical release of this game (and Turbo Arcade) would not have been possible without his dedication and hard work! 🏆 Big thanks to @Pat Brady for the amazing sound effects and music! Here are some images of the box: I also want to thank @Albert for reviewing the text on the box and manual and for helping with the publishing transition process. We also plan on adding Elevator Agent (both boxed version and digital download) to our Champ Games store after we return from the convention, most likely in early December. If you're in the Portland area in mid-October, come on down and visit as we will have both Elevator Agent and Turbo arcade (and our other games) set up to play as well. Hope to see you there! Thanks, John5 points
-
The Season is over... Here is what to expect: Monday Morning: Final Update on Scores. Final Standing Calculated. Season 14 Winner and Awards announced in the separate post. Monday Afternoon: Major and Minor League Tournament Set-Up. Top 4 Major League Players will be contacted for their list of games they wish to play for Round 1. Top 2 Minor League Players will be contacted for their list of games they wish to play for Round 1. Monday Evening: Let the Games Begin! (Hopefully, if players involved in picking games send me their lists quickly).5 points
-
My times for the week: Intellivision: AD&D: Cloudy Mountain - 45 min. Defender - 12 min. Frog Bog - 21 min. Thin Ice - 5 min. Honestly, a lot of this was controller testing -- had an issue, found the issue (eventually!), fixed the issue (eventually!), played a while to confirm it was fixed -- but I did play Frog Bog with my kid, and also beat AD&D on Hero difficulty again.5 points
-
20230925_000412.mp4 Anything UNO can do, PICO can equally do 😃5 points
-
4 points
-
After I had lost motivation (also due to the latest events), it has been slowly coming back. I now have enhanced the new ROM (V0.4, see 1st post) quite a bit. Major changes: The game is played in stages. Four stages from a group. The current progress is displayed as G-S (Group-group Stage). The first group (starting with 1-1) is more or less a tutorial for the game's obstacle forms. With each stage, the difficulty increases (faster movement, longer stages, more difficult obstacles). And with each group, a new behavior of the obstacles is introduced. So far I have added four different behaviors, most likely more will follow. You can select between 4 starting stage groups (=difficulties) by rotating the orbs. Every quarter of the circle equals a difficulty displayed as 1-1 .. 4-1. For now, everything is based on a fixed seed. But I plan to have optional, random seeds too. When the game is not running, the current group and its stage (G-S), the score and your health are displayed at the top. Each time you hit an obstacle you lose ~33% health. You can regain health by successfully passing an obstacles. Up to ~33% per stage. There is still work to be done. So please have mercy . But as always: Any feedback is welcome! BTW: Albert will demo Pas de Deux at PRGE.4 points
-
Oozy the Goo Gaiden is a new Atari 7800 game by @vhzc (Vladimir Zúñiga) and will make its physical debut at PRGE! Here's the box design that Vladimir created for his game: Oozy The Goo is an adventurer slime with a mission: defeat the tyrant Foggy Nightmare and his evil servants that reign over the creatures inhabiting the catacombs of Dungeonburg. But it is not an easy task, the tower is filled with perils, traps, and creatures, and time is running against you! Guide Oozy through the three floors of the tower, use the different forms that Oozy can adopts avoid traps, find keys, solve puzzles, fight against the boss on each floor, and challenge the Skull Foggy Nightmare in this slimy adventure!4 points
-
Since it's running and only the display is corrupted, the main suspects are the ANTIC chip, A302 on the CPU board, or the 4116 chip Z512 on the RAM board.4 points
-
4 points
-
@Wrathchild that's a VERY impressive demo, which I don't think I'd seen before. The 3d is being rendered on the pico? (i.e. its not just a slideshow?). Might be worth posting it as a top-level thread in its own right, so it can get the attention it deserves! Robin4 points
-
Hi, Today is about collision detection and more precisely fast pixel accurate collision detection. Collision detection is something very important in video games, but unfortunately the Atari 7800 doesn't provide any hardware support for it. We'll have to deal with the 6502 for that... I've added 2 macros to headers/multisprite.h : multisprite_compute_box_collision, and multisprite_compute_collision. The first one is a simple macro that (as its name implies) checks for a box collision between 2 objects - the classical way on Atari 7800, fast but not accurate -. The second one is pixel accurate collision detection that relies on a pre-computed collision map between sprites. Example : I want to compute the collision between a bullet and a spaceship. In shmup.yaml, I define : sprite_sheets: - image: shmup.png holeydma: 16 sprites: - name: bullet top: 48 left: 0 height: 8 width: 8 palette: fire - name: spaceship top: 48 left: 8 height: 32 width: 24 mode: 160B palette: all collisions: - sprite1: bullet sprite2: spaceship Note the new collisions keyword, that will make sprites7800 generate the collision map between the 2 sprites. When we execute sprites7800 shmup.yaml, it generates a collision map, which is a simple C array : const char collision_bullet_spaceship[78] = {0x03, 0x80, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x0f, 0xe0, 0x0f, 0xe0, 0x0f, 0xe0, 0x3f, 0xf8, 0x7f, 0xfc, 0x7f, 0xfc, 0x7f, 0xfc, 0x7f, 0xfc, 0x7f, 0xfc, 0x7f, 0xfc, 0x7f, 0xfc, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x3f, 0xf8, 0x3f, 0xf8, 0x1b, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; We can use it in our game code to detect a collision by : multisprite_compute_collision(xbullet, ybullet, 4, 8, spaceship_x, spaceship_y, 12, 24, collision_bullet_spaceship); if (multisprite_collision_detected) { // Explosion } where we provide the position of the 2 possibly colliding objects, their size and the collision map computed by sprites7800. The macro is defined in headers/multisprite.h as : // ~100 cycles max pixel accurate collision detection (60us) #define multisprite_compute_collision(x1, y1, w1, h1, x2, y2, w2, h2, collision_map) {\ _ms_tmp3 = 0; \ _ms_tmp2 = (y1) + ((h1) - 1) - (y2); \ if (_ms_tmp2 >= 0) { \ if ((x1) <= (x2) + ((w2) - 1)) { \ if ((y1) <= (y2) + ((h2) - 1)) { \ _ms_tmp = (x1) + ((w1) - 1) - (x2); \ if (_ms_tmp >= 0) { \ Y = _ms_tmp2 << ((w1 + w2 - 1) / 8); \ while (_ms_tmp >= 8) { \ Y++; \ _ms_tmp -= 8; \ } \ _ms_tmp3 = collision_map[Y] & _ms_bit_extract[X = _ms_tmp]; \ } \ } \ } \ } \ } It's basically 4 if/then (box collision test), followed by a bit test on the collision map. This generates the following assembler code in our example : ; { _ms_tmp3 = 0; _libc_tmp2 = ( ybullet) + (( 8) - 1) - ( spaceship_y); if (_libc_tmp2 >= 0) { if ((xbullet) <= ( spaceship_x) + (( 12) - 1)) { if (( ybullet) <= ( spaceship_y) + (( 24) - 1)) { _libc_tmp = (xbullet) + (( 4) - 1) - ( spaceship_x); if (_libc... LDA #0 ; 2 STA _ms_tmp3 ; 3 LDA main_3_ybullet ; 3 CLC ; 2 ADC #7 ; 2 SEC ; 2 SBC spaceship_y ; 4 STA _libc_tmp2 ; 3 BCC .ifend98 ; 2/3 LDA spaceship_x ; 4 CLC ; 2 ADC #11 ; 2 CMP main_3_xbullet ; 3 BCC .ifend99 ; 2/3 LDA spaceship_y ; 4 CLC ; 2 ADC #23 ; 2 CMP main_3_ybullet ; 3 BCC .ifend100 ; 2/3 LDA main_3_xbullet ; 3 CLC ; 2 ADC #3 ; 2 SEC ; 2 SBC spaceship_x ; 4 STA _libc_tmp ; 3 BCC .ifend101 ; 2/3 LDA _libc_tmp2 ; 3 ASL ; 2 TAY ; 2 .while12 LDA _libc_tmp ; 3 CMP #8 ; 2 BCC .whileend12 ; 2/3 INY ; 2 LDA _libc_tmp ; 3 SEC ; 2 SBC #8 ; 2 STA _libc_tmp ; 3 JMP .while12 ; 3 .whileend12 LDX _libc_tmp ; 3 LDA collision_bullet_spaceship,Y ; 4/5 AND _ms_bit_extract,X ; 4/5 STA _ms_tmp3 ; 3 .ifend101 .ifend100 .ifend99 .ifend98 which is not much more than simple box collision. Its max execution time is 60us, but most of the time it will be less (we start by testing the y position of the 2 objects, and most of the time the bullets are above the spaceship). Note that we have defined a macro and not used a C function in order to benefit from constant parameter optimization (as width and height are constants, the code is simpler than when using variables). Here is the source code for example_collisions, which is almost a game (try to survive this 32 sprites assault) : #include "prosystem.h" #include "multisprite.h" #include "joystick.h" const signed short dx[24] = {300, 289, 259, 212, 149, 77, 0, -77, -150, -212, -259, -289, -300, -289, -259, -212, -149, -77, 0, 77, 149, 212, 259, 289}; const signed short dy[24] = {0, 124, 240, 339, 415, 463, 480, 463, 415, 339, 240, 124, 0, -124, -239, -339, -415, -463, -480, -463, -415, -339, -240, -124}; const char horizontal_pingpong[24] = { 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13 }; const char vertical_pingpong[24] = { 0, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }; // Generated by sprites7800 shmup.yaml holeydma reversed scattered(16,6) char explosion1[96] = { 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, 0x00, 0x00, 0x00, 0x2a, 0xa0, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x68, 0x00, 0x00, 0x00, 0x62, 0x96, 0xaa, 0xa8, 0x00, ... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 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 }; holeydma reversed scattered(16,1) char bullet[16] = { 0x18, 0x96, 0x7a, 0x7e, 0x7e, 0x6e, 0x9a, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; holeydma reversed scattered(16,6) char spaceship[96] = { 0x00, 0x00, 0x30, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x94, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x94, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x94, 0x00, 0x00, 0x00, 0x00, 0xb9, 0xd6, 0x00, 0x00, 0x10, 0x00, 0xba, 0xd6, 0x00, 0x40, 0x13, 0x30, 0xba, 0xd6, 0x80, 0x4c, 0x20, 0x30, 0xa9, 0x96, 0x80, 0x80, 0x20, 0xd2, 0xa9, 0x96, 0x68, 0x80, 0x20, 0xd2, 0xa9, 0x96, 0x68, 0x80, 0x00, 0x5a, 0xaa, 0x5a, 0x5a, 0x00, 0x32, 0x5a, 0xaa, 0x5a, 0x5a, 0x80 }; holeydma reversed scattered(16,6) char spaceship_1[96] = { 0xda, 0x5a, 0x66, 0x59, 0x5a, 0x68, 0xda, 0x9e, 0x6a, 0x5a, 0x6b, 0x68, 0xda, 0x9a, 0x68, 0x52, 0x6a, 0x68, 0xda, 0x9a, 0xa0, 0x50, 0x6a, 0x68, 0xfb, 0x98, 0xe0, 0x60, 0x62, 0xec, 0x00, 0x98, 0x30, 0x80, 0x62, 0x00, 0x00, 0x98, 0x20, 0x40, 0x62, 0x00, 0x00, 0x48, 0x20, 0x40, 0x12, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; holeydma reversed scattered(16,1) char exhaust1[16] = { 0x3c, 0xbe, 0xaa, 0xaa, 0x98, 0x24, 0x18, 0x10, 0x18, 0x14, 0x04, 0x24, 0x14, 0x10, 0x14, 0x04 }; holeydma reversed scattered(16,1) char exhaust2[16] = { 0x3c, 0xbe, 0xaa, 0xaa, 0x1a, 0x24, 0x08, 0x24, 0x18, 0x10, 0x18, 0x14, 0x04, 0x24, 0x14, 0x10 }; holeydma reversed scattered(16,1) char exhaust3[16] = { 0x3c, 0xbe, 0xaa, 0xaa, 0x9a, 0x20, 0x18, 0x24, 0x08, 0x24, 0x18, 0x10, 0x18, 0x14, 0x04, 0x24 }; holeydma reversed scattered(16,2) char exhauststart[32] = { 0x03, 0xc0, 0x3f, 0xfc, 0xae, 0xee, 0x26, 0x64, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; const char collision_bullet_spaceship[78] = {0x03, 0x80, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x0f, 0xe0, 0x0f, 0xe0, 0x0f, 0xe0, 0x3f, 0xf8, 0x7f, 0xfc, 0x7f, 0xfc, 0x7f, 0xfc, 0x7f, 0xfc, 0x7f, 0xfc, 0x7f, 0xfc, 0x7f, 0xfc, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x3f, 0xf8, 0x3f, 0xf8, 0x1b, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define NB_SMALL_SPRITES 32 ramchip short sp_xpos[NB_SMALL_SPRITES], sp_ypos[NB_SMALL_SPRITES]; ramchip char sp_direction[NB_SMALL_SPRITES]; ramchip char exhaust_state; ramchip char spaceship_x, spaceship_y, spaceship_state, spaceship_state_counter; void main() { char i; multisprite_init(); // Grey palette *P0C1 = 0x04; *P0C2 = 0x08; *P0C3 = 0x0b; // Blue palette *P1C1 = multisprite_color(0x84); // Dark blue *P1C2 = multisprite_color(0x87); // Light blue *P1C3 = multisprite_color(0xac); // Turquoise // Green palette *P2C1 = multisprite_color(0xd4); // Dark green *P2C2 = multisprite_color(0xd8); // Light green *P2C3 = 0x0f; // Fire palette *P3C1 = multisprite_color(0x1c); // Yellow *P3C2 = multisprite_color(0x37); // Orange *P3C3 = multisprite_color(0x43); // Red // Initialize spaceship state spaceship_x = 80 - 6; spaceship_y = 180; exhaust_state = 0; spaceship_state = 0; // Initialize small sprites { char xpos, ypos; for (ypos = 0, xpos = 0, i = 0, X = 0; X != NB_SMALL_SPRITES; xpos++, ypos++, X++) { sp_xpos[X] = xpos << 8; sp_ypos[X] = ypos << 8; sp_direction[X] = i++; if (i == 24) i = 0; } } // Main loop do { multisprite_flip(); joystick_update(); if (spaceship_state < 2) { if (joystick[0] & JOYSTICK_LEFT) { if (spaceship_x) spaceship_x--; } else if (joystick[0] & JOYSTICK_RIGHT) { if (spaceship_x < 160 - 13) spaceship_x++; } if (joystick[0] & JOYSTICK_UP) { if (spaceship_y) spaceship_y--; exhaust_state++; if (exhaust_state == 13) exhaust_state = 10; } else { exhaust_state = 0; if (joystick[0] & JOYSTICK_DOWN) { if (spaceship_y < 224 - 33) spaceship_y++; } } } char draw_spaceship; if (spaceship_state == 0) { draw_spaceship = 1; } else if (spaceship_state == 1) { // Blinking returning spaceship draw_spaceship = spaceship_state_counter & 8; spaceship_state_counter--; if (spaceship_state_counter == 0) { spaceship_state = 0; } } else if (spaceship_state == 2) { char *gfx, x, y; if (spaceship_state_counter >= 16) { gfx = explosion1; } else if (spaceship_state_counter >= 12) { gfx = explosion2; } else if (spaceship_state_counter >= 8) { gfx = explosion3; } else if (spaceship_state_counter >= 4) { gfx = explosion4; } else gfx = explosion5; x = spaceship_x - 6; y = spaceship_y - 12; if (y < 0) y = 0; else if (y >= 224 - 48) y = 224 - 49; multisprite_display_big_sprite(x, y, gfx, 6, 3, 3, 0); spaceship_state_counter--; if (spaceship_state_counter == 0) { spaceship_state = 1; spaceship_state_counter = 100; } draw_spaceship = 0; } if (draw_spaceship) { multisprite_display_big_sprite(spaceship_x, spaceship_y, spaceship, 6, 0, 2, 1); // Draw exhaust if (exhaust_state > 0 && spaceship_y < 224 - 25 - 16) { char x, y; y = spaceship_y + 24; if (exhaust_state < 10) { x = spaceship_x + 2; multisprite_display_small_sprite_ex(x, y, exhauststart, 2, 3, 0); } else { char *gfxptr; i = exhaust_state - 10; gfxptr = exhaust1 + i; x = spaceship_x + 4; multisprite_display_sprite_ex(x, y, gfxptr, 1, 3, 0); } } } for (i = 0; i != NB_SMALL_SPRITES; i++) { char xbullet, ybullet; X = i; Y = sp_direction[X]; sp_xpos[X] += dx[Y]; sp_ypos[X] += dy[Y]; xbullet = sp_xpos[X] >> 8; ybullet = sp_ypos[X] >> 8; if ((xbullet < 5 && (dx[Y] >> 8) < 0) || (xbullet >= 150 && (dx[Y] >> 8) >= 0)) { sp_direction[X] = horizontal_pingpong[Y]; } if ((ybullet < 5 && (dy[Y] >> 8) < 0) || (ybullet >= MS_YMAX - 20 && (dy[Y] >> 8) >= 0)) { sp_direction[X] = vertical_pingpong[Y]; } multisprite_display_small_sprite_ex(xbullet, ybullet, bullet, 1, 3, 0); if (spaceship_state == 0) { multisprite_compute_collision(xbullet, ybullet, 4, 8, spaceship_x, spaceship_y, 12, 24, collision_bullet_spaceship); if (multisprite_collision_detected) { // Explosion spaceship_state = 2; spaceship_state_counter = 20; } } } } while(1); } Next will be an example of using RAM to make a faster scrolling than using ROM, paving the way to 60fps shmups... example_collisions.mp4 example_collisions.a784 points
-
Give him a break. He just started a full time job in addition to the overtime job he has running AtariAge. It's more than likely overwhelming. I have a full time job and run an automation company on the side. Time is not as easy to come by as people who have only one job think.4 points
-
4 points
-
I'm not really sure I understand what all these "Kirk threads" are doing, and why so much effort to argue about them. I'm not taking any sides or anything silly like that, I just don't get it. To me, it seems all kinds of wonky and pointless from all angles. Like... Kirk: Check out this SNES racing game mock up that someone should totally do on the SNES since it can totally do it if someone just would. Also, everyone is ignored! Everyone else except one: You're ruining the internet! You've opened a seal that's gonna bring the apocalypses! Dooooommmm...... That one: Kirk is so dreamy 😍 So yeah, I don't get it.4 points
-
He actually sadly passed away. A few guys came around and drank all the Kool Aid.4 points
-
@OldSchoolRetroGamer I think what needs to be done here to be fair to ALL parties is simple: All these posts of proposed ideas are about design, ie: homebrew. MOVE this to the homebrew section and return normal discussion to this GAMING (SNES) section of the board and let the developers speak in their space.4 points
-
But they’re tasty bait! I like that they’ll regenerate if a bug dies, which is nice when they’re worth more. Of course, nothing like the bonus stage. Speaking of which... I finally got Special!! 190,700 I also got an Extra, which helped make up for when I got baited by a prize and died. I don’t think it was worth it 🙄 But something that’s worth noting that happened to me: if you go for a veggie and there’s still a skull left, be very aware of where the bugs are. If one dies, it’ll regenerate on top of the veggie and on top of you if you’re currently eating it haha but boooo.4 points
-
4 points
-
My mind is blown. Huge Trek fan and never knew this. See, Atari buying AA has paid off already4 points
-
He’s a behind the scenes guy. I was delighted to learn that he directed Muppet Bohemian Rhapsody.4 points
-
Yes, reminds me of this scene: Love it they got the same guy in Star Trek Picard for that episode. Yes, the same guy reprising the proverbial 80s punk character. When I see a boom box like that.... the image comes to mind. Sorry about not editing the photo. Still perfect 80s. It isn't 80s without the punk. Movie trivia, he actually recorded the punk music clips and it was him.4 points
-
3 points
-
It's more that he goes around shitting on other consoles homebrew scenes while begging the SNES scene to make demos for him to use as ammunition in his personal console war. To add insult to injury, the demos he's demanding they make for him most of the time aren't really feasible to work on the hardware or just flat out beg the question "Why?". When he gets the reaction you'd expect from that kind of behavior, or god forbid people suggest he take the time to learn how to do it himself, he explodes.3 points
-
2023-09-24 19-44-10.mp4 👍 (NOTE TO GATEKEEPERS AND ELITISTS: Unless you yourselves have previously converted PNGs into SNES ROMs, you have no authority and thus cannot critique me or my methods)3 points
-
Why don't you prove you can even do one of those large Goomba's with the window layer like your describing before claiming you can do 3. Because until you prove otherwise, I'm pretty sure the hardware flat out doesn't work the way you think it does to allow for doing that.3 points
-
If things haven't changed much from 8 years ago, the forum preferences would be Heavy 6er (35%), Light 6er (20%), Vader (15%), 4 Switch Woodgrain / Sears Telegames / Jr.(~10% each) I owned a Telegames 6 Switch, and a Vader, both won in a raffle. Still have them today, but only after cleaning out my parents old house, i had to rebuy 2 from ShopGoodwill (first one was defective), so i now own 4 models. I think I prefer the look of the 6-switcher, and I think I remember the buttons on the heavy were better. But, mostly I play my Atari Flashback X, so I guess I prefer it.3 points
-
One of the woodies for me personally as someone who never owned an Atari back in the day. You don't get more 70s than simulated woodgrain on shag carpet!3 points
-
3 points
-
I'm a huge fan of Taito's late-gen SNES stuff, especially the RPGs. Energy Breaker, Lufia II, and Chaos Seed all have a really cohesive "feel" to them while being wildly different games, and I love all of them. Energy Breaker and Chaos Seed especially have a lot of crunchy mechanics, fantastic soundtracks, and make great use of the hardware for gorgeous pixel art and nifty effects. I would have no problem putting those three right up there with Square and Enix's best on the system.3 points
-
Yep. In fact there is also now a variant of the song he did for Star Trek Picard. " I still hate you."3 points
-
This is Kirk Thatcher, and here’s a link to the lyrics of the “song” on the boombox, which he wrote: https://memory-alpha.fandom.com/wiki/I_Hate_You3 points
-
3 points
-
Getting there slowly. 4 months of freedom. got finally a desk and chair yesterday. now next step is to get my own place. and then finally unpack my ti99 and other retro systems. but at least now i can sit down and do some online work via my laptop. thanks everyone!3 points
