I've been learning Z80 ASM since March and made a few basic games (Pong, Snake) as practice, but I've been wanting to start a larger project I can upload to the archives, and I noticed that there aren't many ASM ports of Space Invaders to the greyscale calculators. It seems like a fairly manageable game (famous last words), so I figured I'd give it a shot. In terms of features, I want to add a leaderboard that displays the top 5 scores alongside names, but otherwise I want to keep the game as close as possible to the original, with a goal of finishing before Sept. 1. A screenshot of the title screen is below:

Hope you finish programming it soon! What will the sprites look like? Smile
Jeff calc 84 wrote:
Hope you finish programming it soon! What will the sprites look like? Smile


I made 8x8 sprites for the ship and UFO as well as 3 monsters with 2 frames each, I'm not an artist by any stretch, but they should be enough to get me by.

As for development, things have been progressing at a decent rate. I've finished the "Credits" and "Controls" menu options, and have the ship moving / firing missiles. A clip of what I have so far is below, though the artifacts don't exist on the emulator I'm using.

Nice progress! Sprite movement and bullets look good so far Smile
I once tried doing this in TI-BASIC. It did NOT go well. What is this being programmed in? AXE or raw ASM?
Monado07 wrote:
I've been learning Z80 ASM since March


Keep up the good work! By the way, are you using the Ion routines provided by most modern TI-84 Plus shells for your sprites, screen-copying, etc? I notice in the screenshot that you're using MirageOS; it's worth mentioning that Doors CS as a possible alternative, including the HomeRun feature that will let you repeatedly test without entering the shell every time, saving a few keystroke.
HydrideGS wrote:
I once tried doing this in TI-BASIC. It did NOT go well. What is this being programmed in? AXE or raw ASM?


I'm using raw ASM, I've looked into Axe before, and it seems intriguing, but I figured it would be better to dive into ASM first and maybe try Axe later rather than learning Axe first and not having much idea of the underlying compiled code.

KermMartian wrote:
Keep up the good work! By the way, are you using the Ion routines provided by most modern TI-84 Plus shells for your sprites, screen-copying, etc? I notice in the screenshot that you're using MirageOS; it's worth mentioning that Doors CS as a possible alternative, including the HomeRun feature that will let you repeatedly test without entering the shell every time, saving a few keystroke.


Thanks! I'm using the Ion and MirageOS routines, which have made development a lot easier than I expected. I'll make sure to check out DoorsCS though, it seems a lot more streamlined.

Overall, development has been virtually nonexistent for the past few weeks. Most of my time has been taken up by an intensive internship I'm doing that has me out in the sun for ~36 hours/week. By the time I get home, I just don't have the energy or desire to program. It's ending next week though, so things should start picking up again after that. The only thing that's changed since the last update is that I made some small optimizations to the text drawing routines that save about 100 bytes and write the title text to the graph buffer so I no longer have to redraw it every time the cursor is moved.
Welcome to the world of Z80 Assembly! It can be daunting at first, but also very satisfying Smile

I have a big soft spot for Space Invaders on the 83/83+, given that the version by Movax was my first exposure to Z80
My internship finally ended a few weeks ago, and I've been making good progress on the game. I improved the missile routines so it can handle one from the player as well as three from enemies, and I started working on implementing the enemies. They're all stored in an array with values for whether they exist, their type and their X/Y coordinates, so I'm hoping that adding movement and collision will be pretty straightforward, though I need to work out a bug where the enemies are blinking when they should stay written to the graph buffer. I'll attach a screenshot of what I have so far below.

I've fixed the issue and started making progress on movement, changing the coordinates was fairly easy as I predicted, though making sure the sprites were erased before updating them was a bit tricky. So far they're just moving to the right, but I don't think getting them to move side-to-side and down will be too difficult. Another screenshot is below
Hey Monado07, this is looking awesome, hope you're still working on it! z80 is still my favorite assembly language and the 83+ one of my favorite platforms, so please let us know if you have any questions or would like some code reviews or anything!

Are you writing to a graphbuffer or directly to the screen? If you're writing to a graphbuffer, generally in your main game loop you would XOR all your sprites, call your fastcopy routine, then XOR them all again at the same location to clear them (or just clear the gbuf). There are also some custom fastcopy routines that will erase the graphbuffer as they send it to the LCD, such as the second one here ("Copy the gbuf to the screen and clear graph buffer (fast)"):
https://wikiti.brandonw.net/index.php?title=Z80_Routines:Graphic:Fastcopy
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement