+mksmith Posted May 28, 2019 Share Posted May 28, 2019 Arkanoid The era and time of this story is unknown. After the mothership “Arkanoid” was destroyed, a spacecraft “Vaus” scrambled away from it. But only to be trapped in space warped by someone…… Download link below How to play You control a paddle (the spacecraft Vaus) at the bottom of the screen which you use to deflect an energy ball towards rows of “Bricks” at the top the screen, thus destroying them and eventually clearing the screen to progress to the next level. Certain bricks when destroyed release power-up capsules which grant additional powers such as capturing the energy ball, equipping your Vaus with a laser cannon or opening a warp gate allowing you to escape to the next level. The final 33rd stage is a confrontation between the Vaus and the entity “Doh”. To destroy the Doh and return from distorted space, hit the Doh repeatedly with your energy ball whilst avoiding the deadly projectiles he spits from his mouth. Controls Move the Vaus left and right to direct the energy ball back towards the bricks. The position the ball hits the Vaus will determine the direction of the energy ball. To change settings, on the Titlescreen press Select to change controller and left difficulty switch to change between Novice and Arcade State of the game This is an work in progress release. The following has been completed: Title/High Score/Credits, Intro, Outro and Game Over screens Difficulty - novice (3 lives) or arcade (2 lives). 20,000, 60,000, 60,000+ for additional lives Music (Pokey) and sound effects (Pokey and TIA) Controls: paddle, driving controller, trakball, joystick, Amiga or ST mouse (press Select to change controller) Variable speed ball movement and collisions All 33 levels and final DOH level Capsules layout, selection rules, dropping and animations. Activity on collection: Enlarge (E) - makes the vaus bigger Laser (L) - destroy bricks with your laser weapon Catch (C) - catch and hold the ball, press button to release (auto-releases after a period of time) Break (B) - open a warp gate and leave the level - 10,000 bonus points Slow (S) - slow the speed of the ball Disruption (D) - split the ball into 3 Extra Life (P) Brick animations (start of level) Vaus animations (transitions between normal, laser and large or any combination) In progress/to be started: Finalise intro/outro animations (in progress) Flying enemies (in progress) Brick animations (specific bricks on collision with the ball) High Score entry Lives indicator Fix ball collision sounds Demo The game is currently in beta and the demo release contains the first 10 levels and generally full functionality of the game. The game will be available for purchase on cart in the near future from AtariAge. Pokey Sound Arkanoid currently requires Pokey support to hear the music (you will not hear anything without it) but most sound effects (using TIA) will be heard regardless. A separate release with TIA music will be made available in the future. Note: if you are using A7800 to play the game you will need to activate the XM Expansion Module cart to hear the POKEY sound for the time being: command line: a7800 a7800 -cart1 xm -cart2 arkanoid.78b.a78 Emulation The A7800 emulator is the recommended emulator for playing Arkanoid on your computer and provides full support for the Pokey music contained in the game. The ProSystem emulator is no longer supported. Credits Thanks to the following people who though their contributions, wisdom and guidance are helping to create this game: Mike Saarna (code) Bobby Clark (music and sound) Marco Sabbetta (additional graphics) Robert Tuccitto, Steve Ramirez (testing) John Calcano (box, cart and poster design) Al Yarusso, CPUwiz (AtariAge) Latest release Demo release - contains first 10 levels + DOH level 20210103.arkanoid.demo.zip Previous releases 20191022.arkanoid.demo2.zip 40 1 Quote Link to comment Share on other sites More sharing options...
bikeguychicago Posted May 28, 2019 Share Posted May 28, 2019 This game needs paddle support. 12 Quote Link to comment Share on other sites More sharing options...
PacManPlus Posted May 28, 2019 Share Posted May 28, 2019 I have assembler code to handle paddles (used in Crazy Brix and Super Circus AtariAge). If there is enough time, we should be able to use it (how many DLIs are being used?) 7 Quote Link to comment Share on other sites More sharing options...
+mksmith Posted May 28, 2019 Author Share Posted May 28, 2019 Hey guys would love any help with that to get it going. I'm sorry Bob I'm not entirely sure how to measure that - still very new to the 7800. Any suggestions? Quote Link to comment Share on other sites More sharing options...
+Karl G Posted May 28, 2019 Share Posted May 28, 2019 Looks beautiful so far! A good Arkanoid port would be an insta-buy for me. Hopefully the paddle support can be figured out. Btw, I look forward to trying out Atari Dev Studio next time I dive into 7800 programming. 7 Quote Link to comment Share on other sites More sharing options...
DracIsBack Posted May 28, 2019 Share Posted May 28, 2019 Damn that just made my day. Love arkanoid 6 Quote Link to comment Share on other sites More sharing options...
Greg2600 Posted May 28, 2019 Share Posted May 28, 2019 Wow, excellent start on the port! Someone tried this like 8 years ago, but didn't get that far. 2 Quote Link to comment Share on other sites More sharing options...
+mksmith Posted May 28, 2019 Author Share Posted May 28, 2019 Btw, I look forward to trying out Atari Dev Studio next time I dive into 7800 programming. Karl - Atari Dev Stuio also incorporates bB and dasm for 2600 development Quote Link to comment Share on other sites More sharing options...
+mksmith Posted May 28, 2019 Author Share Posted May 28, 2019 (edited) Thanks everyone! been great learnings so far and like that I have a little more freedom than the 2600 offers. In between Atari Dev Studio updates I'll keep working away on it. If anyone can offer any suggestions to my programming issues please sing out. And if you have managed to try this on real hardware I'd be greatful to know also. Edited May 28, 2019 by mksmith 1 Quote Link to comment Share on other sites More sharing options...
+Karl G Posted May 28, 2019 Share Posted May 28, 2019 Karl - Atari Dev Stuio also incorporates bB and dasm for 2600 development Yeah, I know... I am in the middle of a project on the 2600 side that uses custom build scripts, etc. I may check it out anyway, but more likely I will try switching when I start a new project. 1 Quote Link to comment Share on other sites More sharing options...
PacManPlus Posted May 28, 2019 Share Posted May 28, 2019 Holy crap - I just checked it out... This looks amazing! We need to get paddle support in this game. Great job so far! 7 Quote Link to comment Share on other sites More sharing options...
+mksmith Posted May 29, 2019 Author Share Posted May 29, 2019 Hey Bob, Been doing a quick search for your paddle stuff. Do you have a little mod I can call (i'd assume I may need to call it at various times) during an update? I'm not sure on the amount of time available (drawwait may help...) Certainly willing to have a crack at getting it in. Quote Link to comment Share on other sites More sharing options...
PacManPlus Posted May 29, 2019 Share Posted May 29, 2019 You need to call it during a DLI. Here's the code from Super Circus AtariAge. I use two DLIs; one at the top of the screen and one at the bottom. (We know which one it is by the 'DLIFLG' variable - $00 is the top, $01 is the bottom.) The one at the top gets the paddle reads. The one at the bottom updates all of the movable objects. OUTP0 contains the value of paddle 0, and OUTP1 contains the value of paddle 1 (both in the right controller port. You would use INPT0 and INPT1 for the paddles in the left port): ; KERNAL - MAINTAIN THE ON-SCREEN DISPLAY DLI PHA ;STACK REGISTERS TXA PHA TYA PHA CLD LDA DLIFLG BEQ DLITOP JMP DLIBOTTOM DLITOP LDA #$01 STA DLIFLG DLIPADDLES LDA #$00 STA INPTCTRL ;PADDLES LDY #124 ;STANDARD PADDLES USE 104, 'BEST ELECTRONICS' USE 108 (OR 112 FOR ALL) DLIPLOOP STA WSYNC LDA INPT2 BMI DLISKIP0 STY OUTP0 DLISKIP0 LDA INPT3 BMI DLISKIP1 STY OUTP1 DLISKIP1 DEY BNE DLIPLOOP LDA #$80 STA INPTCTRL JMP DLIOUT ; THIS ROUTINE TAKES CARE OF THE LAST DLI ON THE SCREEN, THE 'VERTICAL BLANK ; ROUTINE'. DLIBOTTOM LDA #$00 STA DLIFLG ;RESET FOR TOP DLI INC RTLOCAL+1 ;INCREMENT CLOCK BNE DLICONT INC RTLOCAL DLICONT JSR LOADER ;LOAD UP NEXT FRAME DLIOTHER JSR TUNER ;DO TUNES JSR RAND ;UPDATE RANDOM NUMBER DLIOUT PLA ;UNSTACK AND LEAVE TAY PLA ;THIS IS WHERE MOST DLI'S LEAVE TAX PLA NULLRTI RTI I hope this helps. I'm not sure how to inject ASM code in basic, hopefully someone can help... 5 Quote Link to comment Share on other sites More sharing options...
+mksmith Posted May 29, 2019 Author Share Posted May 29, 2019 (edited) Thanks Bob! Certainly easy enough to inject asm with 7800basic - there are various ways (I did some stuff previously with bB). Just to make it work now! Maybe I can ask RevEng to help Edited May 29, 2019 by mksmith Quote Link to comment Share on other sites More sharing options...
Dauber Posted May 29, 2019 Share Posted May 29, 2019 Wow...I, uhhh....need this. 6 Quote Link to comment Share on other sites More sharing options...
Jinks Posted May 29, 2019 Share Posted May 29, 2019 Cart please!! 5 Quote Link to comment Share on other sites More sharing options...
DracIsBack Posted May 29, 2019 Share Posted May 29, 2019 This is a buy for me as well. Loves me some Arkanoid. But take your time and enjoy your craftsmanship ! 6 Quote Link to comment Share on other sites More sharing options...
TrekMD Posted May 29, 2019 Share Posted May 29, 2019 Excellent! 3 Quote Link to comment Share on other sites More sharing options...
+mksmith Posted May 29, 2019 Author Share Posted May 29, 2019 (edited) Thanks guys - would love to one day release a cart then my wife might understand the time and joy I get back from all this retro stuff! Anyway hopefully one day! Bob, I've managed to trim it down to the following code which I call at the start of my main loop: DLIPADDLES LDA #$00 STA INPTCTRL ;PADDLES LDY #124 ;STANDARD PADDLES USE 104, 'BEST ELECTRONICS' USE 108 (OR 112 FOR ALL) DLIPLOOP STA WSYNC LDA INPT2 BMI DLISKIP0 STY OUTP0 DLISKIP0 LDA INPT3 BMI DLISKIP1 STY OUTP1 DLISKIP1 DEY BNE DLIPLOOP LDA #$80 STA INPTCTRL DLIEXIT RTS Through A7800 I activate the paddle for joy2 and I'm getting readings from OUTPT0 and OUTPT1! Now the question is what am i getting back and how can I tie that back to the paddle control! Will have a scrounge around the forums... If anyone is interested to set this up in 7800basic: I inline the code (from an external file) at the end of my main bank (using inline paddles.asm) dim vars for OUTP0 and OUTP1 call temp1=DLIPADDLES() to process it Edited May 29, 2019 by mksmith 4 Quote Link to comment Share on other sites More sharing options...
+sramirez2008 Posted May 29, 2019 Share Posted May 29, 2019 Wow, this looks great and you can never have too many paddle games! 7 Quote Link to comment Share on other sites More sharing options...
+mksmith Posted May 29, 2019 Author Share Posted May 29, 2019 (edited) I've added a new build with the following changes: Paddle support?? Attach you paddles to the right port and change the controls to paddles (left/right on joystick) on the splash screen. You will need to most likely press the fire button on the joystick to start (not sure!!) Added another 4 levels Thanks to PacManPlus (Bob) for the assembly! Hopefully it will work as I cannot test it on real hardware. For the time being you will require both the joystick (left) and paddles (right) to be plugged in when using the paddle controller as I don't know whether the buttons map to existing (joy) functionality... Edited May 29, 2019 by mksmith 6 Quote Link to comment Share on other sites More sharing options...
RevEng Posted May 29, 2019 Share Posted May 29, 2019 Holy cow, what an amazing first 7800 project post. mksmith, between Atari Dev Studio and this, you're on fire! I'm using a 128kBANKRAM rom as I need to store some lookup tables in ram memory (for restoring the background under the bricks and (current) level brick hit tables) - is there a better way?Do all the backgrounds tile like the screen you've captured? You could store the character indexes in a 4x4 rom table, and use that to restore tiles. For hit tables, I tend to use the characters themselves, but that means you'll either need a single tile counter variable to check when they're all gone, or you need to scan the characters to check that condition - this can be spread across a few frames, for minimal CPU impact. With the amount of background tiles it appears my font cannot draw anything more than around 6 characters or so on a single line so have to spread them over multiple lines (ie. 'player 1' , 'round xx', 'game over'). You can do one of two things here. #1.Don't plot the background tiles on the lines with score info, since they're empty anyway. #2.Manipulate the background characters to draw the letters and digits you want. #1 is the easiest. #2 is the hardcore way to minimize the number of objects you're updating in a frame. Salvo uses #2, but I'd say only use that method if you're pushing the number of moving objects hard. For the same reason I can't display the number of lives at the bottom using images (might need one for 4 lives, 3 lives, 2 lives etc maybe??) Not sure. Certainly 7800basic can display sprites at the bottom of the screen. Here you might consider using characters and updating the background directly, since the code isn't that complicated. Not sure if DoubleBuffer will help with any of this but it appears due to the screenheight set at 224 this cannot be used (screen jitters) Yeah, this is an outstanding bug. There's a rounding error somewhere I need to track down. Double buffering would only help if you're dropping frames and getting object glitching as a result. 3 Quote Link to comment Share on other sites More sharing options...
Lord Thag Posted May 29, 2019 Share Posted May 29, 2019 This looks great. I'll buy one on cart in a flat second. 1 Quote Link to comment Share on other sites More sharing options...
Greg2600 Posted May 29, 2019 Share Posted May 29, 2019 Paddles = Awesome. Sadly like you, I can't test on real hardware. 1 Quote Link to comment Share on other sites More sharing options...
PacManPlus Posted May 29, 2019 Share Posted May 29, 2019 I'll be testing the paddles on the real thing in a little while... 7 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.