Game Genie Game mini-jam

A place where you can keep others updated about your NES-related projects through screenshots, videos or information in general.
lidnariq
Site Admin
Posts: 11813
Joined: Sun Apr 13, 2008 11:12 am

Game Genie Game mini-jam

Post by lidnariq »

Mini-Jam is done! See wrapup in this post: viewtopic.php?p=304798#p304798


Announcing the Game Genie Game mini-Jam!

Running for the final two weeks of September 2025

(Nominal start date: 2025 September 17th

End date: 2025 September 30th, End of Day, Anywhere on Earth)

Write a small game, utility, or toy for the extremely limited capabilities that the Game Genie provides:
  • 16 KiB PRG
  • Your choice of nametable arrangement (H, V, 1 *not switchable*, 4 screens)
  • this predefined very limited CHR:
    GGtiles.png
    GG-256B.chr
    GG-8K.chr
Bonus points if:
  • your entry detects and handles at least two different nametable arrangements in a different way
  • your entry doesn't access $8000-$BFFF (on the real Game Genie that region is open bus, not a mirror)
(Bonus points can be redeemed with your local fuzzy friend and have no cash value.)

You may submit as many entries as you want (within reason), and not all (or any) must be games.

Q) Can I use stuff written beforehand?
A) Libraries, utility functions: yes
Otherwise: state approximately how much was written before the day you learned about this jam

Q) Can I use stuff others wrote?
A) Only with explicit permission and attribution

Q) The tiles are just color 0 and 3, how do I do anything with this?
A) The point is figuring that out!

Q) Why do I get to choose nametable arrangement?
A) The Game Genie doesn't try to control nametables at all - it just assumes that the cart has enabled them. But that's no fun for the purposes of the jam, so you get to choose.

Q) Doesn't that mean that "open bus/no nametables at all" might happen?
A) If you want to submit an entry for that configuration that's ok, but I haven't yet figured out how to encode that

Q) How might an entry handle multiple different nametable arrangements?
A) One option is that levels might rotate so that they're either 60x120 or 120x60

Q) Do I need to do any of the register writes from the original GG ROM?
A) If it's just a game, no! If you plan on switching out of your ROM into Game Mode, you should do all of them (see Memblers's warning )

Your entry must be any of:
  • iNES1 or NES2.0 ROM, mapper 0, 16KiB PRG, either attached CHR, your choice of nametable arrangement
  • iNES1 or NES2.0 ROM, mapper 7, 16KiB PRG, either attached CHR, do not write to bankswitching register
  • NES2.0 ROM, mapper 32, submapper 1, 16KiB PRG, either attached CHR (in order to get a fixed single screen nametable)
    Mesen requires writing values to the CHR bankswitching registers at $B000-$B007 before it gives you CHR instead of open bus
  • iNES1 or NES2.0 ROM, mapper 206, 16KiB PRG, either attached CHR, four nametables marked
  • A raw 16KiB binary suitable for replacing the Game Genie ROM in an emulator or hardware (Be sure to state what nametable arrangements are supported!)
  • Any other way of getting a fixed single-screen nametable, pending approval from lidnariq

How to submit your entry:

Reply to this thread, or
DM lidnariq on discord

With:
  1. the entry, and
  2. a representative screen shot, and
  3. a brief description of what people should expect
  4. If your entry supports multiple nametable arrangements, explicitly mention this in the text and in the filename so that we can appreciate that


There is no intention to have a round of voting. I just to see what people can do with these extreme constraints! If enough people want to I'll figure out how to set that up.
You do not have the required permissions to view the files attached to this post.
drludos
Posts: 72
Joined: Mon Dec 11, 2017 4:01 pm

Re: Game Genie Game mini-jam

Post by drludos »

Hi, thanks a lot for this Jam, this is very unique and interesting!

Just to be sure, we can make an entry with a full 16KB of code, not just 4KB mirrored 4 times like the Game Genie?

I wasn't aware that the device created its graphics using such a limited CHR. This is a huge constraint, but that's what make it a fun challenge!

I'll try to make something if I manage to find time :).
Download ROMs of my games: https://drludos.itch.io/
Support my work and get access to beta and prototypes: https://www.patreon.com/drludos
lidnariq
Site Admin
Posts: 11813
Joined: Sun Apr 13, 2008 11:12 am

Re: Game Genie Game mini-jam

Post by lidnariq »

drludos wrote: Sun Sep 07, 2025 12:54 pm Just to be sure, we can make an entry with a full 16KB of code, not just 4KB mirrored 4 times like the Game Genie?
Yup, correct!
I'll try to make something if I manage to find time :).
Looking forward to it!
User avatar
Dwedit
Posts: 5263
Joined: Fri Nov 19, 2004 7:35 pm

Re: Game Genie Game mini-jam

Post by Dwedit »

I wonder if the Game Genie could have turned out differently if they realized they could use the internal video memory as CHR data rather than using a few logic gates to make super-low-res graphics?
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
User avatar
Memblers
Posts: 4153
Joined: Mon Sep 20, 2004 6:04 am
Location: Indianapolis

Re: Game Genie Game mini-jam

Post by Memblers »

I'm really liking the idea of this. I had a lot of fun with my modified GG + software UART on the controller port. Would be nice if we had UART emulation. Maybe I'll make another thread about that.

A couple things to note:
GG has 24-pin ROM, there's probably not room for a 28-pin. Though if this compo turns out well, maybe a surface-mount carrier board, a couple wires, mini dip switch, submapper or something could be made to fit? Going beyond 4kB could be interesting.

Beware..! I believe it's possible to permanently fry the GG ASIC with incorrect usage. I'm pretty sure it's caused by running the cartridge (exiting Genie mode), without initializing the GG registers in the way the original code does. It doesn't happen immediately, it seemed like there might be days or even weeks of daily use between failures, but I had to socket both chips on my GG because I fried at least 3 ASICs myself, probably some more for earliest Cheapocabra devkit users. ESD event coincidence is still possible but doubtful. After making a software change, it's lasted for years without failing.

The original GG code also has a huge long delay at the start, I tried shortening it by some amount and it still seemed to work OK, I'm not sure what the deal is with that.

One thing that's been bugging me for a while, I could swear that I remember that somebody years ago contacted David Galoob about the GG ROM, who said it's public domain, then it started being included with emulators, but maybe it's not these days. What bugs me is that I never could find the email about it, it must have been in the NESdev email list, but I don't have a complete archive of that. I think public domain, legally, isn't a license, but morally it should be OK to use it as such.

I have a disassembly I made of the ROM, then I optimized it for size and fixed some bugs in it. I'm tempted to try having my own mini-jam within the jam where I try to jam some functionality into the 90 bytes or whatever amount it yielded after my bugfixes, I forget. One fun thing was that a lot of ZP RAM locations were accessed as absolute addresses sometimes, that's a real sneaky way to pad out your ROM. And there was lookup table that was duplicated, those were the savings.
User avatar
nesrocks
Posts: 603
Joined: Thu Aug 13, 2015 4:40 pm
Location: Rio de Janeiro - Brazil

Re: Game Genie Game mini-jam

Post by nesrocks »

These CHR tiles effectively make it a 4x4 pixels attribute region game at 64x60 screen resolution, zoomed in 4x.
For the background graphics, that is.
Fiskbit
Site Admin
Posts: 1399
Joined: Sat Nov 18, 2017 9:15 pm

Re: Game Genie Game mini-jam

Post by Fiskbit »

It might be worth splitting this off into another thread, so I'll do that depending on how the conversation goes.
Memblers wrote: Tue Sep 09, 2025 11:04 am One thing that's been bugging me for a while, I could swear that I remember that somebody years ago contacted David Galoob about the GG ROM, who said it's public domain, then it started being included with emulators, but maybe it's not these days. What bugs me is that I never could find the email about it, it must have been in the NESdev email list, but I don't have a complete archive of that. I think public domain, legally, isn't a license, but morally it should be OK to use it as such.
This is very interesting. Unfortunately, I couldn't find any mention of it in our bb0, bb1, or bb2 archives, though I'm not familiar enough with NESdev history to know what those actually cover, how much stuff isn't in them, or where that remaining material might be.
Memblers wrote: Tue Sep 09, 2025 11:04 am Beware..! I believe it's possible to permanently fry the GG ASIC with incorrect usage. I'm pretty sure it's caused by running the cartridge (exiting Genie mode), without initializing the GG registers in the way the original code does. It doesn't happen immediately, it seemed like there might be days or even weeks of daily use between failures, but I had to socket both chips on my GG because I fried at least 3 ASICs myself, probably some more for earliest Cheapocabra devkit users. ESD event coincidence is still possible but doubtful. After making a software change, it's lasted for years without failing.
Does this suggest some kind of sustained bus conflict? Is there anything about what we know about the chip that would let us guess what's going on here and how to avoid it?
Dacicus
Posts: 46
Joined: Sat Dec 20, 2008 4:59 pm

Re: Game Genie Game mini-jam

Post by Dacicus »

Asking this now so I don't forget once the mini-Jam is underway: Do we need to mess with the Game Genie's registers that are described on the wiki in order to get it into a proper initial state for this mini-Jam?
User avatar
TakuikaNinja
Posts: 441
Joined: Mon Jan 09, 2023 6:42 pm
Location: New Zealand

Re: Game Genie Game mini-jam

Post by TakuikaNinja »

The GG ROM doesn't touch the $800x registers until it switches to game mode. Here's an overview of the RAM code it transfers & executes for this:

Code: Select all

$8001-$800C = values stored in $90-$9B (all $FFs when no codes are entered)
$8000 = value stored in $89 (%01110001 when no codes are entered), bit 0 = 1 switches to game mode
$8000 = 0 (reason unclear)
jump to reset vector
So it's probably safe to skip initialising these registers so long as you don't intend on switching to game mode. (It would be quite worrying if leaving the GG menu running posed a risk...) That said, I think it would be funny if a jam entry maintained the game mode switch and/or the code functionality somehow.

It does do that "write 0 to $FFF0, $FFF1, then $FFF0 again, with delays in between" sequence on reset, though. Did anyone ever look into what those registers could be mapped to?
lidnariq
Site Admin
Posts: 11813
Joined: Sun Apr 13, 2008 11:12 am

Re: Game Genie Game mini-jam

Post by lidnariq »

Memblers wrote: Tue Sep 09, 2025 11:04 am Beware..! I believe it's possible to permanently fry the GG ASIC with incorrect usage. I'm pretty sure it's caused by running the cartridge (exiting Genie mode), without initializing the GG registers in the way the original code does. It doesn't happen immediately, it seemed like there might be days or even weeks of daily use between failures, but I had to socket both chips on my GG because I fried at least 3 ASICs myself, probably some more for earliest Cheapocabra devkit users. ESD event coincidence is still possible but doubtful. After making a software change, it's lasted for years without failing.
Have you tried to get the dice of these photographed? It'd be nice if we could figure out why the software does what it does, especially those writes to $FFFx.

Based on this anecdote it kinda sounds like it might be an asynchronous reset...

There was a recent decap of a 2C07 that sustained massive damage and the damage was visible.
User avatar
freem
Posts: 186
Joined: Mon Oct 01, 2012 3:47 pm
Location: freemland (NTSC-U)

Re: Game Genie Game mini-jam

Post by freem »

I wrote a small invitro for the jam. NTSC-only because I'm lazy. (The QR code redirects to this thread.)

Uses Famitone 5 by nesdoug and Shiru.
ggjam_invitro_000.png
You do not have the required permissions to view the files attached to this post.
User avatar
matthughson
Formerly Goose2k
Posts: 349
Joined: Wed May 13, 2020 8:31 am

Re: Game Genie Game mini-jam

Post by matthughson »

Thanks amazing, @freem! It's honestly already beyond what I thought was possible for this jam! HYPE TRAIN!!!
User avatar
Dwedit
Posts: 5263
Joined: Fri Nov 19, 2004 7:35 pm

Re: Game Genie Game mini-jam

Post by Dwedit »

The homebrew game F-FF implements an F-Zero-like game at the same resolution.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
User avatar
matthughson
Formerly Goose2k
Posts: 349
Joined: Wed May 13, 2020 8:31 am

Re: Game Genie Game mini-jam

Post by matthughson »

Has anyone set up a basic CC65 template for entries? Something with the config already setup properly, and the CHR ROM created?
User avatar
TakuikaNinja
Posts: 441
Joined: Mon Jan 09, 2023 6:42 pm
Location: New Zealand

Re: Game Genie Game mini-jam

Post by TakuikaNinja »

Since only a maximum of 16KiB PRG and 8KiB CHR is allowed, any NROM-128 template should be a decent base for any of the mapper options presented here.