Back to Home11/15/2025, 12:36:51 AM

I wrote a Pong game in a 512-byte boot sector

93 points
13 comments

Mood

excited

Sentiment

positive

Category

tech

Key topics

low-level programming

retro gaming

boot sector development

Debate intensity20/100

The author created a Pong game within a 512-byte boot sector, showcasing impressive coding skills.

Snapshot generated from the HN discussion

Discussion Activity

Active discussion

First comment

3m

Peak period

12

Day 5

Avg / period

6.5

Comment distribution13 data points

Based on 13 loaded comments

Key moments

  1. 01Story posted

    11/15/2025, 12:36:51 AM

    4d ago

    Step 01
  2. 02First comment

    11/15/2025, 12:39:26 AM

    3m after posting

    Step 02
  3. 03Peak activity

    12 comments in Day 5

    Hottest window of the conversation

    Step 03
  4. 04Latest activity

    11/19/2025, 4:10:17 PM

    3h ago

    Step 04

Generating AI Summary...

Analyzing up to 500 comments to identify key contributors and discussion patterns

Discussion (13 comments)
Showing 13 comments
akshat666
4d ago
1 reply
Built this as a personal challenge. No OS, no drivers — just x86 assembly and BIOS. 512 bytes exactly. Boots in QEMU.

Run it: nasm -f bin pong.asm -o boot.bin qemu-system-x86_64 boot.bin

GitHub: https://github.com/akshat666/-bootponggame

Tepix
10h ago
Nice! So you wrote this three years ago according to the git timestamps?

You can add it to the list at https://gist.github.com/XlogicX/8204cf17c432cc2b968d138eb639... I think there are already at least two Pong game there.

anthk
8h ago
1 reply
Now that I see this, I'd curious if something like Nethack 3.4.3 or Slashem could be rewritten in T3X0 and be playable under 286 machines:

https://t3x.org/t3x/0/

There's a working Rogue port for Minix2 under a 16 bit CPU (and for the Z Machine too, and GBA, and several others...), but I think even Hack 1.0.3 would be too big to fit under a 286 with 640k.

It would be a good start if Nethack 1.3d got working under CP/M for instance, rewritten with T3X0 and some ASM hacks for speeds...

fl7305
7h ago
1 reply
You could easily write a RISC-V CPU emulator for your older/smaller machines, and run the original Nethack code compiled to RISC-V.
anthk
4h ago
Under a 286? At time-freezing speeds. Minix 2 under a homebrew 16 bit CPU already was so-so in usability:

https://homebrewcpu.com/

amiga386
6h ago
1 reply
"No operating system. [...] Just [...] BIOS". Hmm.

Out of interest, is there a difference in environment between running a COM executable for MS-DOS versus running a bootblock? I know there's the whole of MS-DOS, but a typical size-coded demo (http://www.sizecoding.org/wiki/DOS) will only use int 10h to switch mode, and that's it. Everything else is IO mapped (e.g. the keyboard) or memory mapped (e.g. screen memory). Could these equally run as a bootblock, and vice-versa?

One difference I know of is that DOS maintains an ever-increasing timer that it writes to 0:046C... is that available at bootblock execution time?

CrociDB
3h ago
As far as I know yes, but with some minor changes, like the the position to be loaded in memory (`org 0x7c00` for bootloaders and I think `org 0x100` for DOS) and the fact that it needs to be exactly 512bytes to boot.
matsz
10h ago
It's probably one of the best introductory projects to x86 assembly on bare metal.

More advanced than my attempt: https://github.com/mat-sz/pongloader

BTW: You could provide a live online demo using v86 - https://github.com/copy/v86

joenot443
8h ago
This is cool!

BTW I checked out your Github and tried the link to your personal site - looks like the www prefix isn't working.

www.akshatjoshi.com fails but akshatjoshi.com works. Gotta fix those A records!

kragen
7h ago
Possibly relevant is hugi-compo round 3, the "Pong" compo: https://www.hugi.scene.org/compo/compoold.htm#compo3

I spent three days disassembling Guillermo Sais's 142-byte winner, which was challenging to understand. My notes may be of interest; they are in gsais-pong.md in http://canonical.org/~kragen/sw/pavnotes2.git/

I hope this is not interpreted as any kind of criticism. I would much rather be responsible for maintaining Joshi's code than Sais's. But I suspect that most people who are interested in either work will be interested in the other.

mg794613
4h ago
Tomorrow it's my turn to pretend to have written this!
110111011110
6h ago
always facinated by these.

some ideas: - could try to add another player. just need to map 4 more keys. IO should be fine doing it the same way (dont think itd need thread or whatever) the io is super fast in the qemu scenario.

- rather than have this in the MBR. make an MBR where you can select this sector to load as next sector and jump, maybe even with ability to return. *you can then expose other games too if ud ever be bothered for snake or minesweeper :D

just some tinkering ideas. cool project and hats off. its always more tricky than it looks these things!

Barry-Perkins
3h ago
Pong in 512 bytes — boot, play, amaze
ID: 45933932Type: storyLast synced: 11/19/2025, 7:23:53 PM

Want the full context?

Jump to the original sources

Read the primary article or dive into the live Hacker News thread when you're ready.