SlidellMan Posted June 8, 2020 Share Posted June 8, 2020 (edited) I finally decided to announce something that I have been working on: Heofonfīr. (O. E. for Heaven Fire) Genre: Space Shooter (Vertical) Levels: 5 I was thinking about Sting's Baroque spinoff called Baroque Shooting, and decided to do something similar for the 7800. So, I decided to re-read Steve Engelhart's 7800Basic tutorials, and started to code. However, I hit numerous roadblocks during the process, such as figuring out how to do vertical scrolling, enemies that attack, power-ups, bosses, endings, and other things not covered in the 7800 Basic tutorial. To prove that I am not pulling people's chains, I'll even post some of my graphics. Update: Functioning ROM file can be found in the last two posts. After loading it up in your favorite emulator, push fire and try it out. Update 02: The latest version of the ROM can be found in the latest post. Edited January 23, 2021 by SlidellMan Finally got a functioning ROM file. 17 Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/ Share on other sites More sharing options...
Jinks Posted June 8, 2020 Share Posted June 8, 2020 Cool will be excited to see more. As I can not think of any other vertical shooters besides Plutos and Xevious. 3 1 Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4558658 Share on other sites More sharing options...
+mksmith Posted June 8, 2020 Share Posted June 8, 2020 Good luck!! 1 Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4558684 Share on other sites More sharing options...
SlidellMan Posted June 8, 2020 Author Share Posted June 8, 2020 Thank you guys, but it would not have possible without RevEng, MKSmith, and SmittyB. To tell you the truth, I do better under one-on-one mentoring than I am in a classroom. Plus, I can share the original Main working file prior to the re-write. 3 Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4559009 Share on other sites More sharing options...
PacManPlus Posted June 8, 2020 Share Posted June 8, 2020 (edited) 13 hours ago, Jinks said: Cool will be excited to see more. As I can not think of any other vertical shooters besides Plutos and Xevious. Moon Cresta, Space Invaders, Meteor Shower, Astro Blaster, Astro Fighter... Ok, you meant *moving* vertical shooters. @SlidellMan Graphics look interesting! It will be nice to see them in context! *subscribes to thread Edited June 8, 2020 by PacManPlus 1 Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4559085 Share on other sites More sharing options...
Synthpopalooza Posted June 8, 2020 Share Posted June 8, 2020 Always wanted to see Zanac on the 7800 ... So this will be cool too Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4559096 Share on other sites More sharing options...
+Propane13 Posted June 8, 2020 Share Posted June 8, 2020 14 hours ago, Jinks said: Cool will be excited to see more. As I can not think of any other vertical shooters besides Plutos and Xevious. What about Planet Smashers? Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4559098 Share on other sites More sharing options...
Jinks Posted June 8, 2020 Share Posted June 8, 2020 13 minutes ago, Propane13 said: What about Planet Smashers? Your ship sits at the bottom same as galaga etc. Maybe I define it differently. Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4559111 Share on other sites More sharing options...
Jinks Posted June 8, 2020 Share Posted June 8, 2020 30 minutes ago, PacManPlus said: Moon Cresta, Space Invaders, Meteor Shower, Astro Blaster, Astro Fighter... Ok, you meant *moving* vertical shooters. @SlidellMan Graphics look interesting! It will be nice to see them in context! *subscribes to thread Yeah that is what I mean. A vertical scrolling shooter. Sorry if this sounded unappreciative of any of your work as I absolutely think you have provided a ton of great games to the 7800 both ports and originals. Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4559117 Share on other sites More sharing options...
PacManPlus Posted June 8, 2020 Share Posted June 8, 2020 No no not at all... I was just perplexed, until I realized what was actually meant. Anyway, sorry for the de-rail... Waiting (im)patiently for the next update from @SlidellMan Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4559119 Share on other sites More sharing options...
SlidellMan Posted June 8, 2020 Author Share Posted June 8, 2020 I have been working on this for over a week, and normally I keep my projects under wraps. However, I decided to start this thread just to keep myself motivated to see this to completion. Here's the original file before I decided to rewrite it into something more manageable. You guys are free to look at this just to see what I got right and what I have got wrong. main.heofonfir.bas 3 Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4559124 Share on other sites More sharing options...
SlidellMan Posted June 10, 2020 Author Share Posted June 10, 2020 Don't worry people, I am still working on this game. Example: character_select if joy0left then plotchars 'Lucelia Iustitia' 0 else if joy0right then plotchars 'Aeris Vis' 0 if joy0fire then return ; Player movement if joy0up then angel1_y=angel1_y-1:joyposup=1:joyposdown=0:joyposleft=0:joyposright=0 else if joy0down angel1_y=angel1_y+1:joyposup=0:joyposdown=1:joyposleft=0:joyposright=0 if joy0left then angel1_x=angel1_x-1:joyposup=0:joyposdown=0:joyposleft=1:joyposright=0 else if joy0right then angel1_x=angel1_x+1:joyposup=0:joyposdown=0:joyposleft=0:joyposright=1 if joy0fire0 then bullet_y=bullet_y-8 else if !joy0fire0 then bullet_y=0 if joy0fire1 then leohtning_y=leohtning_y-12 else if !joy0fire1 then leohtning_y=0 if joy0fire1 then fyryrblaest_y=fyryrblaest_y-10 else if !joy0fire1 then fyryrblaest_y=0 if joy0fire1 then yicel_y=yicel_y-8 else if !joy0fire1 then yicel_y=0 if joy0up then angel2_y=angel2_y-1:joyposup=1:joyposdown=0:joyposleft=0:joyposright=0 else if joy0down angel2_y=angel2_y+1:joyposup=0:joyposdown=1:joyposleft=0:joyposright=0 if joy0left then angel2_x=angel2_x-1:joyposup=0:joyposdown=0:joyposleft=1:joyposright=0 else if joy0right then angel2_x=angel2_x+1:joyposup=0:joyposdown=0:joyposleft=0:joyposright=1 if joy0fire0 then bullet_y=bullet_y-8 else if !joy0fire0 then bullet_y=0 if joy0fire1 then leohtning_y=leohtning_y-12 else if !joy0fire1 then leohtning_y=0 if joy0fire1 then fyryrblaest_y=fyryrblaest_y-10 else if !joy0fire1 then fyryrblaest_y=0 if joy0fire1 then yicel_y=yicel_y-8 else if !joy0fire1 then yicel_y=0 if joy1up then angel1_y=angel1_y-1:joyposup=1:joyposdown=0:joyposleft=0:joyposright=0 else if joy1down angel1_y=angel1_y+1:joyposup=0:joyposdown=1:joyposleft=0:joyposright=0 if joy1left then angel1_x=angel1_x-1:joyposup=0:joyposdown=0:joyposleft=1:joyposright=0 else if joy1right then angel1_x=angel1_x+1:joyposup=0:joyposdown=0:joyposleft=0:joyposright=1 if joy1fire0 then bullet_y=bullet_y-8 else if !joy1fire0 then bullet_y=0 if joy0fire1 then leohtning_y=leohtning_y-12 else if !joy0fire1 then leohtning_y=0 if joy0fire1 then fyryrblaest_y=fyryrblaest_y-10 else if !joy0fire1 then fyryrblaest_y=0 if joy0fire1 then yicel_y=yicel_y-8 else if !joy0fire1 then yicel_y=0 if joy1up then angel2_y=angel2_y-1:joyposup=1:joyposdown=0:joyposleft=0:joyposright=0 else if joy1down angel2_y=angel2_y+1:joyposup=0:joyposdown=1:joyposleft=0:joyposright=0 if joy1left then angel2_x=angel2_x-1:joyposup=0:joyposdown=0:joyposleft=1:joyposright=0 else if joy1right then angel2_x=angel2_x+1:joyposup=0:joyposdown=0:joyposleft=0:joyposright=1 if joy1fire0 then bullet_y=bullet_y-8 else if !joy1fire0 then bullet_y=0 if joy0fire1 then leohtning_y=leohtning_y-12 else if !joy0fire1 then leohtning_y=0 if joy0fire1 then fyryrblaest_y=fyryrblaest_y-10 else if !joy0fire1 then fyryrblaest_y=0 if joy0fire1 then yicel_y=yicel_y-8 else if !joy0fire1 then yicel_y=0 2 Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4560174 Share on other sites More sharing options...
SlidellMan Posted June 10, 2020 Author Share Posted June 10, 2020 (edited) For some befuddling reason, I tried to compile what I have written so far, and got an unrecognized keyword error with collisionwrap. As in, Error: Unknown Keyword. Just how do I correct this? Edited June 10, 2020 by SlidellMan Added a much-needed question. Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4560646 Share on other sites More sharing options...
RevEng Posted June 10, 2020 Share Posted June 10, 2020 I don't see collisionwrap referenced in what you pasted earlier. Is it referenced in your source code? Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4560663 Share on other sites More sharing options...
SlidellMan Posted June 10, 2020 Author Share Posted June 10, 2020 @RevEngIt's at line 16 in the original .bas file. Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4560729 Share on other sites More sharing options...
RevEng Posted June 10, 2020 Share Posted June 10, 2020 Ah, I see. Earlier I was looking at your excerpt, and didn't notice you posted the whole file earlier. 7800basic (and bB, and assembly) requires white-space before commands. I.e. you need a space or tab before any command. If there's no white-space, then the thing that's against the left-margin is considered to be a label. So your source code presently has a bunch of commands that the parser thinks are labels. Also, "else" doesn't work on a brand new line - it needs to be part of the original "if" line. 1 Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4560748 Share on other sites More sharing options...
SlidellMan Posted June 10, 2020 Author Share Posted June 10, 2020 Noted, and just did it. However, I don't have even a pre-alpha ROM on account of: Quote Complete. Cartridge data file must be at least 4K! 7800header 0.10 May 7 2020 22:32:58 *** ERROR: The file size of c:\Users\Shane\Documents\my7800projects\Heofonfir\heofonfir_main_rewrite.bas.bin is 0 bytes. 7800makecc2 v0.1 *** ERROR: The file size of c:\Users\Shane\Documents\my7800projects\Heofonfir\heofonfir_main_rewrite.bas.bin is 0 bytes. That was when I was trying to compile, but considering that it isn't anywhere near finished... Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4560857 Share on other sites More sharing options...
RevEng Posted June 10, 2020 Share Posted June 10, 2020 The very bottom of the compile messages won't be helpful, as they'll just summarise what happened with the header being added, and the cart being updated to CC2 format if required. Scroll up and there will probably be more helpful messages - it's quite likely you have further syntax errors to deal with. Earlier I just pointed out the most obvious of them. Attach a zip with the basic file and images, and I or someone else, can tell you what else is going wrong. Before a pre-alpha rom can be generated, your language syntax needs to be correct. 1 Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4560860 Share on other sites More sharing options...
SlidellMan Posted June 11, 2020 Author Share Posted June 11, 2020 Here. This includes all the graphics and a newer .bas file because the one I already uploaded was getting cluttered. heofonfir.zip Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4561014 Share on other sites More sharing options...
+mksmith Posted June 11, 2020 Share Posted June 11, 2020 Hey SlidellMan, Just looking through your code. I'm still trying to get it to compile but I've quickly seen a few things that might contribute to the compile failure: you are re-dimming system variables as variables ie. joy0fire0, joy0fire1, score0, score1 (not sure if this causes issues???) there are duplicate vars and labels such as ending_a there are a number of un-dimmed vars. ie. dim = $22f2 plotchars are a max length of 32 characters - they can be split using multiple plotchar calls to break that up If I rem out all the code below the incgraphics and add 'set tallsprite on' then I can see that your gfx blocks are full as you receive a graphics overrun in bank 0 message. The gfx blocks fill very quickly indeed and definitely a balancing act to fit everything in!! With your graphics - you have a number of those set at a height of 16, 24 and 32 pixels. As your zoneheight is set a 8 these can to be loaded with the 'set tallsprite on' command to ensure they are properly processed. The other issue you may have is your sprite animations are all within one image for an object - ideally you should split these into individual files, one for each frame of the animation for loading. You might be able to use 'set tallsprite spritesheet' here (I think images need to be stacked vertically to import them but I haven't yet used this feature). You may need to start afresh copying over your code in small chunks starting with the variables and make sure everything compiles without issue and slowly work your way through the source. I'd only include what gfx you need at the time to track the gfx blocks. Happy to try and help where I can ? 3 2 Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4561109 Share on other sites More sharing options...
SlidellMan Posted June 11, 2020 Author Share Posted June 11, 2020 @mksmith Thanks a bunch. It wasn't the first time that I have had to start a new main working file, but I'll do it. 2 Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4561672 Share on other sites More sharing options...
+mksmith Posted June 12, 2020 Share Posted June 12, 2020 30 minutes ago, SlidellMan said: @mksmith Thanks a bunch. It wasn't the first time that I have had to start a new main working file, but I'll do it. No probs! Let me know if you need a further hand ? 2 1 Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4561693 Share on other sites More sharing options...
SlidellMan Posted June 12, 2020 Author Share Posted June 12, 2020 (edited) I am in the process of separating the individual sprites from the sheets I made, and here's the letters for the title screen. The goal is to be efficient with these letters and have them wave on occasion. By the way, I don't think that the topic of strings was discussed in the 7800Basic Programming Tutorial, and is there like a 'plotstring' command? Edited June 13, 2020 by SlidellMan 3 Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4562320 Share on other sites More sharing options...
SlidellMan Posted June 13, 2020 Author Share Posted June 13, 2020 Thought I would post what the title screen logo should look like. By the way, I wonder if anyone knows what is the 7800basic string command? 4 Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4562932 Share on other sites More sharing options...
RevEng Posted June 13, 2020 Share Posted June 13, 2020 There aren't any high level string commands. You can plot any string of characters with plotchars. Unlike interpreted basics, 7800basic is meant to be as lean and fast as possible. In terms of low-level string manipulation, there's memset and memcpy, and roll-your-own with memory arrays and loops. 3 1 Quote Link to comment https://forums.atariage.com/topic/307778-my-7800-vertical-shooter-heofonf%C4%ABr/#findComment-4562950 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.