Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Posts posted by RevEng

  1. 13 minutes ago, john_q_atari said:

    I never have understood the scalping thing. People must be poor and desperate for money to scalp things. I can't imagine there is much profit in it  compared to even an hourly minimum wage. Or perhaps they scalp in volumes of hundreds. Sad really. It's been a few years I think and there are still sealed analogue nt mini noirs sitting on Ebay for example... I bought my most recent de10 from terasic for development purposes as I didn't want to disassemble and re-assemble my mister.

    Yeah, I think it's volume-based business. They're using bots to purchase discrete GPUs, consoles, and other popular big ticket items in volume, so it's really not a lot of effort on their part. Any small amount of profit is worthwhile to them, since they can scale things up without much bother.

  2. 19 hours ago, AdamWozniak said:

    i'm probably replying to a long dead thread.


    the TIA would hold the last bit out when you switched waveforms.  this would result in the waveform becoming inverted sometimes (50% chance).  doesn't really matter for the sound, as it's the CHANGE that's important.  if you dig through old AA posts, i think you'll find i said this somewhere...

    I think adding quality information to the thread isn't subject to some time-limit. :thumbsup:


    It could be subtle, but there should be a phase-dependant audible difference, due to the constructive and destructive interference with the other channel being different. (provided that the waveforms used aren't the simple square wave ones.) This should be less subtle if one is intentionally aiming to produce a phaser effect.



    4 hours ago, Pat Brady said:

    Yes, thank you @ZeroPage Homebrew team for putting this on.


    Congratulations to all the winners and nominees. Most of the categories had numerous worthy candidates.

    Indeed! I can only imagine how exhausting putting together the award show is. While James was very gracious about the contributions of homebrewers and the committee, the planning and follow-through is pretty much all on his shoulders, and what a fantastic job he does of it. Thank-you James!


    I'd also like to say congrats to all of the winners and nominees - without exception, I found when I tried to cast my vote I'd struggle with an internal debate on the merits of all of the games. Tough picking when everything is a standout! 


    4 hours ago, Pat Brady said:

    EDIT: when you started talking about Lifetime Achievement Award, my immediate thought was: @batari should have one of those.

    I agree, and It's well-deserved. Fred said some very kind stuff about 7800basic and my work, but 7800basic wouldn't have existed without Fred and his vision with bB. We'd all be so much poorer without his contributions - Harmony, Melody, Concerto, Hokey, Banksets, etc. So yep, while there are many deserving people up for that award, there was nobody higher on my personal list. I'm thrilled that so many people on the committee agreed.

    • Like 5

  4. 15 minutes ago, Random Terrain said:


    Thanks. After all these years, I'm still not used to OR. I should probably put a note on the bB page that OR (and I'm guessing XOR) actually read the register, so if the register can't be read, OR and XOR won't work properly.

    It's a bit more mundane. If the register is anywhere on the right side of the "=" in an assignment, it will cause the register to be read, regardless of the operations used.

    • Like 1

  5. 9 minutes ago, Karl G said:

    Okay; I misunderstood. I thought you meant further lookup tables to further navigate the data for that two-letter combo.


    How did you guys implement the valid word search in a timely manner? I guess in my case for a worst-case of 191 entries for a 2-letter combo, it might not be too bad to brute force it, but I'm curious if you had any more clever approach.

    Matt took a single letter index, since that code was simpler and the 7800 has 16k banks, which is sufficient for it's worst-case size table.


    I'd start with the brute force, as it's not that many entries, and you can spread the whole process over multiple frames if needed. But if I was pressed to speed it up I'd throw a single letter LUT at it, which returns the start of the entry in the two-letter LUT. Binary search is also a possible approach, but IMO it's not worth the extra effort.

    • Like 1

  6. 10 minutes ago, Karl G said:

    Well I guess if I store 3 letters in 2 bytes, then it won't be hard to find the word boundaries, at least. I don't follow about the lookup tables, though. Having a table for each two-letter combo for a 2-byte address for the third letter would be 310x2x26=16120 bytes right?

    Turn it on it's head. If you build a 310 entry LUT with each combination of two-letter indexes, you can search for your specific word's two-letter entry in the table. When you find your entry, it's index is unique, and can be used to point to a specific bank+table. The one less-attractive bit is the table is >256 entries, but otherwise easy enough.


    9 minutes ago, Thomas Jentzsch said:

    No ATARI in both lists?! :x 



    I started to put together a hobby/gaming related dictionary, but it was too tough to get a lot.





    • Like 1

  7. 9 hours ago, Karl G said:

    For the bigger word validation dictionary, I'll likely have address lookup tables for every combination of the first two letters of a word, which will allow me to store only the last 3 letters of each word to save space and speed up the lookup for word validation.

    This is pretty much the "related" approach I was talking about. The majority of the repetition is in the first two letters, after which the RLE-type compressability peters out.


    Heads up that there are 310 unique first+second letter combinations in that 10k-entry dictionary, with the biggest entry being "co", which has 191 entries. So no one table is larger than your bank size, which is good.


    You'll need one or two LUTs to figure out which bank+table is holding your remaining 3 letters. Squeezing the 3 letter entries down to 2 bytes will give you a total of 20672 bytes of storage, in addition to the first+second index table(s). Plus a bit, since tables will be variable length, and you'll also lose space with packing since each set of tables needs to be contained within 4k.

  8. 36 minutes ago, Thomas Jentzsch said:

    I just did a coarse math based on the 2,315 Wordle words. Unfortunately the gain from Huffman compression is not very impressive. Instead of 2315*5*3=57,875 bits, the compressed data would require ~50,100 bits. So that would only save ~13%. Maybe the result becomes a bit better with Scrabble words, but the difference shouldn't be significant.

    IMO you could do a bit better by rotating the dictionary (all first letters, followed by all second letters, ...) and using RLE. When mksmith started the 7800 version, I did some analysis of related approaches and was able to get the ten thousand word diction down to a bit under 20K. It wasn't enough to avoid bankswitching, so Matt carried on without compression. It sounds like similar calculus will play out here, since sufficient banked rom is available.

    • Like 5

  9. 3 hours ago, Pat Brady said:

    The 7800 equivalent would be direct mode objects for any element that can be in front of any other element, and character maps for elements that are always in back. That's definitely a good way to do it.

    I made a simple "occlude" demo a while back that worked along these lines. Any tile graphics that should be in front of the player are loaded into sprites. One could also just put another set of ram-backed tiles in front of the player, and update those tile/char indexes as needed, if DMA isn't going to be tight.


    (js7800 link for the curious)


    Occlude Sprite Demo (20200219).a78


    • Like 7

  10. 13 hours ago, mksmith said:

    Mike has worked through designing a simple SNES adapter and added the driver code to 7800basic and configured it for use in PETSCII. We are just waiting on some additional hardware so it can be refined and tested on real consoles.

    Correction - @Danjovic did the SNES controller interface design and assembly driver. (an open design) I just tested it, and adapted 7800basic to it.

    • Like 5
    • Thanks 2

  11. "cheating" is a loaded word, and in this context it's being used to smuggle in implications of morality and zero-sum competition that don't belong. A person using it to describe some dev approach is either deliberately arguing in bad faith, or they're just incapable of arguing in good faith; either way, there's little point to getting sucked into a debate on whether or not something is cheating with them.


    It used to be a common Usenet truism that if you referenced Nazi's or Adolf Hitler within a thread, you effectively ended discussion in the thread and lost the debate. I suggest that using the word "cheating" to describe some dev approach has the same effect, for similar reasons.


    • Like 4

  12. The difficulty is mainly a matter of having to do 42 point plots within one frame, in addition to regular game logic, in addition to DL updates for some on-screen subset of that 42, in addition to AI updates for all enemies, etc. It's a lot of stuff going on in any one frame, to be sure.


    But the radar doesn't need to done all in one frame. The coarse resolution of of the scanner isn't sensitive to minor movement anyway, so updating at 15Hz will ikely be fine. If you have memory to throw at it (Bob decided he wanted a stock config) you can do double-buffering of the scanner, and you'll get no visible quirks at all. If you update at 15Hz without double-buffering, you'll get a bit of drift on the dots (enemies plotted on frame N+0 only scroll/move next on frame N+4, enemies plotted on N+1 only scroll/move next on frame N+5, ...). I don't think this drift will be too bad, but it's one of those things you need to try before making a final decision. (there's also some hacks you can do to avoid the radar drift)


    If more CPU is needed, beyond the scanner, I think there's other optimisation that can be done for off-screen enemy AI. (e.g. double the distance at half the frame rate, or less)


    The issue here is Bob has been running his engine too hard and too long while his wheels were spinning in the mud. We've all been there. But this isn't a matter of the 7800 being technically incapable of recreating the Defender radar. (see the Petscii Robots 128x64 radar/map, for one example)


    • Like 7

  13. Yep, there's enough DMA time for that (you'd actually need multiple objects, due to the 32 byte limit) and you'll probably have gas in the tank for other objects on top. You can fill the screen with the more expensive modes, provided you're not doing it with an excessive number of objects.


    One thing that may help you to transfer experience between modes... The cheap modes (160A, 320A, 320D) are all equivalent in terms of DMA-used-for-%-screen-coverage, and the expensive modes (160B, 320B, 320C) are also equivalent for the same metric.

    • Like 3

  14. Very nice start! :thumbsup:


    On 1/21/2022 at 11:09 AM, saxmeister said:

    I probably will take your advice, @Geminitronic, and may not implement scrolling just yet. I'm also thinking of sound chip options for this since I could target TIA, POKEY, or even YM2151. The YM2151 would be closest to the arcade hardware (YM3526) but I'm worried about CPU cycles since the 7800 doesn't have a sound co-processor.

    We kinda worried about that prior to getting trackers running, but honestly the cycles involved isn't a major concern. In this demo video, the blue flashing represents the amount of CPU used by the tracker. (I turn the background blue when the tracker driver starts, and black after it's done).



    You can see it's a rather small proportion of a frame. The small bit of blue you do see flashes from frame to frame, since CPU isn't used by the driver between notes.


    IMO the bigger concern is the lack of YM availability for real carts or non-DF flash carts, which divides your potential audience greatly. There are some solutions for this which may be on the horizon - Rafal's passthru cart, or batari's Hokey with YM emulation - but none of those are guaranteed, nor are they imminent. Personally, I try to develop around tech that's available now or really soon, to avoid my code getting stuck on someone else's timetable. (...he said with some irony, after just showing off his tracker written for the XM)

    • Like 7

  15. 2 hours ago, Greg2600 said:

    Most of these folks are programming for the challenge/fun, it's not much of a financially beneficial hobby.  Furthermore, a good chunk are making use of copyrighted IP that thankfully they get away with in small quantities, but are technically pirating from the IP-holders.  Harrr Harrr Harr! 

    Not replying, just quoting for the sake of highlight. Homebrewers should take note that faithfully replicating decades-old IP will be justification for some players as to why you don't deserve as much (or any) recompense for your new work. No doubt your work will still be enjoyed, so keep slaving away boys. The price is right. Harr Harr Harr!

    • Like 1
    • Sad 2

  16. 1 hour ago, zzip said:

    There's no reason the rom couldn't come in a nice box either,  either as a download code or on a cheap low capacity thumb drive.   I think that might help some people feel better about their purchase rather than just downloading a rom and PDF.

    A couple days ago I was watching this RMC video on his "shop" being a MiSTer front-end, and had some similar ideas...



    ...one can easily imagine a similar implementation of software "cards". Each card could be encoded with a few redundant rom sources - QR codes, NFC, .etc. (and perhaps a unique license key one could use for manual download.)


    Waving/scanning the cards at your front end would launch the game locally if it's present, or otherwise download and launch the game, storing it locally for later access.


    For some people, these collectable cards would be a nice bridge between carts and roms. I don't doubt for others it would be annoying, but you don't need to use the interface if you don't like it.


    The trick is getting the functionality into your favourite emulators or front-ends. We have all of the talent needed at AA to get this done on all of the Atari platforms, but no idea about the drive. I suspect the proportion of people just wanting free roms vs those willing to pay, will make the development effort not worthwhile.


    • Like 2
    • Thanks 1

  17. One possible variation that anyone looking into implementing this should be aware of. The 7800 Rescue On Fractalus proto uses "mirror ram" (where each even page is mirrored to the next odd page) to draw graphics at half the vertical resolution. While a coarser resolution doesn't seem like a bonus feature, it does mean you have less screen to update, which speeds up your screen updates.


    a7800, concerto, and the 7800 MiSTer core all support the mirror ram header flag. Implementing mirror ram in any real-hardware cart with ram is trivial - just lift one memory chip leg and ground it.


    1 hour ago, Karl G said:

    It's not listed in the manual..

    Oops! I guess I have an update to make.

    • Like 3

  18. 14 hours ago, masteries said:

    Per year?   xD


    Really you are not aware of the humongous amount of work, a high quality 16 bit release requires.

    A very good game will require at least 2 years, working on it frequently.

    Honestly, that's not that far off the timeline for "very good" 8-bit releases.


    I don't doubt that higher quality assets take longer to produce, but it's not really relevant; asking how many homebrews come out in a year doesn't presume development effort in the slightest. Individual projects could take 4 years, and there could still be a large number of homebrews released each year. It just depends on the volume of homebrew activity.



    • Like 6
  • Create New...