Jump to content

SmittyB

+AtariAge Subscriber
  • Posts

    861
  • Joined

  • Last visited

Everything posted by SmittyB

  1. I'd go so far as to say 7800basic is a great tool for learning 6502 assembly. It's trivial to look at the compiled output that's sent to the assembler and learn how the higher level commands break down into simpler instructions. You can then take that code and make small optimisations based on assumptions the compiler can't make until you're confident to just do certain things in assembly. I write most of my code in assembly just because I'm comfortable with it, but I leave all the tedious work like converting graphics data, playing sounds, managing the screen and more to 7800basic. If there's some complicated logic I can always write it in 7800basic and move on whereas otherwise it might have scuppered the whole project.
  2. I don't know why I assumed you were talking about the X position but I did and that's where the 160 figure comes from. The visible Y is from 0 to either 191, 207, or 223 depending on your screenheight setting. The same rules about 192 / 208 / 224 to 255 being offscreen still count and things will wrap around.
  3. Looks like the compiler isn't sure how to interpret it. In 8 bit maths, -1 is the same as 255 where the value of the byte underflows from its minimum to maximum values. If you just want to stick a negative number in you can do so by subtracting from 256. For example -32 would be 256-32=224. The visible part of the screen is from 0 to 159 so that gives you 96 pixels that are offscreen to work with.
  4. SmittyB

    7800 GD

    It's in production currently unlike Dragonfly, and supports more ROM formats than Concerto currently does. Then on top of that it's the only one to support the custom chips that power Rikki & Vikki for those who missed the cartridge release, mod-less RGB-out is a big deal for some people including me, it allows for save states and cheats which I don't believe any other 7800 cart has, and as an added bonus it supports 2600 games. There are some games that make use of the Yamaha with the best examples I can think of being Pac-Man Collection Anniversary Edition, and 1942. I'm not sure if anything uses dual pokeys yet apart from music demos, but as support for it becomes common it's more likely we'll get games that use it.
  5. Don't worry, Team 17's Body Blows and Body Blows Galactic exist for all your 1-button Street-Fighter-clone needs
  6. I guess it's possible it's registering to the left on the next line but that would be quite a lot of a delay. Either way the calibration will probably sort it out.
  7. I don't want to derail the thread too much, but it's coming along very well thanks. I rewrote the original version from scratch to take advantage of some ideas I had and it's all the better for it. I'm pretty much where I was with the old version plus some new extras like quadtari support. I'm not sure how practical 4 lightguns will be with the screen flashing away all the time but the option is now there for whoever wants to play it that way.
  8. But yes I am working on a duck-themed lightgun project called Ducks Away. It is not Duck Hunt because frankly DH is dull as dishwater and I can do better. For the lightgun I use a target selection method like DH which flashes individual targets on screen and it means the gun only needs to tell me if it saw something that frame. I tried the screen-flash method but while I could reliably get the Y position, the X position requires precision timing to be anything close to accurate and I just couldn't make it work. If the response times are affected by those components aging as @DrVenkman mentioned then that will throw off the accuracy by quite a lot. I know the 8-bits read the gun as an analogue device but I don't know the specifics, but on the 2600 /7800 the screen-flash method means polling the gun in a tight loop. I believe Crossbow only manages to poll it about 16 times per line giving an accuracy of down to the nearest 20 pixels give or take. If the gun responds late it could miss being polled and be out by nearly 40 pixels.
  9. If a game uses 7800basic's saving routines then it should support High Score Cart. It'll prioritise using an AtariVox/SaveKey if one is detected, otherwise it'll fall back to using the HSC.
  10. @Karl G, if you dremel off the extra 7800 cart pins and plug it into a VCS you unlock Knight Rider 2600.
  11. Where were you a week ago when I was trying to figure out the Quadtari? 😁 I'm curious as to why you're checking the fire button bits directly instead of using the basic command as I've not found that to be necessary. Admittedly I don't have a Quadtari to test with and have been relying on @brpocock generously donating their time. Knowing that 8 wsyncs is enough of a delay for consistent reading is interesting because for some games it should then be possible to read all ports each frame instead of alternating. Thanks for the example code. There's surprisingly little information about the Quadtari that I could find and what there was contradicted itself so even though supporting it is very simple, understanding what was needed to get it going was not. I hope having some examples to work from will encourage others to give it a go.
  12. As well as the power supply (or rather its proprietary connector), a fairly common failure is in the switches used for the console. If you open the case you should be able to try bridging the power switch with a paper clip to see if that kicks it into life. They're fairly standard switches so if you have some soldering experience they shouldn't be tricky to replace.
  13. I believe it's not the start of the graphic but the start of the character set. When you use the 'characterset' command, internally the 7800 is being pointed to the page in memory where the graphics data sits, and all 'indirect' graphics (tiles) are offset from that value. What I like to do is make sure the first characters in the set are 0-9 then A-Z so that the offsets match any hex values I might use for testing.
  14. Rather than the words you need to use symbols for Boolean logic. The below is taken from the ever-useful reference documentation at - https://www.randomterrain.com/7800basic.html#conditional_logic
  15. I renewed my 2 year subscription back in May so would presumably be covered. Yep definitely not seeing that. Bummer, I might have missed out on the discount when I last ordered something before the UK import rules changed. Yeah I'll send him a message. I'm still dithering over what to get with the budget I have.
  16. There's a subscriber discount? Can't say anything changes when I'm logged in to the store or not.
  17. It's been a while since I've looked at PlotMapFile but my guess would be that your tileset in the tmx is called 'Base_Area' and that's what 7800basic is looking for, but of course your tileset is actually called 'Base_Area_Tiles' so it's not finding it. If you open the tmx file in a text editor you should see a line like - <tileset firstgid="1" name="Tiles" tilewidth="8" tileheight="16" tilecount="128"> - and if you change the name to Base_Area_Tiles that might sort the issue for you.
  18. As somebody who has no experience writing music or using trackers the 7800basic tracker has enabled me to make some pretty cool sounding things that I'm proud of. I'll happily post the source for any of them if somebody's interested. Spire of the Ancients - Title Theme (I could never get this quite how I wanted but that's my lack of musical experience) SotA Theme.mp3 Spire of the Ancients - Underground Theme SotA Underground.mp3 Spire of the Ancients - WIP Graveyard Theme SotA Graveyard Music Test.mp3 Spire of the Ancients - WIP Overground Theme SotA Music Test 1.mp3 Plink - Title Theme (Somewhat based on a mashup of Assault on Precinct 13 and Halloween) Plink.mp3 Plumb Luck - Summer 3rd Movement Plumb Luck - Summer 3rd Movement.mp3 Plumb Luck - The Plumber's Apprentice The Plumber's Apprentice.mp3 Plumb Luck - In the Hall of the Mountain King PL Mountain King.mp3
  19. Thanks for checking. To be honest it might not be anything to do with the Concerto, just that of the handful of people who've played it the few to experience the issue have been using a Concerto. It could easily be something with the console variation.
  20. Looking at those glitches again it looks a bit like what some people were getting on the title screen of Plumb Puck DX with Concerto. Might be worth having a look at that too.
  21. Not inherently, if anything PAL60 would look sharper on a lot of CRTs due to the lower line count. When it comes to the 7800 however it's not possible to generate a PAL60 signal because MARIA's regional version controls the line count unlike TIA where it's all manually controlled and a PAL TIA will happily send lines with NTSC timings. A lot of people are using 7800basic these days and it automatically includes code to set up both PAL and NTSC displays depending on the console so it's just down to the developer to check the region and change colours or timings accordingly. You won't get PAL60 but most of the awkwardness of conversion is done for you.
  22. It's been a while. Here is what I believe may be the finished build of Plumb Luck DX. I've been sitting on it for a few weeks as I haven't been sure whether to post it or not, but have at it. Some Concerto users seem to have graphical issues on the title screen (seemingly to do with reading the graphics from RAM), but it's fine on Dragonfly from what I can tell. I'm not aware of any bugs and while I have rigorously tested it on my PAL machine it would be good to hear from other NTSC users. Play on JS7800 ============== ~Story so far~ ============== This is it. Your boss Plumb-Bob has landed the biggest contract you've ever seen and he's going to need it if your small plumbing business is to survive. What he didn't know before he signed however is that many other contractors have been hired and fired during the construction of this toxic waste facility so as Plumb-Bob's apprentice you'll need to contend with their leftover piping, and to make matters worse the pumps will be turned on today whether the work is finished or not. Delays are unacceptable when big money is on the line. If you're going to complete what was started, claim your paycheque, and avoid an environmental disaster, it's going to take all of your skills, quick thinking, and plumb luck! ~Plumb-Bob's Top Tips~ Only sleep on the job when paid by the hour. ================= ~Getting Started~ ================= Plug a compatible 1-button or 2-button controller into the left controller jack, and optionally plug a SaveKey or AtariVox into the right controller jack. Turn on the console and the opening credits will appear. After a short time the screen will fade to black at which point the title screen will appear and periodically cycle to the high score screen. Pressing either fire button will transition to the gameplay screen at which point the game will start. ~Plumb-Bob's Top Tips~ If a High Score Cartridge, SaveKey, or Atarivox is connected holding SELECT + RESET while turning on the console with POWER will delete any Plumb Luck save data on the device, resetting progression and clearing high scores. ================= ~Peripherals~ ================= Plumb Luck supports the use of both 1 and 2 button controllers. When using a 2-button controller the right fire button can be used to speed up the flow of slime which can also be done with the SELECT button for 1-button controller users. If a High Score Cartridge, SaveKey, or AtariVox is available then stage progression and up to 3 high scores will be saved automatically. An AtariVox will additionally allow the use of high quality sound effects and voice cues. Please refer to your device's instructions for setting these up. ~Plumb-Bob's Top Tips~ Plug in an AtariVox to hear me speak. ================= ~Stage Select~ ================= Before you begin playing you will need to select a stage as indicated by the words "Stage Select" in the score board, and the flashing markers either side of the play area. The currently selected stage is indicated by the level number 'LVL' and the target length is indicated by the 'T'. If progress has previously been saved then the initially selected stage will be the highest level reached, and on subsequent plays it will be the level last attempted. ~Controls~ Left - Select the previous stage Right - Select the next stage Up - Select the stage 10 ahead Down - Select the stage 10 previous Left Fire Button / Right Fire Button - Start the chosen stage RESET - Show the high score screen ~Plumb-Bob's Top Tips~ If you're aiming for a high score, try starting on a stage you find easier. ================= ~Gameplay~ ================= Having started a stage the reservoir on the left of the play area will begin to deplete. Once it has emptied slime will begin to pour from the pump, and it's your job to place pipe sections to divert the slime to the drain while making sure to meet or exceed the target length while doing so. Your cursor will start next to the pump, move it around the play area with the joystick and press the fire button to place a pipe section from the top of the stack. You can freely place a pipe section over another, but it will take longer than placing one in an empty space. You may not place pipe sections over solid blocks, the pump, drains, or any pipes that already contain slime. Some stages will include pipes already fitted, but these are not special; you may freely replace empty pipes but not ones with slime. ~~Pump~~ ~~Drain~~ ~~Solid Block~~ ~Plumb-Bob's Top Tips~ Plan ahead! It's faster to put a pipe section where it can be used later than it is to discard it. Crossover sections are special in that they act as both horizontal and vertical pipes, and once slime has passed through one way it can be directed to go through the other. As well as being versatile, completing a loop by filling a crossover section with slime in both directions will increase your score multiplier by 1 up to a maximum of 4x. ~~Crossover~~ ~Plumb-Bob's Top Tips~ Complete loops early to make the most of the multiplier bonus. Remember that all your efforts will be for nothing if the length of the pipe between the pump and the drain is not greater than or equal to the target number indicated on the scoreboard at the start of the stage. "T" will count down as the slime progresses, indicating the number of sections it still needs to pass through. The pump and drain do not count towards this total. If you succeed in completing a pipeline from pump to drain with a suitable length then you will complete the stage and be presented with the next one. Gameplay will pause to give you time to assess the stage and target length; press either fire button to start the stage. Your score carries over from stage to stage as you complete them in sequence. If you have not previously reached this level then your progress will be recorded to your save device. If the slime flows into an empty space, a solid block, or the side of a pipe facing the wrong direction then it will spill and you will fail the stage. If you complete the pipeline but it does not meet the target length you will also fail the stage. When this happens you will either be presented with the high score screen to enter your new score, or after a short pause the stage will reset and you'll be prompted to select a stage to try again. ~Plumb-Bob's Top Tips~ Keep your eye on the slime. A single mislaid pipe will throw your plans out the window. ~Controls~ Left / Right / Up / Down - Move your cursor around the play area Left Fire Button - Place the pipe section topmost on the stack on to the play area in the cursor's position Right Fire Button / SELECT - Hold to speed up the slime RESET - Quit the stage Right Difficulty Switch - Set to the B (left) position to auto-detect whether to play AtariVox or console sound effects. Set to the A (right) position to disable AtariVox sound effects. Speech will still play. Note: SaveKey users should should set this switch to A. ================= ~Expert Levels~ ================= Once you have reached level 127, levels 128 to 254 will be available when selecting a stage. These are the same stages as levels 1 to 127 but the slime flows at twice the normal speed. This means you have half the time to prepare before the reservoir is depleted, and will need quick reflexes to stop it spilling. If your progress is recorded, level 127 will be the stage initially selected when you turn on your console regardless of your last stage played. ~Plumb-Bob's Top Tips~ Stay hydrated. Plumbing is thirsty work. ================= ~Scoring~ ================= As slime flows through the pipes your score will continuously increase. As you complete loops with crossover sections the amount your score is increased by is multiplied. Starting at 1x for no loops, then 2x, 3x, and finally 4x after completing 3 loops in a stage. If your score multiplier is already at the maximum of 4x when you complete a loop you will instead be awarded a bonus 75 points. Completing a stage will award you a bonus of 300 points Placing a pipe section subtracts 5 points from the score, so it's not always a good strategy to wait for the 'correct' pipe section to reach the top of the stack. ~Plumb-Bob's Top Tips~ Make the most of the space in each stage to maximise your score. ================= ~High Score Entry~ ================= If you are successful at achieving one of the top 3 highest scores you will be shown the high score screen and prompted to enter your initials. A cursor will flash under the initials next to your score. Once you have confirmed your high score entry the scores will continue to be displayed; press the fire button again to return to the game. ~Controls~ Left / Right - Move the cursor between the 3 initials Up / Down - Change the character at the cursor's position Left Fire Button / Right Fire Button - Confirm high score entry ~Plumb-Bob's Topmost Tips~ Check out other great games from AtariAge! Need a specific pipe section quickly? Place the unwanted ones in empty spaces instead of waiting for them to be replaced. Make the most of the reservoir to get a head-start on the slime, especially on expert levels. PlumbLuckDX_230410_RC2.a78
  23. CTRL can be changed on the fly, and there's at least one demo floating around that shows splitting the screen vertically, but I don't think that's practical for more than static displays. The most reliable way to change it is to wait for an interrupt of some sort, then count lines by writing to WSYNC as one would on the 2600, and then write to CTRL (and sCTRL in 7800basic) immediately after the last WSYNC to make it consistent. MARIA will never sort things. I believe it keeps 2 lines of graphics in its internal memory at a time, the one it's currently drawing and the one it's building for the next line. As it steps through the DL entries it stamps the graphics in their spot in the buffer so it's down to the programmer to make sure that all happens in the right order.
  24. The difference is that both halves are drawn as background if transparency is enabled so you lose out on a bunch of colour combinations.
  25. Transparency doesn't interact well with the 320 modes as like with positioning it's still based around the 160 modes. What happens is that MARIA still interprets things in pairs of bits so only '00' is actually transparent, but '01' or '10' are not and instead are drawn in the background colour. Disabling transparency entirely via "kangaroo mode" allows the '01' and '10' combinations to draw as expected, but of course then you can't overlap graphics. I'm not sure if 7800basic has a way of toggling kangaroo mode, but it's set with bit 2 of the CTRL register.
×
×
  • Create New...