古董 #小霸王学习机 上电后毫无反应。我准备好万用表、示波器准备到处戳一戳,抓抓波形,结果发现是 DC 连接器 GND 焊盘铜箔断裂,10 秒飞线解决(搭接到了旁边的手柄接口焊盘,两者共用 copper pour)。但是这个手边仅有的古董黑白电视不能正常 VSYNC,只能看出有一个“小霸王”商标。这说明 CPU/PPU 能运行了,估计已经修好了,等待采集卡到来再试。#复古计算 #电子考古学 #小霸王
视频转换器来了,古董 #小霸王学习机 能用了。#复古计算 #电子考古学 #小霸王
试试用 F-BASIC 能不能解决太阳系的问题,看看这个 #小霸王学习机 能不能真的用来学习。#复古计算 #电子考古学 #小霸王
How to write code on your no-toolchain, no-documentation, and no-storage 1990s Chinese <del>totally-legal Famicom game console</del> educational home computer? No worries! You can find useful assembly routines on your own! Just dump the whole BASIC cartridge ROM via PEEK using this handy 6502 decoding script! ​​ The next section also gives you a typed-in ROM monitor. Absolutely disastrous learning experience. But you know it's truly only possible on a 6502 - the disassembler fits in just 4 pages. Steve Wozniak is going to either be amazed or have a heart attack if someone told him this was how 1990s home computers worked in China. #retrocomputing #小霸王学习机
How do pirated Nintendo N-in-1 game cartridges work? In the 1990s China, it was not a NESdev page for people with too much time, it was Serious Business! With its own textbook reviewed by EE professors at a top university. Because as we all know, they were for <del>game consoles</del> educational home computers, so the engineering knowledge is of uttermost importance! ​#retrocomputing #retrogaming #NES #小霸王学习机

Original wiki page creator: "lawsuit filings should be researched in more detail"Challenge accepted. ​#retrocomputing #retrogaming #NES #小霸王学习机

Fun fact: The full 6502 machine code of the NES game F1 Race was reverse engineered in China in 1994 by an independent developer 于春, who later wrote a 400-page NES programming textbook about it, making him a little-known NES ROM hacking and homebrewing pioneer worldwide, possibly one of the few NES experts in the world who didn't sign an NDA. Why? To make 8 millions of <del>Nintendo game console clones pretending to be</del> educational home computers in the country actually be educational as advertised. This was also the only surreal opportunity in the world for someone to become a national hero politically, for the service of REing Nintendo games. #retrocomputing #retrogaming #NES #NESdev #小霸王学习机
#NESdev time. Just ported GNU Unifont's ASCII bitmaps to the Nintendo PPU, with a "tile bitplane multiplexing" trick to keep the ROM under 2 KiB. So I can repeat the data 128 times in all banks to survive erroneous MMC3 bank switching. #retrocomputing #retrogaming #NES #小霸王学习机
Cleaned up the code for the CHR ROM tile multiplexing hack slightly. For those who're playing at home, here's the near-complete source. Confirmed working on my <del>Nintendo game console</del>Subor educational home computer. #retrocomputing #retrogaming #NES #NESdev #小霸王学习机
Optimizing 6502 assembly... ​#retrocomputing #retrogaming #NES #NESdev #小霸王学习机
6502 NMI handler optimized from 7600 cycles to 5380 cycles. But I don't think it's possible to draw a screen of text in 2400 cycles (even a ROM with nothing but LDA and STA can't meet the NTSC VBLANK timing). Still need to double-buffer my text. ​:mos6502ad:​ #retrocomputing #retrogaming #NES #NESdev #小霸王学习机
Keep optimizing 6502 NMI handler. From 5380 cycles to just 4476 cycles now after unrolling the inner loop and extracting the loop body as a subroutine (to reuse the same unrolled loop without exhausting ROM). I think this is close to the theoretical limit of indexed loads in 4032 cycles, the only way to go faster is to fill the ROM with 448 absolute-mode loads, with a marginal 1-cycle saving per CHR. Perhaps to go further, one can use immediate-mode load to save 2 more cycles per CHR by making the text buffer executable, the "print" subroutines would modify the operand of each load instruction. ​:mos6502ad:​ #retrocomputing #retrogaming #NES #NESdev #小霸王学习机
Keep optimizing the 6502 NMI handler. Even 4476 cycles is too long to update the screen within two VBLANKS. Time to do some totally deranged optimizations - unroll ALL lda loops with hardcoded memory addresses, to save 1 more cycles per load! Now the NMI handler only takes 4025 cycles. I never used jump tables on the 6502 before (learned it from Z80 and PIC16), this is my first program. I was amazed when this hack worked on my first attempt. ​:mos6502ad:​ #retrocomputing #retrogaming #NES #NESdev #小霸王学习机
Remember the "two characters per CHR ROM slot" hack, by masking a bitplane using two palettes in the attribute table (https://mk.absturztau.be/notes/aiz1nyffidg002ch, https://mk.absturztau.be/notes/aizlaxrjti9i011n)? A major limitation was the two blank lines between two rows. I managed to work around it by writing even rows to nametable 0, odd rows to the nametable 1. By rapidly switching tables per VBLANK (and adjusting hardware scroll positions), the text in the second table appears on top of the blank lines of the first table. It works! Now I can show a full screen of text with the compressed CHR ROM trick. The flickering makes the experience not so great. Next steps: exploiting per-scanline HBLANK ("race the beam") instead? #retrocomputing #retrogaming #NES #NESdev #小霸王学习机
I was wondering why did the emulator's Event Viewer keep showing an IRQ fired on every scanline, and why did the profiler also show the IRQ occasionally taking 2000+ cycles when the routine only had 10 instructions... 6502's /NMI is edge-triggered, the /IRQ is level-triggered, so if you don't clear the flag... ​#retrocomputing #retrogaming #NES #NESdev #小霸王学习机
Success! My non-standard 8x16 CHR ROM compression hack is now possible to display a full screen of text without the blank lines or flickering. (https://mk.absturztau.be/notes/aiz1nyffidg002ch, https://mk.absturztau.be/notes/notes/aizlaxrjti9i011n). The idea is still to spread the text to two nametables, filling each other's blanks. But instead of toggling nametables during VBLANK with horrible flickering, MMC3's scanline IRQ allows one to do so during HBLANK/overscan instead, changing the image from a blank row to a font row, as soon as the CRT beam starts sweeping these lines. #retrocomputing #retrogaming #NES #NESdev #小霸王学习机
Full-screen 8x16 compressed-font CHR hack: confirmed working on my <del>Nintendo game console</del>Subor educational home computer. Hard to believe that the "static" full-screen text on the monitor is actually being generated by mid-frame raster effects. #retrocomputing #retrogaming #NES #NESdev #小霸王学习机
After wrestling with 6502 and NES PPU for a month, I finally have a text-mode engine that allows me to write a bank-switching test ROM, hoped for finding the smoking gun of unimplemented 256 K mode in the mapper that crashes the game I wanted to play. Unfortunately, the tests passed with flying colors on real hardware. So it was not bank switching. Just after I ordered a 2A03-based NES motherboard clone, planning to debug this "hardware compatibility problem" further, I decided to actually read the "src" directory that comes with the Touhou NES demake. I found the game copies executable code to cartridge WRAM at startup, because it's self-modifying. WRAM is physically omitted by the cartridge design I am using, so of course it crashes... ​​ Half a month completely wasted. ​​ Lesson learned: how NOT to make a NES cartridge. Surprisingly, the game's author, in true NES hacker's fashion, has their personal CPLD-based MMC3 cartridge implementation, which was where the game was tested on. I just need to replicate the board, and the game will hopefully run. #retrocomputing #retrogaming #NES #NESdev #小霸王学习机
@niconiconi when I was at school, I did some machine coding for a Soviet PDP11 clone. It was fun, especially that documentation was scarce.
@bonkers I also wrote some PDP-11 code for fun back in 2021. It would be cool if I can run it on a real Electronika BK. https://niconiconi.neocities.org/posts/chacha20-performance-on-pdp-11/
ChaCha20 Encryption Performance on DEC PDP-11

ChaCha20 encryption is implemented in PDP-11 assembly for the classic minicomputer from the 1970s, with a performance analysis.

@niconiconi LOL, why. There's plenty of cool stuff you can do with modern hardware, and it would actually have a purpose. For example, custom game controllers for the disabled.
@bonkers I work on both 1 MHz projects and 6 GHz projects, and I work on both projects with purposes and projects without purposes.
@niconiconi What manga is the right image from?

@niconiconi is that HT7533 actually MLCC stable?

some datasheets show a feedforward capacitor, some don't, but almost all of them show a polarized capacitor in their application schematics, so i've always been too uncertain to use them

@r No idea, I didn't design or make the PCB, it's an open hardware project by an NES dev named "MUMU_FC", which was replicated and sold in China for like $5, so I just decided to purchase a random one and started using it. This may be a mistake, as I'm now fighting with the undocumented CPLD's bank switching behavior, author released no HDL source.

@niconiconi ah, that makes sense

i was assuming that you had designed it

it might be easier to just write your own CPLD logic?

@niconiconi I had the old 6502 programming manual, it was really well written.
@niconiconi Well this certainly is an educational experience. Making those Famiclone computers was probably more educational than whatever those computers were intended to teach.