Jump to content

Bruce-Robert Pocock

+AtariAge Subscriber
  • Posts

    207
  • Joined

  • Last visited

Everything posted by Bruce-Robert Pocock

  1. There are quite a few homebrews (less originals) using SC RAM in particular, and it's well supported on emulation and multicarts, as well as Melody. Actually soldering one up yourself might be a bit more challenging. For example, if you were to go FxSC: You lose 256 bytes at the top of each bank ($f000-$f0ff) You get 128 bytes of write followed by 128 bytes of read ports You cannot use Read-Modify-Write (RMW) operations on those addresses, e.g. inc, dec So eg. to add one to a RAM address: inc Memory but in SC RAM lda MemoryRead clc adc # 1 sta MemoryWrite Nicely, Stella can be configured to halt in the debugger if you encounter a read from a write port or vice-versa, but it does require special care when coding. To “convince” emulators that you're using SC RAM, you'll probably want to fill the bottom page of ROM (in every bank) with some garbage data, perhaps zeroes. You can also just manually select the right banking method, but why not take advantage of the heuristics … Myself, I will define the write addresses in "the usual way" and then have a constant named READ so I can reference the read ports as e.g. READ+PlayerEquippedItem in the source, rather than having to keep in sync between PlayerEquippedItemWrite = $f004 / PlayerEquippedItemRead = $f084 or so forth. You also have to worry about "ghost" or "phantom" reads from write ports, see e.g. this post for an example, but I believe Stella now traps those as well for you. If you want even more RAM, there are other options (CBS, &c.) that do exist. Zero page is also visible from all banks, so you don't need to use SC RAM for that, but perhaps I misunderstand that comment.
  2. I posted the link for one of the MS Visual C Runtimes on the other thread where you asked this question; as for Stella, look for the link on the download page.
  3. Scroll down, ignore the banner. You need the Download link on the page. (It's super unfortunate that they have such a huge ad banner.)
  4. I don't "do Windows" but it looks like that's from https://www.microsoft.com/en-us/download/details.aspx?id=48145 (under the big “IE is dead” banner)
  5. Note that the loop example you gave, above, reads in reverse order, from tail to head. For many things, it may be simply easier to reverse the data table itself so that it's in the reversed order: DATA: .byte LastValue, NextToLast, ..., Third, Second, First If that's not possible or not practical, you'll have to count up in your loop: ldy # 0 Loop: lda DATA, y ;; do something iny cpy # 250 ; end of loop value blt Loop Also, and it may be you're using an assembler I don't know, but it's quite unusual to have the # (hash, octothorpe, pound, number) sign in .byte lines. Normally, they'll be more like .byte $02 .byte $0a ;; ... .byte $1d
  6. Assuming you mean, 300, as a constant value, you can: first, run the loop 256 times with lda DATA, y, and then run the loop 44 times more with lda DATA + $100, y
  7. A Krocodile Cartridge is an older multi-cart that you can upload games (eg. your own) to and play them on the Atari 2600. I don't believe they're made any more. Modern-available options include: Harmony, Harmony Encore, or UnoCart, each of which uses an SD card to transfer games from your computer, or PlusCart, which uses WiFi to access a “cloud” server with games stored to it.
  8. Just to hearken back to the original post … and sorry if this is too, um, basic, but: If you are concerned about SAVE not actually saving the file properly, you probably want to VERIFY the save worked… READY. SAVE"@0:MY FILE",8 SAVING @0:MY FILE READY. VERIFY"MY FILE",8 SEARCHING FOR MY FILE VERIFYING OK READY. VERIFY"OTHER FILE",8 SEARCHING FOR OTHER FILE VERIFYING ?VERIFY ERROR READY. VERIFY compares the data on disk to the data in memory, ensuring that the save completed successfully. It's basically the same as LOAD, but it compares rather than replacing.
  9. Which program? (your link seems to bring up a movie review?) Also, what is the error?
  10. As you may have noticed, Grizzards will be featured at Portland Retro Gaming Expo. Zephyr & I will be at the show.
  11. It does bear repeating Also if you put the .pro file matching the ROM image in the same folder, Stella should pick up the settings from that file for you as well. Sorry for the inconvenience! (PS: I'm going to stage a patch for Stella 7, but it'll be a while before that makes it anywhere.)
  12. It's been a year almost since I first posted an early draft of Grizzards! Here's Full Beta 5, which is probably the final beta version, although I do still have the flicker reduction kernel in a branch and am trying to stabilize that display. Changes from the last release: Fix: Weird vibration of “YOU WON” screen on PAL/SECAM. Seems to be a fun quirk/bug of the 6532 PIA which thank God (and @stephena and co) Stella emulated properly. Fix: Certain bosses HP could roll over a byte (≥ $100) and end up being severely weakened when playing in Expert mode, New Game Plus, or the combination of the two. Fix: A “sticky wall” situation could occur where the player moved vertically into a wall, and could keep “bumping into” the wall until you moved away manually. (The kick back from the bump was not working.) Enhancement: New Combat illustration in manual (sketch/draft version) Enhancement: You will always get a potion after a boss fight Re-Fix: Possible to get stuck on the ocean tiles adjacent to the Port Lion docks Fix: ERROR 0FFF01 when encountering certain signposts/NPCs which grant points to the player Fix: When a monster tried to heal themself, they might sometimes miss (?) and vanish. (This is a fix on top of an earlier fix which was not 100% effective.) Fix: Crash when speaking to retired Grizzard trainer in Anchor Village after completing her side quest (due to incorrect index value in dialogue tree) Enhancement: Button III on Joy2b+ controllers can be used to reset from the crash report screen. (Game Reset still works as it always has.) * Couch compliant with gamepad ☺ Fix: New Game Plus was granting you Petty by accident Fix: Starting a new game slot immediately after dying with a certain Grizzard active and not changing from the default displayed Grizzard let you continue with that Grizzard, with the stats for Airex. Fix: Intermittent write timing problems in column 3 or 4 of text on PAL/SECAM Enhancement: Reduce flicker on text screens with fancy interlacing Enhancement: Changed interlacing of text so screen looks less “wiggly” Closed, unable to reproduce: Save file disappearing after starting Demo. (Possible cause: Demo uses Scratchpad area of SaveKey which other games may overwrite.) Enhancement: Sprite collisions with walls were “iffy” Fix: Crash when speaking with person in room $26 Closed, won't fix: No more dialogue is making it into the Demo, despite a little free ROM space. Enhancement: New Game Plus acknowledges that it's happening with a splash screen Enhancement: Don't display CRIT! when nothing happens Closed, won't do: When healing is limited by your Max HP, does not show the actual healed amount. However, we do show HEALED rather than HEAL + a number to indicate fully healed. Fix: CombatMainScreen scan line count errors on PAL/SECAM Fix: Speech and text did not match for certain pages of text spoken by Miranda Fix: Fat Tony did not recognize that Miranda had talked to you, so he did not give you a new quest when he should have done. Enhancement: some work was done on text and graphics displays for the Flashback Portable (but it's still pretty bad) Enhancement: add “click” type sound when changing Grizzards in the Depot Enhancement: remembers last move when toggling to/from the stats screen in Combat mode Closed, thought to have been fixed: “Your Grizzard is injured” accompanied by a negative HP value like HP-126 Fix: scan line counts on “You Won” sequence Fix: Hide the cursor when entering the Combat screen with a healing/buffing move selected Fix: Monster groups were appearing with only one monster Fix: Freeze on enemy's turn (when enemy had a healing/buffing move in their first Move slot) What remains … New kernel which reduces flicker on average on map screens, and eliminates it on certain ideal screens, is very buggy still but is slowly approaching usability. Leveling, leveling, leveling … Playtesting, playtesting, playtesting … And, here are some binaries for your enjoyment. All the binaries with a little Chooser are on the web site at https://star-hope.org/games/Grizzards/ for your amusement. As usual … The .a26 files are the game itself, the .pdf files are the manual, and the .pro files are for Stella (only) to inform it about the game. Remember, if you can't enter anything into the game in your emulator, to make sure you have Sega Genesis or Joystick selected as your Left controller. If you only have a Flashback Portable, you can try the really bad NoSave demo for it. Grab the NoSave manual from the next section. Grizzards.Portable.full-beta-5.bin If you do not have a SaveKey nor AtariVox nor MemCard device, you can try this NoSave demo: Grizzards.NoSave.SECAM.full-beta-5.proGrizzards.NoSave.SECAM.full-beta-5.a26Grizzards.NoSave.NTSC.full-beta-5.proGrizzards.NoSave.NTSC.full-beta-5.a26Grizzards.NoSave.PAL.full-beta-5.proGrizzards.NoSave.PAL.full-beta-5.a26Grizzards.NoSave.full-beta-5.pdf If you do have a memory device, this 32kiB demo will give you some sense of the game with limitations: Grizzards.Demo.SECAM.full-beta-5.proGrizzards.Demo.SECAM.full-beta-5.a26Grizzards.Demo.NTSC.full-beta-5.proGrizzards.Demo.NTSC.full-beta-5.a26Grizzards.Demo.PAL.full-beta-5.proGrizzards.Demo.PAL.full-beta-5.a26Grizzards.Demo.full-beta-5.pdf If you do have a memory device, and you have a multicart or emulator that can handle 64kiB (EF) ROMs (eg. Harmony Encore, but not original Harmony; or most other multicarts), you can try the full game: Grizzards.SECAM.full-beta-5.proGrizzards.SECAM.full-beta-5.a26Grizzards.PAL.full-beta-5.proGrizzards.PAL.full-beta-5.a26Grizzards.NTSC.full-beta-5.proGrizzards.full-beta-5.pdfGrizzards.NTSC.full-beta-5.a26 As always … your feedback is encouraged. Do let me know if you find a bug, or feel free to message me privately or on the AtariAge Discord #homebrew-chat channel if you need help getting the game running, or strategies for playing the game. Enjoy!
  13. Lunch break progress report ? For the curious, here is a demo of the wip on the light-flicker kernel. Grizzards.light-flicker.demo.20220712.mp4 What works: Vertically isolated sprites tend to not flicker off as much, or at all All sprites are drawn at no worse than 1⁄4 duty cycle ever Player character : other object collisions are handled properly Player character : playfield collisions are handled properly incidentally, fixed a small bug that was the source of an unreported “sticky wall” type scenario when moving vertically, that should be in tonight's daily build. What does not work yet: Vertical timing gets dicey sometimes (note bottom of screen kinda vibrating) Horizontal timing of the playfield drawing has some shearing as well Playfield priority should be on, it's off for debugging purposes Need to optimize out at least 8+ bytes so that it fits into the ROM without sacrificing any game content Need to implement new NPC/Monster : Playfield collision code, for … random spawn location validation, and … when walking, so as to not walk through walls. (but that is in a different ROM bank with 84 bytes free presently) This kernel is basically looking for an opportunity to identify a next candidate for the P1 sprite, then recolor, reposition, and identify the correct animation frame for it. Some variability in the duration of that routine is probably the source of the timing problems. Since it does take multiple scan lines to do that work, it can't be updating PF[012] or GRP0 during that interval. This shows the zones for each sprite (indigo, pink) and where the sprite remapping occurs (orange) and where it's given up on further sprites (yellow). Grizzards.light-flicker.zones.20220712.mp4 I have a couple of alternative experimental kernels, but the only one with better average results than this costs so much ROM space that I don't think it's plausible to implement it. That version has similar timing issues to this one, but it can give more draw frames to sprites located higher on the screen that this version may flicker unnecessarily when there are overlapping (same horizontal zone) sprites lower on the screen.
  14. I think I've got interlaced text looking pretty good in today's dailies. Attached is one ROM (NTSC, No-Save edition) that shows off the new 12 character text routines. (eg: reading signs, speaking with NPCs) I had to sacrifice some height on the letters to get the timings right, and the spaces between lines are wider due to decoding more text, but I'm overall relatively happy with it — and seeking opinions, naturally. I still have freed up some ROM space compared to the left/right flicker method, so I'll toy with the map screen some more as well. Grizzards.NoSave.NTSC.a26
  15. On further investigation, the interleaved-characters kernel for 12-char text is actually working quite nicely now. After futzing around with the RetroTink and TV settings for a while, and testing on an LCD as well, I'm merging in that kernel as it frees up some ROM space which might be usable for doing something about the map kernel's flickering. Interleaving lines is still on the horizon, as I'll have to double the amount of RAM used to handle 12 characters at a time rather than 6 (which may be possible, but not easy). Today's daily builds, however, also fix a bug that could have prevented you from progressing beyond Port Lion in the main plot. If you have been playing along and could not figure out where to go after Port Lion, speaking to some of the non-player characters that you've previously spoken to will now give you a slightly different response and lead you forward. To be precise (contains light spoilers, but no puzzle solutions) …
  16. I'm not sure if I understand the question, but perhaps this will help. 1. No, the 16kiB banks each start at $8000, except the last one, which starts at $a000 2. I don't know of any configuration that has ROM at $3000 3. POKEY can be mapped at $0450 or $4000 as you wish, it won't affect ROM banks but will affect extra RAM. In a banked ROM like Supergame, typically all of the banks will occupy the same space, e.g. $8000 - $bfff. You then will bank switch to select which bank is active, in this case by writing to $8000 (since it's a ROM address, no actual write occurs, but the bank switch happens in stead). So each ROM bank occupies the same range of addresses. In Supergame, in particular, the last bank is available all of the time at $a000 - $ffff, so that bank is where you'll put the 7800 signature and your NMI/IRQ/RES vectors. Supergame RAM would be accessible at $4000-$7fff. If you don't want the RAM there, you could map the POKEY there in stead. Someone else will have to provide the details, I do not have one in my Concerto. So a typical Supergame + RAM would have: TIA + MARIA @ $00 Zero Page RAM @ $80 - $ff Stack @ $0100 - $01ff System RAM @ $1800 - $203f, $2100-$213f, $2200-$27ff (and mirrors) Cartridge RAM @ $4000 - $7fff Banked ROM @ $8000 - $bfff Last ROM bank fixed @ $a000 - $ffff There is also a newer format called Souper, which I don't know about as well. Perhaps someone can provide that information if that's the one you meant. I don't think that Souper works with Concerto though?
  17. Amidst some other updates, today's daily builds also feature corrected timings for the Atari Flashback Portable. Note that this is (for now) only the daily build, lower on the page. Grizzards.Portable.NTSC.bin It seems that these timings are probably within the acceptable range for some (or all?) actual Atari consoles, so I may merge these patches into the mainline later. One remaining (mysterious) bug — the score does not appear on the map screen. (PS: Nor the game over screen) Grizzards.NoSave.pdf
  18. Round Robins were freezing up on their turn, due to a stupid bug in the routine that decides whether a monster want to heal or not. The same bug exhibited as monsters healing when it was not necessary. I've pushed to the dailies. The dailies also don't have the interleaved character build any more as that does not, as I implemented it, actually work on hardware … at least not 7800 + S/Video + PlusCart + RetroTink. I'm going to look at flicker reduction again when time permits, though.
  19. It's come to my attention that there may be a bug in which a Round Robin (or perhaps another monster?) will freeze up and never take their turn. Investigating now.
  20. I imagine that you meant to alternate line-by-line, but that's gonna require much more than a night's work — I think I may have the RAM to pull it off, but I'm not sure.
  21. For a first shot, the attached binary uses interleaved characters on the 12-character text displays to hopefully reduce the perception of flicker. There are (at least) two problems … some junk pixels on the last scan line of each row of text, and the menus for conversational replies are munged up a bit. e.g. where it should read SOUTH_ _WEST_ … over on the Treble docks, it is interleaved vertically and in stead reads … SUH_ET OT_WS_ … until I hack the Inquire screen to handle the new text format some how. I'll be looking at some of the other suggestions as well, but thought I'd make a sample available to see if it's helped at all. The dailies on the web site have all the usual variants as well, complete with the above bugs in every one of them. Grizzards.NTSC.a26 For the curious, this is what the text screen looks like in freeze frame … the sample text reads MWMWMWMWMWMW ABCDEFGHIJKL THIS IS SOME TEXT TO TEST WRITE12CHARS (Write12Chars being the name of the routine that was changed)
  22. I may be missing something critical, but shouldn't that read more like…? 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1
  23. Much appreciated. I'm particularly interested in the idea of splitting the 12-char text up into odd and even columns … Changes to the map kernel would be much more difficult, as I have 12 bytes free to work with, but I'll pursue my options there as well.
  24. At this point, I don't have any plans — not out of lack of desire, but out of lack of options (that I'm aware of). I did make sure that the combat screens don't have any flicker effects, but I don't know how to tackle the general (12 char) text screens at all without it, and I don't know how to get around it on the map displays when there are multiple objects, since things aren't neatly packed into zones. If I had a lot more ROM space, I could probably reduce the flicker effects on the map a little by swapping between P1 sprites partway, but that would also mean changing sprite/sprite colliions over to use hit box detection rather than the hardware collision that it relies upon now (since I would not necessarily know “which P1” the player had struck). I had toyed with the text screens using a "Venetian blind" effect, but due to repositioning the six sprites between each line, that effectively meant: a scan line of positioning, a scan line on the left side of the screen, a scan line of repositioning, then a scan line on the the right. It didn't flicker, but it did seem to be a lot harder to read anything where every scan line of “art” was split up with 3 lines of blank space above and below it, and the inherent 2 lines of “shear” between the left and right sides. I realize that there's a wide variation in how well TVs handle flicker effects, particularly LCD models. My main TV is an OLED, but I have tested on LCDs as well … but I may just have gotten used to the flicker. In Stella, I generally use the settings “Composite,” “50% Phosphor,” and “0 scan lines.” I am very open to any suggestions, however.
×
×
  • Create New...