[HN Gopher] Python programming for Nintendo 8 bits (2018)
       ___________________________________________________________________
        
       Python programming for Nintendo 8 bits (2018)
        
       Author : raytopia
       Score  : 93 points
       Date   : 2024-06-30 21:40 UTC (3 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | cacois wrote:
       | I'm very interested in this topic, but currently ignorant enough
       | about NES game dev to make this repo fairly cryptic. Is there
       | anyone here with more knowledge that can explain what exactly
       | this does (more deeply than "enable writing NES games in Python,
       | kind of"), and how it compares to other tooling out there?
        
         | immibis wrote:
         | Looks like it compiles a subset of python code into NES
         | assembly code.
        
       | medguru wrote:
       | If I learned anything from fighting with MicroPython on far more
       | powerful "limited environments" it would be that this is just a
       | curious study, not a feasible choice.
        
         | barrenko wrote:
         | Please expand, thanks.
        
         | Retr0id wrote:
         | This isn't MicroPython though, and it's not similar either.
        
           | somehelpdeskguy wrote:
           | I fail to see how it is dissimilar enough to avoid
           | apprehension. Same language (Python) on limited hardware
           | (8-bit NES, microcontrollers.) So what makes pyNES so
           | different from MicroPython that someone with apprehension due
           | to the latter should have no apprehension toward the former?
        
             | Retr0id wrote:
             | There is no python runtime running on the 6502 hardware,
             | and no Python semantics at runtime whatsoever. Python code
             | is only executed on the host system during compilation.
             | Python's role here is a glorified macro assembler.
        
             | leni536 wrote:
             | Because this is an assembler with python being used as the
             | macro language. No actual python code runs on the target.
        
             | wegfawefgawefg wrote:
             | Wheras micropython involves running a lightweight python
             | virtual machine, this is a compiler. It parses a subset of
             | python and emits assembly, which then can be run on the
             | NES.
             | 
             | It is sort of like a scheme to asm dsl, but rather than via
             | macros, this appears to operate via decorators.
             | 
             | For future reference, though it may be unintended, the tone
             | of your comments does seem aggressive. This probably
             | wouldn't be a problem if they weren't so assertively
             | wrong/misguided.
        
       | Retr0id wrote:
       | Ooh, I wasn't aware of this, but I recently wrote something
       | conceptually similar (albeit slightly lower-level - it's more of
       | a "macro assembler with python syntax"):
       | 
       | https://github.com/DavidBuchanan314/p65a
       | 
       | It needs a bit of a refactor, and there aren't any docs except
       | for my example code (which is a serial bootloader, complete with
       | crc checks, for my SBC)
       | 
       | Looking closer at OP, it uses AST introspection to do its magic,
       | whereas mine just uses operator overload hacks.
        
       | 1stub wrote:
       | This is fricken awesome. Wish I understood more about NES game
       | dev to make some sense of this repo but that is likely the point
       | of this project :)
        
       | t0mek wrote:
       | Similar, but in Haskell: https://github.com/DataKinds/sixty-five-
       | oh-two
       | 
       | It's a DSL for writing 6502 assembly.
        
       | Tiberium wrote:
       | Ooh, I remember this project just from the video released by the
       | creator :) It gives me an almost-ASMR feel -
       | https://www.youtube.com/watch?v=Y-o3pJEhwD4 ("pyNES - First
       | preview")
        
       | freedomben wrote:
       | Kind of off topic, but it's a real shame that Nintendo is so
       | aggressively proprietary and litigious. If you read the
       | (excellent) book "Super Mario: How Nintendo Conquered America" by
       | Jeff Ryan, you'll see that Nintendo is that to its core and
       | always has been, so I don't expect a change. But it's one of the
       | big tragedies of the world IMHO.
        
         | pkaye wrote:
         | Part of that was because of the video game industry crash of
         | 1983. Companies would make all kinds of shitty games for the
         | 8-bit consoles of that time.
         | 
         | https://en.wikipedia.org/wiki/Video_game_crash_of_1983
        
         | mywittyname wrote:
         | So is Disney and Apple.
         | 
         | Nintendo can't use strategies like IBM or Google to keep their
         | revenue flowing. Aggressively protecting their IP and
         | preventing people from distributing information on piracy is
         | how they protect their business.
         | 
         | For as large and old as Nintendo is, a bad decade could crush
         | them.
        
           | __loam wrote:
           | Nintendo has a massive war chest. They'd definitely be fine
           | for a while. But I agree that that got there by protecting
           | their most valuable asset: their IP.
        
         | vunderba wrote:
         | You're not wrong, but most companies that achieve critical
         | success eventually become rather protective of their IP.
         | 
         | I wouldn't be so hyperbolic as to call it a tragedy of the
         | world, it's just kind of a shame.
         | 
         | I mean, read up on the history of Activision and how they got
         | started. Atari did everything they could to stop them from
         | producing cartridges for the 2600.
        
         | sircastor wrote:
         | I think a lot of gaming and computer companies were like this,
         | especially early on. If you read Console Wars (about Sega
         | during the 3rd generation of consoles) you run into loads of
         | aggressive practices while they all try to build out their
         | market dominance.
        
       | vsuperpower2021 wrote:
       | I kept thinking to myself, someone really should design a
       | language that compiles down to ASM so we don't have to write it
       | by hand. Finally.
        
         | exe34 wrote:
         | So, like C?
        
         | 1234554321a wrote:
         | Don't tell this guy about the thing that Ritchie made in 1972.
        
         | buescher wrote:
         | Compilers for the 6502 are tricky, because of its limitations
         | and idiosyncracies. There was a well-received port of a
         | language called Micro-SPL to the 6502 for the Atari 8-bit
         | computers called Action!. The original incarnation of Micro-
         | SPL, on the Xerox Alto, compiled to Alto _microcode_.
        
       | sircastor wrote:
       | I wrote an NES game in 6502 assembly back in 2020. It was a
       | school capstone project and I intentionally wanted to do it
       | "close to the metal". Outside of that I had seen some people
       | writing NES games in C++, but had heard that it compiled pretty
       | inefficiently. I'm pleased to see projects like this because even
       | if it is a higher level language, it's important to learn to
       | operate in constrained environments. And it brings more folks
       | into the NES homebrew scene.
        
       ___________________________________________________________________
       (page generated 2024-07-03 23:01 UTC)