Honoring the Old Pokémon Games Without Borrowing Them
Gold, Silver and Crystal run every step the player takes through one routine that moves the party’s eggs toward hatching every 256 steps, raises the party’s happiness every 512, and hurts a poisoned Pokémon every 4; Emerald grows its berries on the real-time clock in four stages, 4 to 96 hours from planting to fruit, and lets a two-word saying drift by 5 points a day and spread from save to save.1234 Those are mechanics, and mechanics are what an homage can keep. The record says what it cannot: every fan game, toolkit and forum in this record that was taken down from 2016 to 2024 was built on Pokémon’s own names, art or code, or linked to games that were,5678 and the one case fought over mechanics, the Palworld suit filed in Tokyo on September 18, 2024, rests on patents whose claims require aiming and throwing a capture item, a capture-likelihood indicator, or boarding a rideable character in mid-air.910111213 So I read the four decompilations for the systems, read the claims and the court reports for the line, and wrote a brief for our app, Kiradex, that keeps the walk, the clock, the card, the drop, the weekly hall and the spreading saying, and draws every pixel, word and number of them itself.
TL;DR
- Walking was the currency. Both engines send every overworld step through one function that eggs, friendship, poison, Repels, the Safari Zone and rematches all listen to; the beats are coarse (4, 128, 256 and 512 steps) so a reward lands as an event, and the budgets are spent in steps rather than seconds: 500 for a Safari Zone outing, 100, 200 and 250 for the three Repels.1214151617
- The clock gave the week a shape. Crystal cuts the day at 4, 10 and 18 o’clock, holds its Bug-Catching Contest on Tuesday, Thursday and Saturday for 20 minutes, draws a Lucky Number every Friday against every Pokémon you own, and resets 16 daily flags at midnight; Emerald runs eleven updates when the date changes and grows berries from the minutes elapsed when you return.18192021223
- Status was shown to someone. Emerald’s Trainer Card changes color with each of four stars, each a different kind of play; a box holds 30 in a 6-by-5 grid; a Battle Frontier challenge at the Tower, Palace, Arena or Factory is 7 battles (a Dome tournament is 4, a Pike run 14 rooms, a Pyramid climb 7 floors), and the Battle Tower’s Frontier Brain is the 35th and the 70th battle of a streak.232425
- Other people’s worlds arrived in yours. Record mixing copies 5,188 bytes between saves: 20 Secret Bases, 25 TV show slots (20 of them reserved for shows that only arrive this way), 5 trendy phrases and a Battle Tower record; one player in five starts with the Hipster, who teaches one hidden word each time he arrives.262728
- Copyright, trademark and patent are three different lines. Uranium’s developers said in 2016 that no one had contacted them and they pulled the game after takedown notices; Prism got a cease-and-desist on December 21, 2016; Relic Castle went offline in March 2024 after a reported DMCA notice; Palworld is the only patent case, narrowed in November 2025 to older versions of the game, with an injunction still sought and no ruling reported as of October 4, 2026.5682930
- The tribute games kept the genre and dropped the name. None of the Steam store descriptions I checked, for six tribute games and Palworld, says “Pokémon”; their developers say it freely in interviews, as an influence.3132
- What this gives Kiradex. A brief, not a build: a plant on the sill that grows every 256 plaza steps, a morning crate on the app’s own clock, four stars on the collector’s card, a one-way drop on a route (the elevation and routes posts decide it), hall rosettes for every seven entries in the weekly hall, and a two-word saying that spreads between plazas; each with what it must not resemble and a check a test can run, and a list of things the app must never do. Four patents read, no patent search on step counters or clocks, and no lawyer: this is a developer’s reading, not legal advice.33
1. What “the feel” was made of, and how I measured it
This post is not about the creatures in Red, Gold or Ruby. It is about the moments around them: the egg that hatched on the walk home, the radio show on a Friday, the card that turned gold, the friend’s Secret Base that appeared in your own game after a link cable afternoon. Those moments are systems, and systems are what this post is about. The earlier posts in this series measured the tiles, the people and the buildings; this one measures the loops that made a pocket world feel alive while the cartridge was off, then reads the legal record around the games that loved it, then writes down what our own town can borrow and what it must not.343536
Kiradex is a card scanner with a pixel town beside it, Kiradex World: a plaza of 16-pixel tiles where collectors walk, say preset lines and show their cards.34 The cards it scans are real Pokémon cards, which is exactly why this post has to be careful. The app’s own rules, written before any of this research, already say “nothing of theirs in the world”: no creatures, no trainers, no capture devices, no gym or badge designs, no music, no “Poké-” names.37 The question this post answers is the next one: what can a town like ours take from games that so many collectors grew up inside, and how do we know?
The method
The first half was read from the source, not from wikis; one paragraph, on the Pokéathlon, is the exception and says so. The pret project maintains decompilations of the Game Boy and Game Boy Advance games: C and assembly that rebuilds each game, its README listing the SHA-1 of every ROM it reproduces, with the game’s constants named and, in places, commented by the people who reverse-engineered them. I used shallow clones of four of them, each at a master-branch commit: pokered at d2704a6 (committed September 22, 2026), pokecrystal at 5beda23 (September 29), pokeemerald at 731ad5b (October 1) and pokefirered at 037335f (September 26).38 A script, measure_systems.py, prints every constant quoted in sections 2 to 6 with its file and line and derives the counts (berry stage hours over 43 berries, phone and rematch slots, TV show kinds, daily flags); a second, measure_map_features.py, walks every Emerald map, resolves each layout’s cells against its tilesets’ attribute tables, and counts ledge, bike-only and tall-grass cells and cuttable trees by map type.3839 Numbers from those two scripts are measured; the descriptions of what fires when are my reading of the code paths they point at. Where the decompilation carries a comment, I read the code it describes as well, because the two can disagree: in Crystal’s step routine a caller’s comment says happiness rises every 256 steps, and the routine it calls acts on every other call, so section 2 follows the code.2 Ruby and Sapphire are not in the clones; where this post says something about them, it is read from the Emerald and FireRed code that interprets a Ruby or Sapphire save.23
The second half was fetched on October 4, 2026 and saved: Nintendo’s and The Pokémon Company’s own releases and rules pages, Pocketpair’s notices, the three Japanese patents and one US patent from Google Patents (the Japanese claims with Google’s English machine translation, the US claims in the patent’s own English), the Steam store records of six tribute games and Palworld, and reports from named outlets with their dates. Each claim in sections 7 to 11 is cited to the document or the outlet. Where a page could not be reached, I say so. Where I draw a conclusion, I label it as mine.
Nothing in this post is legal advice. I am a developer who read the documents; I have not consulted a lawyer about any of it, and I read four patents, not the companies’ whole portfolio.
The research behind the post is a dossier in the Kiradex repository with a URL on every fact and a [measured] tag on every number a script produced; the post is that dossier made readable, and section 14 is its brief.33
2. The step counter: walking was the currency
The handhelds had one verb the player never stopped doing. Both engines route it through a single function that everything else listens to, and reading those two functions is the fastest way to see how much of the old games’ life was paid for in steps.
Gold, Silver and Crystal: CountStep
In Crystal, every overworld step goes through CountStep in engine/overworld/events.asm. It skips link rooms, lets a pending special phone call or a Repel wearing off take the step first, then increments a poison counter and a one-byte step counter, and acts on the counter’s value. The comments in the decompilation say what each branch does: “Every 256 steps, increase the happiness of all your Pokemon”; “Every 256 steps, offset from the happiness incrementor by 128 steps,” decrement the eggs’ hatch counters (the code compares the counter with $80, 128); “Every 4 steps, deal damage to all poisoned Pokemon.”1 The first of those comments describes the call, not the result. StepHappiness, the routine it calls in engine/events/happiness_egg.asm, opens with its own comment, “Raise the party’s happiness by 1 point every other step cycle”: it flips a second one-byte counter between 0 and 1 (and 1) and returns without doing anything on every other call, so the party’s happiness rises by 1 every 512 steps, eggs skipped.2 The egg comment ends with a limit: the counting stops at the first “one that is ready to hatch.” DoEggStep, in engine/pokemon/breeding.asm, walks the party in order, takes 1 from each egg’s counter, and returns as soon as a counter reaches 0; CountStep then hands the step to the hatching script, and any egg later in the party waits for the next beat.40 On every step CountStep also adds 1 experience point to each of the two Pokémon left at the Day-Care, and last it counts bike steps.1
The bike is the best joke in the routine. In Gold, Silver and Crystal the bike shop lends you a bicycle, and the owner’s number goes into your phone; once you have ridden at least 1,024 steps inside phone coverage, he calls you, and the bike counter saturates at 65,535 rather than wrapping.1 The bike is an advertisement you ride, and the game counts whether you were seen on it.
Emerald: TryStartStepCountScript
Emerald hangs more on the step. In src/field_control_avatar.c, TryStartStepCountScript advances, in order: the rematch counter, a friendship counter, the Faraway Island counter, poison, egg hatching, the expiry of abnormal weather, a Braille puzzle that opens a cave entrance, five scripted phone calls, the Safari Zone, the S.S. Tidal’s corridor, and Match Call. Poison bites every 4 steps (%= 4), but never inside a Secret Base.14 Friendship is not a sure thing. Every 128 steps (the counter is kept %= 128), the game calls AdjustFriendship once for each party slot, and that function, under the comment “50% chance every 128 steps,” returns early when Random() & 1 is set; so each Pokémon in the party, eggs excepted, gets its own coin flip and gains friendship only on the beats it wins: on average, once every 256 steps.1415
Eggs run on their own clock. The Day-Care’s step counter is one byte that fires when it reaches 255 and wraps, so every 256 steps each egg in the party, up to the limit below, loses one hatch cycle, two with a Flame Body or Magma Armor partner in the party. Emerald has the same limit in its own form: the loop skips an egg flagged as corrupt data (MON_DATA_SANITY_IS_BAD_EGG), and when it meets an egg whose counter is already 0 it stops and hatches that egg, so eggs later in the party wait for the next beat. The Day-Care also rolls for a new egg on the same 256-step beat, when the low byte of the second parent’s step count reaches 0xFF.41
Budgets, not timers
The other kind of step is a budget, spent once. The Safari Zone is the clearest example. In Red and Blue the gate charges ¥500, hands over 30 Safari Balls and writes 502 into the step counter, and then walks you three steps into the park automatically; Emerald sets its counter to an even 500.16 Why Red starts from 502 rather than 500 the code does not say, and I have not run the game to count how many of those three steps the counter takes. Repels are budgets too, unchanged from Red to Emerald: 100 steps for a Repel, 200 for a Super Repel, 250 for a Max Repel.17 Rematches became a budget in Generation 3: after five badges, Emerald’s rematch counter fills to 255 steps, and on the next map load a random trainer on that route may want to battle again; FireRed and LeafGreen’s VS Seeker, the device that asks trainers for rematches, can be used again only after 100 steps.42
What a step pays for, in steps per event; drawn by figures.py from measure_systems.out.txt.43
Why it worked
Three design consequences fall out of the code, and they are the part worth keeping.
Everything is on a coarse beat. Eggs move every 256 steps in both generations; Gen 2 raises happiness every 512, and Gen 3 gives each Pokémon in the party a coin flip for friendship every 128. The player never sees a number tick; they see an occasional event, a message that an egg is moving, a Pokémon that is suddenly friendlier. A one-byte counter is the cheapest clock a Game Boy has, and, on my reading, it is also why the reward feels like weather rather than like a progress bar: you cannot watch it, so you notice it. Emerald’s coin flip makes the weather literal: the same walk can raise friendship or not.121415
Budgets are spent by moving, not by waiting. The Safari Zone’s 500 steps and a Repel’s 100, 200 or 250 are only spent when you walk. A player who stops to read, to think, or to put the console down for dinner loses nothing.1617 For a phone app, where the screen is put down every few minutes, that is a better contract than a countdown.
Walking is a social signal. The bike-shop call is the game noticing that you were out on its bike, and Emerald’s rematch counter lets a route “remember” that you left and came back.142 On my reading, the step counter’s deepest trick is that it makes the world respond to the player’s presence without asking the player to do anything but be there.
None of it needs a creature: a counter, a beat, a budget. Copyright does not reach a method of operation, which is where a counter lives;44 whether anyone holds a patent on a step-driven mechanic is a question I did not search, and section 14 says so. Section 14 spends the counter on a plant.
3. The clock and the calendar: the week had a shape
Gold and Silver put a real-time clock in the cartridge, and the designers spent it on appointments. Emerald kept the clock and moved the appointments onto a calendar that advances by itself. Between them they are the best argument I know for a world that changes while you are away.
Three parts of the day
Gold, Silver and Crystal split the day in three: morning from 04:00 to 09:59, day from 10:00 to 17:59, night from 18:00 to 03:59. The constants are MORN_HOUR 4, DAY_HOUR 10 and NITE_HOUR 18, and the TimesOfDay table carries the comment “0400-0959 morn | 1000-1759 day | 1800-0359 nite”. An unused BetaTimesOfDay table with the values 20, 40 and 60 survives beside it in the decompilation.18
Kiradex already keeps time, and deliberately not on those hours. Its Daylight.Phase is morning from 6 to 9, day from 9 to 17, evening from 17 to 20 and night otherwise, with four light levels of its own; the brief in section 14 keeps it that way.45
Appointments on named days
The Bug-Catching Contest in the National Park is held on Tuesday, Thursday and Saturday: the gate’s script checks the weekday for those three and no others. It lasts 20 minutes of real time and gives 20 Park Balls (BUG_CONTEST_MINUTES 20, BUG_CONTEST_BALLS 20), and a daily flag stops a second entry the same day.19 Crystal resets 16 daily flags at midnight, two bytes of eight: Kurt’s ball-making, the contest, a swarm, the fruit trees, a haircut, the department store’s TM, the move tutor and others.20
The Lucky Number Show is weekly. A countdown to the next Friday picks a new five-digit number; the game compares it with the trainer ID on every Pokémon you own, in the party and in all 14 boxes, matching from the rightmost digit; all five digits pay first place, three or four second, two third.21 Twenty-four trainers in your phone each have one weekday and one time of day when you can call them for a rematch, spread three or four to a weekday, and section 6 comes back to them.46
The day and the week in Crystal, and the app’s own day; drawn by figures.py from measure_systems.out.txt and Daylight.swift.43
Emerald’s calendar
Emerald runs eleven “per day” updates whenever the date changes, in UpdatePerDay: clear the daily flags; move the trendy phrase; age the TV shows and outbreaks; the weather; Pokérus; the Mirage Island number; Professor Birch’s state; two Battle Frontier characters, one call each; the Shoal Cave items; and the lottery number. The same file skips all of it while the player stands inside a Pokémon Center.22 Emerald names 12 daily flags, and 9 of them are a free berry from someone: the Contest lobby, three route characters, the Berry Master and his wife, Lilycove, the flower shop and Sootopolis. The other three are the Secret Base, the lottery ticket and the Apprentice leaving.47
A garden that grows in real hours
A Gen 3 berry tree has stages Planted, Sprouted, Taller, Flowering and Berries, plus a “sparkling” stage for event trees, and the save holds 128 tree slots.48 Growth runs on minutes of the real-time clock, not on steps: UpdatePerMinute hands the minutes elapsed to BerryTreeTimeUpdate, each stage lasts stageDuration × 60 minutes, and the Berries stage lasts four times as long; then the tree replants itself at Sprouted with its uncollected berries gone (berryYield = 0), up to 10 regrowths before it is cleared.3 A tree is also cleared when the minutes handed to it at once reach 71 stage-lengths, which is my reading of minutes >= GetStageDurationByBerryType(tree->berry) * 71: about three days away for a berry whose stage lasts an hour.3
Across the 43 berry definitions, stageDuration is 1 hour for 5 berries, 3 for 12, 4 for 1, 6 for 11, 12 for 1, 18 for 5 and 24 for 8, so planting to first berries takes 4, 12, 16, 24, 48, 72 or 96 hours.3 Watering is recorded once per stage, four flags, and the yield is drawn at random from a band that rises with the number of watered stages: none gives the berry’s minimum, and each watered stage moves the band a quarter of the way from minimum to maximum, with the draw rounded (CalcBerryYieldInternal).3 Enumerating that function over the 43 berries’ yield ranges: for the 33 whose maximum is at most two above their minimum, four watered stages always give the maximum; for the other 10, which yield 2 to 6 or 3 to 6, four watered stages give the maximum or one less, and a berry that yields 2 to 6 gives 2 or 3 with one watered stage, 3 or 4 with two, 4 or 5 with three and 5 or 6 with four.49
How long Emerald’s berries take; drawn by figures.py from the stageDuration counts in measure_systems.out.txt.43
The idea outlived the Game Boy Advance. HeartGold and SoulSilver’s Pokéathlon, which I did not measure and know only from Serebii’s guide, gives “plus 100 points if you came in first” after each round of three events, and the items its shop sells “change each day.”50
Why it worked
The week had shape. Gold and Silver spent their clock on appointments: a contest three days a week, 24 trainers each reachable at one time of day on one weekday, a draw on Fridays, 16 things that come back at midnight.19462120 Emerald turned appointments into drift: the trendy phrase moves by 5 a day, an outbreak runs for 2 days, the news counts down 4, berries take 4 to 96 hours.451273 On my reading, the result is a world that changed while the cartridge was off, which is the whole reason to turn it back on.
Two details matter for a phone. Emerald refuses to run the day’s updates inside a Pokémon Center, so there is a safe room where nothing changes under you.22 And berry growth is computed from the minutes elapsed when you return, not by a timer that has to keep running, so the tree keeps growing while you are away. It does not wait for you, though: a ripe crop stays on the tree for four stage-lengths and then falls, four hours for a berry whose stage lasts an hour, and an absence of 71 stage-lengths clears the tree.3 That is how I want our app to work too: compute the world’s state from the clock on arrival, and never depend on a timer that has to keep running while the phone is in a pocket. Section 13 has the API side.
4. Things you show: the card, the boxes, the streaks, the draw
The old games gave status a physical form, and every one of those forms was something another player could see.
The Trainer Card and its stars
Emerald’s Trainer Card changes color with its star count: green at none, then bronze, copper, silver, and gold at four. FireRed and LeafGreen’s Kanto card runs blue, green, bronze, silver, gold.23 Emerald’s four stars, in CountPlayerTrainerStars, are four unrelated achievements: entering the Hall of Fame; completing the Hoenn Pokédex; having all five Master-rank contest paintings in the Lilycove Museum; and holding every Battle Frontier symbol.23 When Emerald reads a card from Ruby or Sapphire, it counts the stars in GetRubyTrainerStars instead: the Hall of Fame, the Hoenn Pokédex and the paintings still count, and more than 49 straight Battle Tower wins (battleTowerStraightWins > 49) takes the place of the Frontier symbols.23 FireRed and LeafGreen’s card, as built for a link partner, counts the Hall of Fame, the Kanto Pokédex, the National Pokédex, and one star for two wireless minigames together: 200 berries picked and 200 jumps in a row.52
The card is also a social object. It carries an Easy Chat profile, link-battle wins and losses capped at 9,999, trades, contest and Pokéblock counts with friends, and the time of your Hall of Fame debut, capped at 999 hours, 59 minutes and 59 seconds.23
Why it worked. Four long feats of four different kinds, each recoloring the thing other people see when you link, so the color reads from across a room. FireRed spends one of its four stars on play with friends. Nothing on the card is bought; on my reading, that is what makes a gold card worth showing.
The PC boxes
Storage grew by generation. Red and Blue hold 12 boxes of 20, 240 in all; Gold, Silver and Crystal 14 of 20, 280 (the Japanese build defines 30 per box); Ruby, Sapphire and Emerald 14 boxes of 30, 420, each box a grid of 6 by 5 with a name and a wallpaper.24 A box of 30 is the same idea as a binder page: a fixed grid that rewards arranging, and the wallpaper makes it a room as much as a list.
Ribbons and coins
Emerald defines 32 ribbon IDs: a Champion ribbon; 20 contest ribbons, five categories at four ranks each; Winning, Victory, Artist and Effort; and seven gift ribbons. A ribbon that takes a Pokémon past four (the code tests GetRibbonCount(...) > NUM_CUTIES_RIBBONS, and that constant is 4) can create a TV show about its owner, if a slot is free and no such show is already waiting; the show is created switched off (active = FALSE, commented in the source as not active until passed by record mixing), so it reaches a television only after record mixing carries it to another game.532754 Game Corner coins cap at 9,999 (MAX_COINS).55 The coins are the one system in this post that section 14 refuses outright, for reasons that have nothing to do with Nintendo: Kiradex is used by children,36 and the collecting research behind its world already rules out random paid items and anything shaped like a slot machine.33
The Battle Tower and the Frontier’s streaks
A challenge at the Battle Tower, Palace, Arena or Factory is 7 battles; a Battle Dome tournament is 4 (DOME_ROUNDS_COUNT 4), a Battle Pike run is 14 rooms (NUM_PIKE_ROOMS 14), not all of them battles, and a Battle Pyramid climb is 7 floors. FRONTIER_STAGES_PER_CHALLENGE 7 is a shared constant, not a rule every facility follows. Streaks count to 9,999.25 Each facility’s Frontier Brain appears at fixed points in a streak, paying a silver symbol and then a gold one. The table in frontier_util.c is not read as it stands: the check adds a per-facility modifier to the current streak and compares the sum with the table (winStreak + modifier == value). The modifier is 1 for the Tower, Palace, Arena, Factory and Pike, so the Brain is the 35th battle, not the battle after 35 wins; it is 0 for the Dome, whose streak counts tournaments won, and the Pyramid, whose streak counts floors cleared.25
| Facility | The streak counts | Silver Brain | Gold Brain |
|---|---|---|---|
| Battle Tower | battles won | 35th battle | 70th battle |
| Battle Dome | tournaments won | 5th tournament | 10th tournament |
| Battle Palace | battles won | 21st battle | 42nd battle |
| Battle Arena | battles won | 28th battle | 56th battle |
| Battle Factory | battles won | 21st battle | 42nd battle |
| Battle Pike | rooms cleared | 28th room | 140th room |
| Battle Pyramid | floors cleared | after 21 floors | after 70 floors |
Source: frontier_util.c (the table and the check), the facilities’ scripts for what each streak counts, read by measure_systems.py and by hand.25
The Tower’s milestones are the cleanest shape: sets of seven, and the boss as the last battle of the fifth set and again of the tenth. The streak is the content; the boss is the punctuation.
The draw that rewards the size of the collection
Emerald’s Lottery Corner draws a new number every day and checks it against the trainer ID on every Pokémon you own, party and boxes, matching from the rightmost digit; the code says “do not calculate ticket values for eggs.” Two, three, four or five matching digits pay a PP Up, an Exp. Share, a Max Revive or a Master Ball, and a daily flag allows one ticket a day (FLAG_DAILY_PICKED_LOTO_TICKET).56 Crystal’s weekly Lucky Number pays three tiers the same way, at two, three or four, and all five digits.21
Why it worked. The draw turns the boxes into tickets. Every Pokémon you own counts, including traded ones that carry other trainers’ IDs, so a big, varied, traded collection is literally luckier. It is also a draw, and a draw makes the reward random, which this series’ rule for cosmetics, “never random, never on a countdown,” refuses; section 14 leaves it out.36
5. Ground that remembers: ledges, cut trees and two bikes
The routes between towns had their own vocabulary of one-way edges and locks you could see before you could open them. I counted them in Emerald with measure_map_features.py, which reads every map’s layout cell by cell and looks up each cell’s behavior in its tilesets’ attribute tables. The counts are cells, not features: one long ledge is many cells, and a layout shared by several maps is counted once.39
Ledges are a route device
Across Emerald’s 41 route layouts, 87,787 cells in all, there are 726 one-way ledge cells (the MB_JUMP_* behaviors) and 2,777 tall-grass cells; 21 of the 41 routes have ledges. The first four routes have 13, 17, 24 and 13 ledge cells. Ledges also appear in the 9 city layouts (34 cells), underground (215) and indoors (48), and in none of the 7 town layouts.39
Ledge cells by map type in Emerald; drawn by figures.py from the output of measure_map_features.py.4339
A ledge lets the player go down fast and forces the way back to be different, so a short route has a loop in it. The town, where people live and the player arrives, never has one.
Locks seen early: cut trees and the two bikes
Emerald places 33 cuttable-tree objects, 22 on routes and 11 indoors, mostly in gym puzzles.39 The two bikes gate different ground. Mach Bike cells, muddy slopes and cracked floors, number 52 on routes and 150 underground; Acro Bike cells, rails and bumpy slopes, number 85, all on routes.39 The Mach Bike accelerates through three speeds (sMachBikeSpeeds = {NORMAL, FAST, FASTEST}); the Acro Bike reads B held with a direction as tricks, a wheelie and a bunny hop.57
Why it worked
Locks you can see before you can open them are promises. Cut trees and bike-only ground show the player a shortcut on the first walk and pay it off on a later one, and Emerald’s two bikes with two kinds of locked ground make the choice of bike a choice of which half of the shortcuts you see this trip.3957 Ledges do the same work for direction: down is fast and free, up is a different road.
Ledges are also the one place in this post where an earlier decision of ours pushes back. The structures research refused ledges, on the ground that free height is hard to read top-down, and the structures post lists “a one-way ledge” among the things the town does not have.3533 A one-cell, one-way drop is not free height: it has no z axis, only a one-way edge in the walk graph. So the brief proposes a narrowed form and leaves the decision where it belongs, with the elevation and routes posts still to come.
6. Other people’s worlds: record mixing, the trendy phrase, the phone
The systems in this section are the ones I most want for a plaza, because they are about other players without needing other players to be online at the same moment.
Secret Bases and record mixing
A Secret Base in Emerald holds up to 16 decorations; the player’s bedroom holds 12; and a save keeps 20 bases, yours plus the ones you have received from other players.58 Received from where? From record mixing: when two players link and mix records, the games copy a record of 0x1444 bytes, 5,188, between saves. Its fields, in order, are all 20 Secret Bases, 25 TV show slots, the news, the Mauville Old Man, 5 trendy phrases, Day-Care mail, a Battle Tower record, a gift item, the Lilycove Lady, two Apprentices and the hall records.26
So after a link cable afternoon, your friend’s base is in your game, and you can walk into it. Their TV shows play on your television. Their Battle Tower record comes along too. On my reading, most of what felt alive in Emerald arrived from someone else.
The TV
Emerald’s TV has 25 show slots: 5 for shows about your own play, 20 for shows that arrive only by record mixing. There are 11 “normal” show kinds and 19 kinds that only exist through record mixing (Trend Watcher, Secret Base Visit, Lotto Winner, Spot the Cuties and others), plus the Mass Outbreak report; news events count down 4 days before they air.27 After the game is cleared, each battle you finish, whether or not you caught anything, has a 1-in-200 chance (rbernoulli(1, 200)) to schedule an outbreak report, unless it was a link, Safari, Battle Frontier or other special battle, or an outbreak report already sits in the first 24 of the TV’s 25 slots (the check stops one short of the last), and only if one of the 5 slots for your own shows is empty. The report waits a day before it can air (daysBeforeOutbreak = 1, counted down by the daily update), and the outbreak itself starts only when you watch the report on a television, which calls StartMassOutbreak; from then it lasts 2 days and makes the reported species half of the encounters on one route (probability = 50).51 Outbreak shows travel by record mixing like any other show, so a friend’s outbreak can arrive on your television.5126
The trendy phrase: a saying with a half-life
The “Dewford Trend” is two Easy Chat words that the people in Dewford Hall repeat. The comment block at the top of dewford_trend.c is a design document. Each phrase has a trendiness “Initialized as a random value between 30-127 inclusive”; “If a submitted phrase is less trendy than the current one it won’t be accepted”; and a phrase that is “boring” will “lose trendiness over time until it reaches 0,” then gain again up to its maximum, where it turns boring once more.4 The code has two exceptions to that acceptance rule. The first phrase a save ever submits, if the save has never mixed records, replaces the current words with no comparison at all; and when a new phrase ties the current one on trendiness, the higher maximum wins, and if those tie too, a coin flip (Random() & 1) decides.4 The daily update moves each phrase by 5 points for each day elapsed (clockRand = days * 5).4 Five phrases are kept, sorted by trendiness; when you mix records, your phrases are replaced by your partner’s, “unless the phrase is the same, in which case the version with a higher trendiness value is used.”4
The Hipster and the hidden words
Trendy Sayings are a different thing: a hidden Easy Chat group of 33 words.28 The decompilation’s comment says how you get them: they are “normally inaccessible,” and “The Hipster can unlock one word each time he is received via record mixing (and once if he is the player’s default Old Man).”28 The Mauville Old Man comes in five kinds (Bard, Hipster, Trader, Storyteller, Giddy), and which one your game starts with is set by the last digit of your trainer ID, (trainerId % 10) / 2. So the Hipster is the default only when that digit is 2 or 3: one player in five. Everyone else has to mix records with one of those players to meet him.28
Phone rematches and calls
Crystal’s phone holds 10 contacts (CONTACT_LIST_SIZE 10). Twenty-four trainers can be ready for a rematch, one daily flag each; 10 can phone to say they have an item for you; and each of the 24 has one weekday and one time of day when you can call them, 9 in the morning, 7 in the afternoon and 8 at night, three or four to a weekday.46 Incoming calls are rationed: a timer (ReceiveCallDelays) of 20 minutes after each call you receive, shortening to 10, 5 and then 3 each time it runs out without one, gates a roll the source comments as “50% chance for a call”; the caller is drawn from the contacts available at that time of day, and no call comes while you stand on an entrance or outside coverage.59
Why it worked
Other people’s worlds arrived in yours. Five kilobytes carried 20 bases, 20 slots of other people’s television and 5 sayings.2627 None of it needed the other player to be there when you played; it needed you to have met them once.
The trendy phrase is a contagion with a half-life. After a save’s first phrase, a new one takes over a town only if it beats the current one, fades as it gets boring, and spreads by contact; when two saves meet, the trendier copy of a shared phrase wins.4 That is a complete social mechanic in a handful of numbers: a score, a drift, a contact rule.
The Hipster is scarce by design. One player in five has him; the rest meet him through someone who does, and each meeting can teach one of 33 hidden words.28 The vocabulary itself becomes a collectible that travels from person to person.
Interruptions are rationed. A call is gated by a timer and a coin flip and never lands while you stand in a doorway; right after one call the wait is longest, 20 minutes.59 On my reading, a world that talks to you is charming only as long as it rarely does.
7. Three different lines: copyright, trademark, patent
Everything from here to section 11 is the record: what Nintendo and The Pokémon Company have acted against, on what ground, and what they have let be. It matters to keep the three kinds of protection apart, because people who talk about copying Pokémon usually mean one of them and are answered with another.
Copyright protects expression. The U.S. Copyright Office’s Circular 33 puts ideas, procedures, processes, systems and methods of operation outside copyright; specific tiles, sprites, music, text and characters are protected expression.4434 The first post in this series says it in its FAQ, corrected today to name copyright: style, method and system are not protected by copyright; specific expression is.34 Everything in sections 2 to 6 is, on my reading, method: a step counter, a clock, a card with stars, a phrase with a score.
Trademark protects marks. The Pokémon Company’s own Japanese site states that “ポケットモンスター・ポケモン・Pokémon” are trademarks of Nintendo, Creatures and GAME FREAK.60 A name used to sell a product is a trademark question; the same name used to describe what something is, as an app that scans Pokémon cards has to, is nominative use, which our own world document describes as how every other card app does it, and is the line Kiradex’s rules already draw.37
A patent protects a claimed method, step by step. Japan and the United States have granted Nintendo and The Pokémon Company patents whose claims are game programs, described as what the program makes the computer do.1161 A patent claim is a list of steps; on my reading, which is not legal advice, a claim reaches a game only if the game does every step of it, each step read the way the court construes it, or an equivalent of it, which both countries’ courts recognize. The US Supreme Court applies that doctrine of equivalents step by step, “to each of the individual elements of a claim,” and Japan’s Supreme Court set out in 1998 the conditions under which a product that differs from a claim in one part still falls within it.6263 So changing or removing a step is an argument that a changed game falls outside a claim, not a result: whether it does depends on that construction and on equivalence, and in the one case here no court has ruled. Section 9 reads the four claims that matter here.
The record below sorts every case by which of the three it was fought on. Only one was a patent case.
The record by date and by ground; drawn by figures.py from the dated pages cited in sections 8 and 9.43
8. Fan games, a toolkit and a forum: what drew action
Pokémon Uranium, August 2016: takedown notices, and no letter to the developers
Uranium is often described as a game that got a cease-and-desist; a fan-games feature Aftermath published on October 1, 2026 says it “was reportedly issued cease and desists from the legal teams at Nintendo and The Pokémon Company.”64 Its developers said otherwise at the time. Kotaku, on August 13, 2016, reported that after nine years of work the fans who made it had removed all the download links, and printed their statement in full: “After receiving more than 1,500,000 downloads of our game, we have been notified of multiple takedown notices from lawyers representing Nintendo of America.” And: “While we have not personally been contacted, it’s clear what their wishes are, and we respect those wishes deeply.” Kotaku added that the developers said they “haven’t received any cease & desist letters from Nintendo’s lawyers yet.”5 Our own world document had it as a cease-and-desist; the accurate sentence is that Uranium was pulled after takedown notices, and that the name was in its title.375
Pokémon Prism, December 2016: a cease-and-desist four days before release
Prism was different in kind: not a new game in Pokémon’s style but a ROM hack of Crystal itself, eight years in the making, planned for release on Christmas Day. Kotaku, December 29, 2016: “Nintendo hit them with a cease and desist four days before release,” and everything “seemed ready for an official release until December 21st, when representatives of Nintendo sent a cease and desist to the project.” The creator then took down his site, which also hosted two other ROM hacks, Pokémon Brown and Rijon Adventures.6 Nintendo Life, the next day, has the same date and the planned December 25 release.65 A redacted scan of the letter is posted on the Internet Archive by a third party who says a Prism contributor sent it; the uploader’s description is polemical, and I have not read the scan, so it is a lead to the document rather than a source for this post.66
Pokémon Essentials, August 2018: a toolkit
Essentials was a free toolkit for making Pokémon-like games in RPG Maker. TechSpot, August 29, 2018, following an Ars Technica report: Nintendo sent a DMCA takedown, Fandom, which hosted the toolkit’s wiki, complied, and the downloads were removed from PokéCommunity’s fan-games section. TechSpot’s own reading was that “the assets Pokemon Essentials uses appear to be identical to the ones in Pokemon games.”7
Relic Castle, March 2024: a forum, and a sender never confirmed
Our own research brief grouped Relic Castle with Essentials as a 2018 takedown.33 It was March 2024. GamesRadar+, March 22, 2024: the fan forum, running since 2014, went offline; its statement said “the Relic Castle website has been taken down following a DMCA takedown notice.” The site “didn’t host these games directly,” GamesRadar+ noted, but allowed links to them, and who sent the notice was not confirmed.8
How fan projects get noticed, in the words of the lawyer who noticed them
Don McGowan was The Pokémon Company’s chief legal officer. In March 2024 Aftermath asked him how the company handled cease-and-desist letters for fan projects, and he answered: “Short answer: thanks to you folks.” The worst thing on earth, he tells his law students, is when a fan project “gets press, because now I know about you.” And the second half: “You don’t send a takedown right away. You wait to see if they get funded (for a Kickstarter or similar); if they get funded then that’s when you engage. No one likes suing fans.”67 Video Games Chronicle carried the same quotations the next day.68
China, 2025: a copy of the whole game
The largest award in the record is a copyright and unfair-competition case, not a fan game. The National Law Review reports that on February 21, 2025, the Guangdong Higher People’s Court announced a settlement of 107 million RMB for The Pokémon Company over the game “Pokémon: Remastered,” filed in December 2021; the company had asked for 500 million RMB and had been awarded 107 million at first instance in Shenzhen.69 The first-instance court’s reasoning, as the report summarizes it, is worth reading closely for anyone writing an homage: the accused game’s characters, protagonists and maps corresponded “one-to-one” with the originals, its systems were “highly similar or even completely consistent, and many numerical system designs are the same.”69 On my reading, numbers were one strand in a finding about a game that copied everything else too; but it is a reason section 14 takes a handful of round numbers as starting points, sets its own ranges where a game’s were not round, and never imports a game’s tables.
What the record shows
All four fan cases used Pokémon’s own expression. Uranium used the name in its title and, by its developers’ count, had been downloaded 1.5 million times; Prism was a ROM hack of Crystal, built on the game’s own code and art; Essentials shipped assets a reporter called identical to the games’; Relic Castle linked to such games.5678 On my reading the ground in each was copyright: two were reported DMCA notices, which are copyright notices, though who sent Relic Castle’s was not confirmed, and the reports on the other two give no ground, but both games were built on the originals’ expression, and Uranium carried the name, a trademark matter as well. None was a patent action. The former chief lawyer adds the trigger: press, and then money.67
My reading: the record shows action against Pokémon expression, and against visibility plus funding, not against a game for being in the genre. Every tribute game in section 11 is in the genre, sells for money, and has not been reported as the target of an action. That reading is about what has happened, not a promise about what will.
9. Palworld: the one case about mechanics
Palworld is the case that changes the reading, because it is the only one in the record fought on patents. It is also still open.
The statement, January 2024
Pocketpair released Palworld on January 19, 2024.10 On January 25, The Pokémon Company posted a notice on its corporate site titled 他社ゲームに関するお問い合わせについて, which I translate as About inquiries concerning other companies’ games, in Japanese with an English text below. The English text: “We have not granted any permission for the use of Pokémon intellectual property or assets in that game. We intend to investigate and take appropriate measures to address any acts that infringe on intellectual property rights related to the Pokémon.” The game is not named.70 The Japanese text above it says one more thing the English leaves out: the inquiries included opinions that the game resembles Pokémon (ポケモンに類似しているというご意見).70 Nintendo Life’s report the same day named the game.71
The suit, September 2024
Nintendo and The Pokémon Company announced on September 19, 2024 that they had filed a patent infringement lawsuit against Pocketpair in the Tokyo District Court “on September 18, 2024,” seeking “an injunction against infringement and compensation for damages” on the grounds that Palworld “infringes multiple patent rights.”9 Pocketpair’s report of November 8, 2024 named the patents and the claim:10
| Patent | Applied for | Registered |
|---|---|---|
| JP 7545191 | July 30, 2024 | August 27, 2024 |
| JP 7493117 | February 26, 2024 | May 22, 2024 |
| JP 7528390 | March 5, 2024 | July 26, 2024 |
The plaintiffs ask for an injunction against Palworld and for 5 million yen plus late-payment damages to each of them, “compensation for a portion of the damages incurred between the date of registration of the patents and the date of filing of this lawsuit.”10 Google Patents lists Nintendo and The Pokémon Company as assignees of all three.111213 All three were applied for after Palworld’s release, but not from scratch. GamesRadar+, citing the Japanese patent attorney Kiyoshi Kurihara, reports that all three are divisional patents of a parent it describes as registered in December 2021.72 The Google Patents family tables put it differently: each of the three lists a priority date of December 22, 2021, and descends by division from an application filed that day, JP 2021-208275 for 7493117 and 7545191 and JP 2021-208276 for 7528390; those two applications were later published as JP 7398425 B2 (December 14, 2023) and JP 7349486 B2 (September 22, 2023). December 2021 is the filing date; I found no registration date for either in the saved pages.111213
What the three claims say
These are claim 1 of each, from Google Patents’ machine translation of the Japanese; the Japanese text governs, and claims can be corrected during litigation without the Google page showing it.7333 I summarize, with the translation’s own words in quotation marks.
JP 7493117, the indicator. In “the first mode,” the program determines “a direction of aim in the virtual space based on a first operation input which is a directional input”; on a second input it turns the aim toward a field character and “a first indicator is displayed”; on a third it makes the player character release “a capture item for capturing the field character in the aiming direction”; on a hit it makes “a capture success determination”; and the indicator is “information indicating the ease of making a positive judgment of the successful capture judgment.”11
JP 7545191, the throw. Pressing a button readies a stance to release either a capture item, from a first category group, or a combat character, from a second; a directional input sets the aim; an input “using an operation button different from the operation button” selects which capture item or combat character; releasing the first button throws the selected one; a capture item that hits starts the capture determination; and a combat character released where it can fight causes “a battle between the combat character and the field character on the field to commence.”12
JP 7528390, the ride. The player character is controlled by operation input; it rides one of “a plurality of types of rideable characters” it owns, and “when a first operation input is performed while the player character is in the air,” it boards “an airborne rideable character” and moves through the air.13
GamesRadar+ gives the same mapping, from Kurihara and the patent attorney firm Siarasia via Automaton: 7545191 the aim-and-throw capture, 7493117 the capture-likelihood indicator, 7528390 boarding and riding.72
What the game changed
Pocketpair’s notice of May 8, 2025 says what it did. Patch v0.3.11, released November 30, 2024, “removed the ability to summon Pals by throwing Pal Spheres and instead changed it to a static summon next to the player”; from v0.5.5, “gliding will be performed using a glider rather than with Pals.” It says plainly that “these changes were indeed a result of the ongoing litigation,” and that Pocketpair continues “to dispute these claims and assert the invalidity of the patents in question.”74 On my reading, each change touches one step of one claim: the first the thrown release of a combat character in JP 7545191’s claim 1, the second the airborne mount in JP 7528390’s. Whether the changed game now falls outside either claim depends on how the court construes those steps; Pocketpair’s notice reports what it changed, not a finding, and no court has ruled.
The narrowing, November 2025
Automaton reported on June 12, 2026, from Tokyo District Court records reviewed by its Japanese staff and from Games Fray, that the plaintiffs “revised the scope of their claims in November 2025 so that they now apply only to older versions of Palworld.” The same report: “While the plaintiffs are still seeking an injunction against Palworld, limiting the lawsuit to older versions of the game appears to reduce the likelihood that the current version will be directly affected.” The court records showed a technical briefing scheduled for October 1, 2026 and the court’s preliminary views for November 9, 2026.29
As of October 4, 2026, Pocketpair’s list of important notices has nothing about the suit after May 8, 2025, and I found no named outlet reporting what happened at the October 1 briefing. No judgment, settlement or injunction has been reported.30 Palworld left Early Access in July 2026: Steam lists the release as “9 Jul, 2026,” and Automaton reported the announced date as July 10.7529
A fan game as prior art
There is an irony in the record that deserves its own paragraph. Automaton reported on July 22, 2026 that the Japan Patent Office had sustained its rejection of Nintendo and The Pokémon Company’s divisional application No. 2026-019762, which describes an “in-game monster-capturing system.” One of the key grounds was a 2013 YouTube video of a fan game, Pokémon Generations. Nintendo’s side argued that the fan game infringed its copyrights; the examiner answered, in Automaton’s summary, that “whether an invention infringes on copyright or not has no bearing on determining inventive step.” The rejection concerns that divisional application, not the patents asserted in Tokyo, and Nintendo had three months to petition for a trial against it.76 A fan game, the kind of project the cases in section 8 were about, became evidence about the mechanic.
The US side: one patent, under reexamination
No US suit against Pocketpair has been reported that I could find. There is a US patent. US 12,403,397, assigned to Nintendo and The Pokémon Company, was filed on March 1, 2023 and granted on September 2, 2025.61 Its claim 1 moves a player character on a field and summons “a sub character” by an input; if an enemy is where the sub character appears, the battle runs in “a first mode in which the battle proceeds based on an operation input,” and if not, the sub character starts moving automatically; a second input sends it in a direction, and an enemy there starts “a second mode in which the battle automatically proceeds.”61
Engadget reported on November 4, 2025 that the USPTO Director had personally ordered a reexamination of the patent, citing a 2002 Konami application and an earlier Nintendo publication as prior art.7778 The law firm MBHB wrote on April 3, 2026 that the reexamination, No. 90/020,162, had produced a first Office Action, mailed March 25, 2026, that rejected all of the patent’s claims as obvious under 35 U.S.C. § 103, with a response due by June 25, 2026, or September 25, 2026 with extensions.79 I found no report of Nintendo’s response or of any later action.
Selected capture, combat and riding steps of claim 1 in the four patents read, with the movement step two of them share, and the app; drawn by figures.py from measure_patent_claims.out.txt and the US claim.4373
What this means for an homage
My reading, not legal advice. A claim reaches a product only if the product does every step of it, as the court construes each step, or an equivalent of it, which both countries’ courts recognize (section 7). Pocketpair changed the thrown summon and the glide and says it still disputes infringement and the patents’ validity; Automaton reports that those changes may have contributed to the plaintiffs’ narrowing to older versions, while an injunction is still sought.7429 Neither is a finding that the current game is outside the claims, and no court has ruled. Kiradex does perform one claimed step: a collector moves on a field by input, the first step of the US claim and part of JP 7528390’s, and a step most games share. It has no capture, no thrown object, no creature, no battle and no mount, and every one of the four claims also requires capture, combat or riding steps, so on my reading none of them describes Kiradex. That is a reading of four patents, not a freedom-to-operate search. Nintendo and The Pokémon Company hold other patents I did not read, and I did not search for patents on step counters, clock-driven events or spreading phrases. The never list in section 14 keeps the app away from the capture, combat and riding steps read here, and from nothing more.
10. What the companies publish
There is no published fan-game policy from either company that I could find. What they publish is narrower, and both documents point the same way.
The Pokémon Company’s site rules, in Japan
The rules page of the official Japanese site has a paragraph on derivative works, and it is a one-way license. Anyone who creates or uses a derivative work based on ポケモン財産, Pokémon property, which the page defines as material protected by copyright, trademark, patent, trade secret, privacy and publicity rights, grants The Pokémon Company group, Nintendo, Creatures, GAME FREAK and their designees a non-exclusive, sublicensable, royalty-free, perpetual, irrevocable, worldwide license to use it for any purpose. The next sentence, in my translation of 個人的な利用を超えた…利用を許諾するものではありません, says that no use the companies make of your work licenses you to use Pokémon property or your derivative work beyond personal use. Japanese law governs, and the Tokyo District Court has exclusive jurisdiction at first instance.60 The same page says the company accepts no unsolicited proposals or ideas for characters or products (企画・アイデア…一切公募をしておりません), and that the names ポケットモンスター, ポケモン and Pokémon are trademarks of Nintendo, Creatures and GAME FREAK.60
The US legal-information page at pokemon.com, where secondary sources say an English fan-art clause lives, served a bot check to my fetcher on October 4, 2026, and its archived copy returned the same block. I did not try to get past it, so its text is unverified here and this post does not quote it.80
Nintendo’s Game Content Guidelines
Nintendo’s guidelines for video and image sharing allow gameplay footage and screenshots “for which Nintendo owns the copyright” in content you make for video and image sharing sites, and say “We encourage you to create videos that include your creative input and commentary.” Monetization is allowed only through the methods Nintendo lists, and “you may not sell any videos, music, or images that you created using Nintendo Game Content.” Question 6 is the one that matters for anyone making anything else: fan art, music, and content outside gameplay footage and screenshots is outside the guidelines, and “Any other use of Nintendo’s intellectual property and creation of content outside of this scope is subject to the relevant laws of the applicable jurisdiction.”81
What that adds up to
My reading: there is no safe harbor for a fan game. Nintendo’s guidelines cover footage and screenshots and send everything else to general law; The Pokémon Company’s rules license derivative work back to the company and license nothing beyond personal use to its maker.8160 What exists instead is enforcement discretion, and section 8’s record is what that discretion has looked like. For Kiradex the practical consequences are two lines in the brief’s never list: make nothing that is a derivative work of Pokémon property, and send nothing to either company’s fan or idea channels.
11. The tribute games, in their own words
Coromon, Nexomon: Extinction, Cassette Beasts, Temtem, Monster Sanctuary and Moonstone Island all ship catch-and-raise loops in pixel or low-poly worlds, all sell for money, and none has been reported as the target of an action that I found. How they describe themselves is the most practical guidance in this post, because it is what working studios actually do.
The store pages name no one
I counted the word on the Steam store records of seven games, those six and Palworld, fetched through Steam’s app details API on October 4, 2026. In their short and long descriptions, none of the seven says “Pokémon.” They say “monster-taming RPG” (Coromon), “a return to classic monster catching games” (Nexomon: Extinction), “Collect awesome monsters” with a “Fusion System” (Cassette Beasts), “an online creature-collection adventure” (Temtem), “Monster taming meets metroidvania” (Monster Sanctuary), “a creature-collecting life-sim” with “card-based encounters” (Moonstone Island), and “Fight, farm, build and work alongside mysterious creatures” (Palworld).31 One record does contain the word: Temtem’s review-quote field carries a press line from Rock Paper Shotgun calling it “A Pokemon-like that listens to what fans want.”31 In those seven records, the studios’ own words never use the name to sell.
The interviews name it freely
In interviews the same developers talk about Pokémon openly, as an influence they started from and then moved away from. Nintendo Life asked several of them for the series’ 30th anniversary, in a feature published March 2, 2026. Crema’s Guillermo Andrades: “In the early days of developing Temtem, we wanted to create almost a 1:1 homage to Pokémon,” before the team found more room for “different approaches and unique twists.” Nexomon’s lead developer, JVemon: “Strong inspirations needed to be drawn if we were to tap into the same player base.” Coromon’s Jochem Pouwels called tall grass “a little slot machine of possibility.” Moonstone Island’s Sandy Spink: “I got an atomic purple Game Boy Color and Pokémon Blue for my sixth birthday.” And Bytten Studio’s Tom Coxon: “I’ve never felt like Pokémon was the only thing a monster-collecting RPG could be.”32
Cassette Beasts is the clearest statement of intent. Its founding question, as Nintendo Life reported in April 2023, was “How can two people make a monster-collecting game that does stuff that Pokémon doesn’t do?” Jay Baylis: “We love Pokémon, sure, but we’re not making a game meant to be a tribute or derivative.”82 Temtem’s announcement in April 2018 was reported by Gematsu as “a massively multiplayer creature collection adventure game inspired by Pokemon,” in the outlet’s words.83
Why it works
My reading: the working norm among these studios is the same one the law and the guidelines point to. Name Pokémon in conversation to describe where you came from; never use it to sell; draw everything yourself; and change the loop enough that it is yours (fusion in Cassette Beasts, cards instead of battles in Moonstone Island). Kiradex is further from the genre than any of them, with no creatures, no catching and no battles at all, and it borrows less: a walk, a clock, a card, a saying.
12. The craft, as rules with numbers
These are the rules the brief is built from. Each states a mechanic in general terms and names the measured fact it rests on. The numbers are the old games’ numbers, kept as starting points for our own tuning, never as tables to import; section 8’s China case is the reason for that distinction.69
| Element | Rule | Source |
|---|---|---|
| Step beat | Advance step-driven things on a coarse beat, 128 to 512 steps, never every step, so the reward arrives as an event, not a meter | Gen 2 eggs every 256 steps, happiness every 512; Gen 3 a 50 percent friendship roll per party member every 128, eggs every 256 |
| Step budget | Spend walk-limited things in steps, not seconds; a short, medium and long protection of 100, 200 and 250 steps; an outing of 500 | Repels, unchanged Gen 1 to Gen 3; Emerald’s Safari Zone |
| Parts of the day | Cut the day into a few named parts on the device’s own clock; ours are 6, 9, 17 and 20, not the games’ 4, 10 and 18 | Crystal’s TimesOfDay; Kiradex’s Daylight.Phase |
| Appointments | A recurring event on named weekdays, a weekly draw on one fixed weekday, at most one window per weekday per contact | Bug-Catching Contest on three days for 20 minutes; Lucky Number on Fridays; 24 rematch windows |
| Growth | Four stages of equal length, the last four times longer; computed from elapsed time on return; a ripe crop waits four stage-lengths and then falls, and only a very long absence clears the plant | Emerald berries: 4 to 96 hours, uncollected berries gone when the Berries stage ends, the tree cleared after 71 stage-lengths away |
| Safe room | A place where the day’s changes never fire while you stand in it | Emerald skips the day’s updates in a Pokémon Center |
| Stars | Four stars, four different kinds of play, each recoloring the card; never two for one activity, never one that can be bought | Emerald’s four stars and five card colors |
| Grid | A box is a page of 30, 6 by 5 | Gen 3 boxes, grown from 20 per box |
| Ledges | On routes, never in towns; 10 to 25 ledge cells on a first route | Emerald: 726 ledge cells on routes, 0 in 7 towns; 13 to 24 on Routes 101 to 104 |
| Streaks | Sets of seven, with milestones at 5 and 10 sets | The Tower’s challenges of 7; its Brain as its 35th and 70th battle |
| Spreading saying | A score that starts at random within a set range, drifts by 5 a day, turns stale at its peak and fresh again at 0; a new one replaces the old only if it scores higher; when two places meet, the higher copy of a shared saying wins; keep 5 | Emerald’s trendy phrase, whose score starts between 30 and 127; Emerald also lets a save’s first phrase in unopposed and settles a full tie by a coin flip, which the brief drops, and the brief sets its own range |
| Scarce teacher | One teacher, hard to find (ours stands in one room at a time and moves weekly), met by contact; each meeting, at most one a day, teaches the next word of a hidden list in a fixed order | The Hipster: one player in five, 33 hidden words |
| Collection draw | Studied, not built: a draw matched against everything the player owns rewards a big collection, but its prize is random, and this series’ cosmetics are never random | Emerald’s Lottery Corner; Crystal’s weekly Lucky Number; the characters post’s cosmetics rule |
| Interruptions | Gate any unprompted interruption by a timer that restarts at its longest after each one, and a coin flip, and never at a doorway | Crystal’s call timer: 20 minutes after a call, then 10, 5 and 3 while none comes, and its 50 percent roll |
| Caps | Things in a made place 16, in a bedroom 12, other people’s places kept 20 | Emerald’s Secret Base, bedroom and base caps |
| Others’ worlds | Let other players’ places, news and sayings arrive in yours, without needing them online at the same time | Emerald’s 5,188-byte mixed record |
| Expression | Mechanics plus your own expression; no names, art, music, text or code from the games | The 2016 to 2024 record; Circular 33 |
| Claimed steps | Leave out the capture, combat and riding steps of the claims read: no aimed and thrown capture item, no capture indicator, no released combat companion, no airborne mount, no summoned helper that fights in two modes | JP 7493117, 7545191, 7528390; US 12,403,397 |
Sources for the table: the step counter;121415411716 the clock;1845192146223 the card and boxes;2324 ledges;39 streaks;25 record mixing;4285826 the draw;5636 calls;59 the record and the claims.4411121361
Two rules deserve a sentence each. The safe room is the one I would not have thought of without reading the code: a world that changes on its own needs a place where it does not, and for Kiradex that is the collector’s own room. And the expression rule is the whole of the legal half in one line, which is why it sits in a design table and not in a disclaimer: it is a rule the forge follows, pixel by pixel, the way it follows the palette.
13. The Apple way: steps in the world, a day from the calendar
None of the brief needs a new framework. It needs two decisions made correctly: where a step comes from, and what a day is.
A step is a step in the plaza, not in the street
iOS offers two ways to count a person’s real steps. Core Motion’s CMPedometer, available since iOS 8.0, is “An object for fetching the system-generated live walking data,” and using it requires a usage description in the app’s Info.plist that the system shows in its permission prompt; HealthKit’s stepCount quantity type, also iOS 8.0, is “A quantity sample type that measures the number of steps the user has taken.”8485
The brief uses neither. The steps that grow the plant in section 14 are steps in the plaza. The server already rejects a move to any tile that is not walkable and rate-limits how often a collector may move; it does not yet check that a move is to a neighboring tile, so counting a step will mean counting an accepted move of one tile, which the brief’s acceptance test pins.86 My reading: asking a children’s app for motion or health permissions to grow a pixel decoration is not proportionate, it would put a health permission in a collecting app for no collecting purpose, and it would make the plant a fitness tracker, which is a different product. The old games counted steps in the world, too.
A day is the collector’s calendar day
Kiradex already reads the hour from the device clock: Daylight.Phase(hour:) maps 6 to 9 to morning, 9 to 17 to day, 17 to 20 to evening and the rest to night, and a -plazaHour launch argument fixes the hour for UI tests.45 A once-a-day event needs one more idea: a day key. Foundation’s Calendar gives it directly. startOfDay(for:) returns “the first moment of a given Date,” and isDate(_:inSameDayAs:) answers whether two dates fall on the same day, both available since iOS 8.0; passed Calendar.current, they answer in the collector’s own calendar.8788 A sketch of the check for the morning crate, not yet in the app. The crate arrives at 06:00, the start of Daylight’s morning, and waits until it is opened, so the check asks only whether today’s crate has arrived and whether it has been opened. It reads the hour the way the plaza’s stage already does, from Daylight.forcedHour when a test launches the app with -plazaHour, and from the collector’s clock otherwise, so the brief’s UI test can drive it:
/// Whether a crate is waiting for this collector now: today's crate has
/// arrived (it comes at 06:00, the start of Daylight's morning) and they
/// have not opened one today. It does not leave at 09:00.
func crateIsWaiting(lastOpened: Date?, now: Date = .now,
calendar: Calendar = .current) -> Bool {
let hour = Daylight.forcedHour ?? calendar.component(.hour, from: now)
guard hour >= 6 else { return false }
guard let lastOpened else { return true }
return !calendar.isDate(lastOpened, inSameDayAs: now)
}
That is Emerald’s UpdatePerDay in shape: the day’s state is computed on arrival from the date, and nothing has to keep running for it to be right.22 For an app left open across midnight, two notifications re-arm it. NSCalendarDayChanged is “posted whenever the calendar day of the system changes, as determined by the system calendar, locale, and time zone,” since iOS 8.0; UIKit’s significantTimeChangeNotification posts for “a change to a new day (midnight), a carrier time update, or a change to, or from, daylight savings time.”8990
What the server needs
The plaza’s server is presence-only today: it relays positions and preset lines and stores nothing.8633 Two items in the brief change that, and they are different in kind. The spreading saying needs a small persistent record per plaza room: two word indices, a score, a peak, a direction of drift and the server date the drift was last applied, with nothing about who proposed or carried the saying. That record belongs to a room, not to a person. The weekly hall’s rosettes need an entry count per collector, and that does belong to a person: it is participation history, stored against the identifier the server keys a collector by. Today that identifier is one the app makes for itself: a UUID generated on the device the first time the collector joins the plaza, kept in the app’s storage, and sent with every connection, where the server reads it as a UUID.86 The app’s world document plans to key the server by the Game Center player id instead, and says of it: “That is a persistent identifier, which COPPA counts as personal information when combined with other data,” so the design carries a privacy policy, no third-party analytics or ads, “deletion on request,” and is built “to collect as little as possible from anyone.”37 On my reading the app’s own UUID is a persistent identifier too, because it is made once and kept, so those rules apply to the entry count whichever of the two identifiers it is stored against (item 5 of the brief says how). My reading: anything shared between collectors, like the saying’s daily drift, should run on the server’s date rather than a phone’s, because a phone’s clock can be set forward; anything private and cosmetic, like the crate, can trust the phone, because moving your own clock forward to open a sticker early cheats nobody.
What it costs
Nothing here has been built, so nothing has been timed. A day key is one calendar call and a step counter is one integer per collector; I expect neither to show up in a profile, and I will not say so as a fact until a build is measured on a phone.
14. The brief: what Kiradex builds and the checks it must pass
This section is my synthesis, written for the app. Every element keeps a mechanic from sections 2 to 6 and replaces all the expression with Kiradex’s own: its palette, its forge-drawn tiles, its preset lines, its kira star. Each names what it must not resemble and a check a test, a capture or a script can run. The legal notes are readings, not advice.
What already exists and is built on: the plaza of 16-pixel tiles, with preset lines held on the server and a presence-only server that stores nothing; Daylight.swift with its own phases (morning 6 to 9, day 9 to 17, evening 17 to 20, night), which are already not Crystal’s 4, 10 and 18 and stay that way; the weekly hall with its theme; the collector’s card with patron tier, pins and levels from real scans; and each collector’s room.86453533
1. The plant on the sill: a step counter that grows something in the room
- Mechanic. Every collector’s room has one potted plant by the window. Steps in the plaza and on routes feed it: one growth stage every 256 steps, four stages (seed tray, sprout, leafy, in flower); the last stage lasts four times as long and then drops one pressed flower, a room decoration in the next of the town’s 14 palette ramps in a fixed order, never a random one, and the plant starts again at sprout. Steps inside rooms never count: the room is the safe place, the way Emerald pauses poison in a Secret Base and the day’s updates in a Pokémon Center. (Rules: step beat, growth, safe room.)1142234
- Why. Walking is the plaza’s one constant verb; a coarse beat makes the flower an event; and the flower is something to place, which feeds the room.
- Steps are plaza steps, not health data. No Core Motion, no HealthKit (section 13).
- Must not resemble. An egg, an incubator, anything that hatches, a berry tree, berry names or sprites, a watering mechanic tied to yield tiers, a Day-Care. Nothing that turns into a creature. No “berry”, “egg” or “hatch” in any string.
- Acceptance. A server test walks a bot 2,048 one-tile steps and asserts stage changes at 256, 512 and 768, one pressed flower and the plant back at sprout at 1,792 (the flowering stage lasts 1,024 steps), the next change at 2,048, and none for steps taken inside a room map or for an accepted move of more than one tile; a capture of the room at each stage shows the forge-drawn plant, and a palette check finds every pixel in the forge’s palette.
2. The morning crate: a daily clock with a morning event
- Mechanic. At the start of Kiradex’s own morning, 06:00 on the collector’s clock (
Daylight.Phase.morningbegins at 6), a delivery crate arrives outside the card shop, and it stays there until it is opened. Opening it gives the next thing on a fixed list: a sticker, a frame color, or a word for the saying (item 6). One crate a day, and they never pile up. The day’s state is computed on arrival from the local date, never by a running timer. (Rules: parts of the day, appointments, growth.)4522 - No countdown, no chance. This series’ rule for cosmetics is “never random, never on a countdown.”36 So the crate has no deadline: it does not leave at 09:00, and because its contents come in order from one list, a skipped day only delays the next sticker and never loses one. The morning is when it arrives, not a window to catch.
- The week’s shape. Give the week named days the way Crystal did, but at most one appointment a day: the hall’s judging day stays weekly, as planned, and one weekday evening the shopkeeper rearranges the window.1921
- Must not resemble. A Bug-Catching Contest (a timed catch on Tuesday, Thursday and Saturday), Kurt’s ball-making, a radio lottery show, a Pokégear or a phone. No in-game phone calls.
- Acceptance. A UI test launched with
-plazaHour 7shows an unopened crate, and so does one launched with-plazaHour 21; one with-plazaHour 5shows none yet. A unit test on the day key shows a crate opened twice on one local date grants once, and moving the date forward one day re-arms it; a test that skips three days and then opens a crate gets the next item on the list, not one three places on.
3. The collector’s card with stars
- Mechanic. The card that opens when someone taps you gains up to four stars, each for a different kind of play, and its edge changes with each star in Kiradex’s own sequence: plain at none, then matte, foil-lined, holo edge, and full kira at four. Proposed stars, each from real collecting or plaza play: a real set completed by scans; 100 different rooms visited; a placing in the weekly hall; and scans on 30 different days. Patron tier stays a separate line on the card, never a star. (Rule: stars.)23
- Why not a 30-day streak. The dossier proposed a 30-day scan streak. I changed it to 30 different days, which never expire, because a streak that breaks punishes a child for a week away, and because PEGI has rated expiring log-in streaks since June 2026, as the characters post in this series records.3336
- Must not resemble. The name “Trainer Card”; the Trainer Card’s layout (portrait on the right, badge row along the bottom, ID number and money); green, bronze, copper, silver and gold card palettes; badge shapes; gym references; a Hall of Fame time. Stars are drawn as Kiradex’s kira star only.
- Acceptance. A snapshot test renders the card at 0 to 4 stars and finds the five edges in that order; a unit test proves no purchase path sets a star (StoreKit transactions never touch the star fields); a search of the string catalog for “Trainer” finds nothing.
4. A one-way drop on a route
- Mechanic. On the route beyond the plaza, one-way drops one cell high: walk off them to drop a row, never climb back. Each run of them makes the way back a different path, so a short route has a loop. Ten to 25 drop cells on a first route, against Routes 101 to 104’s 13 to 24; none in the town. (Rule: ledges.)39
- Who decides. The structures research refused ledges because free height is hard to read top-down; a one-cell, one-way drop has no height, only a directed edge in the walk graph. This brief narrows the refusal rather than overturning it, and the elevation and routes posts in this series own the decision.3533
- Must not resemble. Pokémon’s ledge tile (a grass lip with a light top edge and a dark shadow line), its hop animation or its sound. Draw it in the forge as a stone curb or a hedge step in Kiradex’s palette, with its own drop frames.
- Acceptance. The server’s walk validation has directed edges at drop cells; a test asserts the reverse step is refused; a breadth-first search script reports a return path that differs from the outgoing one.
5. The weekly hall, with sets of seven
- Mechanic. Keep the weekly judging the hall already plans. Add the Frontier’s shape to taking part, not to winning: every seven entries earn a hall rosette on the collector’s card, and at 35 and 70 entries, five and ten sets, the hall keeper comes out to see their display. Entries count whenever they happen, never only on consecutive weeks, for the reason in item 3. Rosettes come from entering and placing, never from buying. (Rule: streaks.)25
- Data. The entry count is participation history tied to a collector’s identifier, so it is personal information under the app’s own rules: it is stored against the one identifier the server keys a collector by, whichever it is at the time, and nothing else (today the UUID the app generates for the plaza; the Game Center player id once the server is keyed by it, as the world document plans; either is a persistent identifier), covered by the privacy policy, never sent to analytics or ads, and erased with the rest of the collector’s record on a deletion request. It is one running count, with no log of individual entries. The world document sets no retention period; that is for the lawyer’s reading it already calls for.3786
- Must not resemble. Contest categories (Cool, Beauty, Cute, Smart, Tough), rank names (Normal, Super, Hyper, Master), the Contest Hall’s stage, appeal rounds, a Battle Tower, Frontier symbols, Pokémon ribbon designs. Kiradex’s rosettes are its own, in its own palette.
- Acceptance. A server test runs a simulated entrant through 70 entries and asserts rosettes at 7, 14 and so on, and the keeper’s visit at 35 and 70; a test with a top-tier patron shows no scoring difference; a deletion test removes a collector and finds no entry count left under their identifier.
6. The saying of the week: a phrase that spreads between plazas
- Mechanic. Each plaza room holds a saying: two words from Kiradex’s own preset vocabulary, a feeling and a collecting word (“lucky binder”, “quiet holo”). When a pair is proposed, the server gives it a peak between 25 and 100, Kiradex’s own range (Emerald’s runs from 30 to 127, under the ceiling of a 7-bit field), and a starting score between 25 and that peak. The score rises by 5 a day to the peak, where the saying turns stale, then falls by 5 a day to a floor of 0, where it turns fresh and rises again; a day’s move that would pass the peak or the floor stops there. A collector can propose a new pair at the noticeboard; it takes over the room only if its score is strictly higher, and on a tie the room keeps its own. That is Kiradex’s simplification: Emerald lets a save’s first phrase in with no comparison and settles a full tie by a coin flip. When a collector moves between rooms, the saying travels with them, and where two rooms’ sayings meet, the higher score wins. The town’s own collectors repeat the current saying. One of them, the word-collector, stands in one room at a time and moves weekly; talking to him unlocks the next preset word from a hidden list, in a fixed order, never a random one, and at most one word a day. (Rules: spreading saying, scarce teacher.)428
- Server. A small persistent record per room: two word indices, a score, a peak, a direction of drift, and the server date the drift was last applied. On a read, the server applies 5 points for each day since that date, one day at a time, then stores today’s date, so a day is applied once however often the room is read or the server restarts. Emerald’s
UpdatePerDaydoes the same with a stored day number: it compares it with today’s, passes the difference to the trend, and then stores today’s.22 The record belongs to the room: nothing in it says who proposed or carried the saying (section 13). - Child safety. Only preset words, from lists the server holds and can retire, as the plaza’s preset lines already are. No free text and no words coined by users.86
- Must not resemble. Easy Chat’s word groups and words (including the 33 Trendy Sayings), Dewford Hall, the Mauville Old Man, the Hipster’s look, record mixing as a named feature, a TV show about the trend.
- Acceptance. A server test: room A’s saying at 90 meets room B’s at 60 when a collector walks from A to B, and B’s becomes A’s; a new pair with the same score as the room’s does not take over. A drift test starts a saying at 45, rising, with a peak of 60: three reads on the next server date leave it at 50, not 60; after a server restart it still reads 50 on that date; then ten days with no reads, and the first read applies all ten at once, up to 60, stale, and down to 20, the same as reading once a day; a stale saying at 10 reads 5 three days later, rising after touching 0.91 A script diffs the preset vocabulary against pokeemerald’s Easy Chat word lists and finds no shared multi-word entries (common single words such as “hello” are unavoidable and fine). A word-collector test: a collector’s nth conversation with him, each on a different day, unlocks the nth word on the hidden list, and a repeat on the same day unlocks nothing.
Never
- No Pokémon expression anywhere in the world: no creature, no creature silhouette or original creature that rhymes with one, no trainer, item, place name, music, sound effect, tile, sprite, palette or screen layout taken, traced or redrawn from any Pokémon game.37
- No franchise vocabulary as feature names: Pokédex, Poké Ball, Poké-anything, Trainer Card, Gym, Badge, Elite Four, Hall of Fame, Safari Zone, Repel, Secret Base, Record Mixing, Easy Chat, Trendy Saying, Contest, PokéNav, Pokégear, Match Call, VS Seeker, Battle Tower, Frontier. I did not check which of these are registered marks; together they would mark a product as derived, and the tribute games’ own store descriptions do without even the series name.31
- None of the claimed capture, combat or riding steps: nothing aimed and thrown to capture anything; no capture-likelihood indicator; no companion released to fight; no flying or gliding mount; no summoned helper that battles in two modes.11121361
- No code or data from the decompilations in the app or the forge. They are for study and measurement; their code and assets derive from the games.
- No “Pokémon” in marketing beyond the one nominative description line the app’s own rules allow: the App Store name, subtitle, icon, screenshots, ads and trailers stay clean.3731
- No crowdfunding or press pitch built on Pokémon nostalgia. Press and then funding is the trigger The Pokémon Company’s former chief lawyer described.67
- No gambling shape, and no chance in cosmetics: no slot machines, no Game Corner, no draws, no random items, paid or free.3336
- No ideas or fan work sent to The Pokémon Company or Nintendo, and no use of their fan or idea channels: their rules license such work back to them and say they accept no unsolicited ideas.60
- No card images beyond identification: never bundled, never in marketing art, never on merchandise.37
- No health or motion data for game rewards (section 13).
Not in this brief
Coins and the Game Corner (refused above); the daily draw (a version matched against scanned cards’ collector numbers was drafted and dropped, because its prize is random); phone calls and the TV (the plaza’s preset lines already speak, and a world that calls a child’s phone is not one I want to build); outbreaks and swarms (there are no creatures to swarm); the PC boxes (how a collection is arranged on a page belongs to the rooms post); bikes and cut trees (they belong with the routes); Secret Base caps (the rooms post owns room caps); and anything from the Pokéathlon.
The honest limits
Four patents read, three Japanese and one American, from Google Patents with the Japanese claims in machine translation; no patent search on step counters, clocks or spreading phrases; no lawyer consulted. The Palworld case was still open on October 4, 2026: a technical briefing was scheduled for October 1 and no outcome has been reported, and the court’s preliminary views are scheduled for November 9. The US reexamination’s next step is unreported. The Pokémon Company’s US legal page was unreachable. Every item above is a mechanic I believe is free to use as expression of our own, and every one of those beliefs is a reading.297980
Key Takeaways
If you draw the art
- Draw every pixel yourself, from your own palette and your own rules. Every fan project in the record that drew action used the games’ own names, art or code, or linked to games that did.5678
- A mechanic’s look is expression even when the mechanic is not: a ledge can be a stone curb, a star can be your own star, a card’s colors can be your own sequence. Name what each element must not resemble before you draw it.
- Keep the vocabulary yours. Trainer Card, Safari Zone, Secret Base and the rest mark a product as derived; the tribute games’ own store descriptions do without even the series name.31
If you build the engine
- Count steps in the world, not in the person: a server-validated move of one tile, never Core Motion or HealthKit for a decoration.8684
- Compute the day on arrival from a day key (
startOfDay(for:),isDate(_:inSameDayAs:)), re-arm onNSCalendarDayChanged, and keep nothing running in the background; that is Emerald’sUpdatePerDayin Swift.87888922 - Run anything shared on the server’s clock and anything private and cosmetic on the phone’s.
- Never ship code or data from a decompilation; read it, measure it, cite it.
If you design the loop
- Pay the walk on a coarse beat (128 to 512 steps), spend budgets in steps not seconds, and let an absence cost little: Emerald’s ripe berries wait four stage-lengths before they fall, and only a very long absence clears the tree.1214153
- Give the week named days with at most one appointment each, and keep one safe room where nothing changes.192122
- Four stars, four different kinds of play, none for sale; count entries, not unbroken streaks, when your players are children; and no cosmetic by chance or against a clock.2336
- Let other people’s worlds arrive in yours: a saying with a score, a drift and a contact rule travels when players meet, with nothing to announce.426
- Read the patent claims in your genre step by step, note which steps your design does perform (moving a character by input is one of them here), and keep out the steps that make each claim what it is; then say plainly which patents you read. That is my reading, not legal advice.11121361
FAQ
Can you make a game inspired by Pokémon without getting sued?
Nobody can promise that, and this is not legal advice. The record is consistent, though: the fan projects in this record that drew takedowns from 2016 to 2024 used Pokémon’s own names, art or code, or linked to games that did, and the one case fought over mechanics, Palworld, rests on patents whose claims require specific steps such as aiming and throwing a capture item.567810 Copyright does not protect systems or methods of operation, but trademark protects the names and a patent can claim a game method.4411 Tribute games like Coromon, Temtem and Cassette Beasts ship the genre with their own art, and the short and long descriptions on their Steam pages, the developer-written fields I counted, never use the name; Temtem’s page carries it once, in a press quotation.31
Did Pokémon Uranium get a cease-and-desist?
Not by its developers’ account. Their statement, reported by Kotaku on August 13, 2016, says they had “been notified of multiple takedown notices from lawyers representing Nintendo of America” after more than 1,500,000 downloads, and that “we have not personally been contacted”; they removed the download links themselves.5 Pokémon Prism did get one, on December 21, 2016, four days before its planned release.665
What patents are Nintendo and The Pokémon Company suing Palworld over?
Three Japanese patents, named in Pocketpair’s report of November 8, 2024: No. 7545191 (aiming and throwing a capture item, or a combat character, from a readied stance, with the item or character chosen on a second button), No. 7493117 (an indicator of how likely a capture is to succeed) and No. 7528390 (riding owned characters, including boarding a flying one in mid-air). All three were applied for in 2024, after Palworld’s release, as divisionals that trace their priority to applications filed on December 22, 2021.1072111213 A US patent, 12,403,397, on a summoned sub character that battles in two modes, is under reexamination, and no US suit against Pocketpair has been reported.6179
Is the Palworld lawsuit over?
Not as of October 4, 2026. Automaton reported in June 2026, from Tokyo District Court records, that the plaintiffs narrowed their claims in November 2025 to older versions of Palworld while still seeking an injunction, with a technical briefing scheduled for October 1, 2026 and the court’s preliminary views for November 9, 2026. No judgment, settlement or injunction has been reported, and Pocketpair has posted nothing on the suit since May 8, 2025.2930
Does Nintendo allow fan games?
No published Nintendo or Pokémon guideline covers fan games that I could find. Nintendo’s Game Content Guidelines cover gameplay footage and screenshots and say any other use of its intellectual property “is subject to the relevant laws of the applicable jurisdiction”; The Pokémon Company’s Japanese site rules license derivative works back to the company and license nothing beyond personal use to their makers.8160 On my reading there is no safe harbor, only enforcement discretion; the company’s former chief legal officer has said the trigger is press and then funding.67
How did the step counter work in the old Pokémon games?
Every overworld step runs through one routine. In Gold, Silver and Crystal it moves the party’s eggs toward hatching every 256 steps, raises the party’s happiness every 512 (its happiness routine is called every 256 steps and acts on every other call), damages a poisoned Pokémon every 4, and has the bike-shop owner phone after 1,024 bike steps; in Emerald, every 128 steps each Pokémon in the party has a 50 percent chance of gaining friendship, and eggs lose a cycle every 256, in party order up to the first egg ready to hatch. The Safari Zone (500 steps) and Repels (100, 200 and 250) are budgets spent by walking.121415411617
What did Gold and Silver’s real-time clock change?
The day has three parts, morning from 4:00, day from 10:00 and night from 18:00; the Bug-Catching Contest runs on Tuesday, Thursday and Saturday for 20 minutes; the Lucky Number draw is weekly, on Fridays; 24 trainers can each be called for a rematch at one time of day on one weekday; and 16 daily flags reset at midnight.1819214620 Emerald added a calendar on top: berries that take 4 to 96 hours to fruit, and a trendy phrase that drifts by 5 points a day.34
Related on this site: Pixel-Art Worlds on iPhone is the first guide in this series, with the tile systems, the palette and the RealityKit recipe the town is drawn with, and its legal FAQ is the short version of sections 7 to 10 here; Pixel-Art Structures built the town’s houses, the hall and the rooms where the plant would stand, and lists the one-way ledge among what the town does not have yet; Pixel-Art People is the collector who would walk the 256 steps, with the rules on cosmetics and children that item 3’s change from a streak rests on.
Sources
-
pret,
pokecrystal/engine/overworld/events.asmat commit5beda23(CountStepfrom line 877:DoRepelStep,wStepCount, the comments “Every 256 steps, increase the happiness of all your Pokemon,” “Every 256 steps, offset from the happiness incrementor by 128 steps” withcp $80, “Every 4 steps, deal damage to all poisoned Pokemon”; the Day-Care EXP step;DoBikeStepfrom line 1279 withcp HIGH(1024)and the 65,535 cap), https://github.com/pret/pokecrystal/blob/master/engine/overworld/events.asm. Constants and lines printed bymeasure_systems.pyin the author’s evidence folder for this post (outputmeasure_systems.out.txt), run October 4, 2026; the behavior descriptions are the author’s reading of the code. ↩↩↩↩↩↩↩↩↩↩↩ -
pret,
pokecrystal/engine/events/happiness_egg.asmat commit5beda23(StepHappinessat line 107; its comment “Raise the party’s happiness by 1 point every other step cycle” at line 108;ld hl, wHappinessStepCount,inc a,and 1,ld [hl], a,ret nzat lines 110 to 115; eggs skipped withcp EGG), https://github.com/pret/pokecrystal/blob/master/engine/events/happiness_egg.asm, called byCountStepinengine/overworld/events.asmeach time the one-bytewStepCountwraps. Lines printed bymeasure_systems.py, outputmeasure_systems.out.txt, re-run October 4, 2026; that happiness rises every 512 steps is the author’s reading of the toggle. ↩↩↩↩↩↩↩↩ -
pret,
pokeemerald/src/berry.cat commit731ad5b(BerryTreeTimeUpdate, the* 71clearing test at line 1089,minutesUntilNextStage *= 4at lines 1109 and 1127, the 10-regrowth reset at line 1071,GetStageDurationByBerryTypereturningstageDuration * 60at line 1252,CalcBerryYieldInternal;BerryTreeGrowat lines 1064 to 1072, where the end of the Berries stage setsberryYield = 0and the stage back toBERRY_STAGE_SPROUTED; the 43 berries’stageDurationvalues) andpokeemerald/src/clock.c(UpdatePerMinute), https://github.com/pret/pokeemerald/blob/master/src/berry.c. The counts by stage duration (1 hour: 5, 3: 12, 4: 1, 6: 11, 12: 1, 18: 5, 24: 8) and hours to first berries are derived bymeasure_systems.py, outputmeasure_systems.out.txt, October 4, 2026. ↩↩↩↩↩↩↩↩↩↩↩ -
pret,
pokeemerald/src/dewford_trend.cat commit731ad5b(the file’s header comment: trendiness “Initialized as a random value between 30-127 inclusive,” the acceptance and “boring” rules,SAVED_TRENDS_COUNT (5), the record-mixing rule;UpdateDewfordTrendPerDaywithclockRand = days * 5at line 96;SeedTrendRng, lines 369 to 383, which drawsRandom() % 98and adds 30;TrySetTrendyPhrasefrom line 151, whose first-submission branch at lines 158 to 169 sets the words with no comparison when the save has never changed the trend and never mixed records, and whose comparison at line 181 usesCompareTrendsinSORT_MODE_NORMAL, lines 332 to 337 and 366: trendiness, then maximum trendiness, thenRandom() & 1on a full tie), https://github.com/pret/pokeemerald/blob/master/src/dewford_trend.c, andinclude/global.hat the same commit (trendiness:7andmaxTrendiness:7at lines 643 and 644, so the score cannot exceed 127). Lines printed bymeasure_systems.py. ↩↩↩↩↩↩↩↩↩↩↩ -
Jason Schreier, “Pokémon Uranium Creators Pull Game After A Reported 1.5 Million Downloads,” Kotaku, August 13, 2016 (the page’s date; 20:34 Eastern, which is August 14 in UTC), with the developers’ statement in full, accessed October 4, 2026, https://kotaku.com/pokemon-uranium-creators-pull-game-after-1-5-million-do-1785258831. ↩↩↩↩↩↩↩↩
-
Heather Alexandra, “Pirates Leak Pokémon Prism After Nintendo Shuts It Down,” Kotaku, December 29, 2016 (the December 21 cease-and-desist, the planned Christmas release, Pokémon Brown and Rijon Adventures taken down), accessed October 4, 2026, https://kotaku.com/pirates-leak-pokemon-prism-after-nintendo-shuts-it-down-1790598623. ↩↩↩↩↩↩↩
-
Cohen Coberly, “Nintendo slaps fan game creation tool ‘Pokemon Essentials’ with DMCA takedown,” TechSpot, August 29, 2018, following Ars Technica (Fandom’s compliance, the PokéCommunity downloads removed, the assets quotation), accessed October 4, 2026, https://www.techspot.com/news/76202-nintendo-slaps-fan-game-creation-tool-pokemon-essentials.html. ↩↩↩↩↩
-
Catherine Lewis, GamesRadar+, “After almost 10 years, unofficial Pokemon website known for sharing fan-made games shuts down after reportedly receiving a DMCA takedown notice,” March 22, 2024 (Relic Castle’s statement; links rather than hosting; the sender unconfirmed), accessed October 4, 2026, https://www.gamesradar.com/after-almost-10-years-unofficial-pokemon-website-known-for-sharing-fan-made-games-shuts-down-after-reportedly-receiving-a-dmca-takedown-notice/. ↩↩↩↩↩↩
-
Nintendo Co., Ltd. and The Pokémon Company, “Filing Lawsuit for Infringement of Patent Rights against Pocketpair, Inc.,” joint news release, September 19, 2024 (filed in the Tokyo District Court on September 18, 2024; injunction and damages), accessed October 4, 2026, https://www.nintendo.co.jp/corporate/release/en/2024/240919.html. ↩↩
-
Pocketpair, “Report on Patent Infringement Lawsuit,” Important Notice, November 8, 2024 (Palworld’s release on January 19, 2024; Patent Nos. 7545191, 7493117 and 7528390 with application and registration dates; the injunction and 5 million yen plus late-payment damages to each plaintiff), accessed October 4, 2026, https://www.pocketpair.jp/en/news/report-on-patent-infringement-lawsuit/. ↩↩↩↩↩↩
-
Google Patents, JP7493117B2, “Game program, game system, game device, and game processing method” (assignees Nintendo Co., Ltd. and The Pokémon Company; application dated February 26, 2024; the priority table gives a priority date of December 22, 2021, the applications-claiming-priority table lists JP2021208275A, filed that day, as JP7398425B2, and the publications list gives JP7398425B2 as published December 14, 2023), claim 1 in Google’s machine translation from Japanese, saved October 4, 2026 and extracted by
measure_patent_claims.py(outputmeasure_patent_claims.out.txt) in the author’s evidence folder for this post, https://patents.google.com/patent/JP7493117B2/en. The Japanese text governs. ↩↩↩↩↩↩↩↩↩↩ -
Google Patents, JP7545191B1, “Game program, game system, game device, and game processing method” (assignees Nintendo Co., Ltd. and The Pokémon Company; application dated July 30, 2024; priority date December 22, 2021, through its parent application JP2024031879A, a division in the same family as JP2021208275A, filed December 22, 2021, published as JP7398425B2 on December 14, 2023), claim 1 in Google’s machine translation, saved October 4, 2026 and extracted by
measure_patent_claims.py, https://patents.google.com/patent/JP7545191B1/en. The Japanese text governs. ↩↩↩↩↩↩↩↩ -
Google Patents, JP7528390B2, “Game program, game system, information processing device, and information processing method” (assignees Nintendo Co., Ltd. and The Pokémon Company; application dated March 5, 2024; priority date December 22, 2021, in the family of JP2021208276A, filed that day, published as JP7349486B2 on September 22, 2023), claim 1 in Google’s machine translation, saved October 4, 2026 and extracted by
measure_patent_claims.py, https://patents.google.com/patent/JP7528390B2/en. The Japanese text governs. ↩↩↩↩↩↩↩↩ -
pret,
pokeemerald/src/field_control_avatar.cat commit731ad5b(TryStartStepCountScript, lines 543 to 604, includingShouldDoBrailleRegicePuzzleat line 565 withIslandCave_EventScript_OpenRegiEntranceand the fiveShouldDo...Callchecks at lines 570 to 590;(*ptr) %= 128at line 620 for friendship;(*ptr) %= 4at line 645 for poison, skipped in Secret Bases), https://github.com/pret/pokeemerald/blob/master/src/field_control_avatar.c. Lines printed bymeasure_systems.py. ↩↩↩↩↩↩↩↩ -
pret,
pokeemerald/src/pokemon.cat commit731ad5b(AdjustFriendshipfrom line 5914; eggs excluded byspecies != SPECIES_EGG; forFRIENDSHIP_EVENT_WALKING, the comment “50% chance every 128 steps” andif (Random() & 1) return;at lines 5950 to 5952; the walking modifier{ 1, 1, 1}at line 2100), https://github.com/pret/pokeemerald/blob/master/src/pokemon.c, andsrc/field_control_avatar.c(UpdateFriendshipStepCounter, which callsAdjustFriendship(mon, FRIENDSHIP_EVENT_WALKING)for each of the party’s slots at lines 624 to 626). Lines printed bymeasure_systems.py, re-run October 4, 2026; the average of once every 256 steps is derived from the 50 percent roll on a 128-step beat. ↩↩↩↩↩↩ -
pret,
pokered/scripts/SafariZoneGate.asmat commitd2704a6(30 balls at line 186,HIGH(502)/LOW(502)at lines 188 and 190, the ¥500 text at line 214, thenld a, PAD_UP,ld c, 3andcall SafariZoneEntranceAutoWalkat lines 192 to 194 andSetEvent EVENT_IN_SAFARI_ZONEat line 195; the step count itself is decremented inengine/events/hidden_events/safari_game.asm, not emulated here), https://github.com/pret/pokered/blob/master/scripts/SafariZoneGate.asm, andpokeemerald/src/safari_zone.cat731ad5b(sSafariZoneStepCounter = 500at line 61), https://github.com/pret/pokeemerald/blob/master/src/safari_zone.c. Lines printed bymeasure_systems.py. ↩↩↩↩↩ -
pret,
pokered/engine/items/item_effects.asmatd2704a6(ItemUseRepelld b, 100,ItemUseSuperRepelld b, 200,ItemUseMaxRepelld b, 250), https://github.com/pret/pokered/blob/master/engine/items/item_effects.asm, andpokeemerald/src/data/items.hat731ad5b(holdEffectParam100, 200, 250), https://github.com/pret/pokeemerald/blob/master/src/data/items.h. Lines printed bymeasure_systems.py. ↩↩↩↩↩ -
pret,
pokecrystal/constants/misc_constants.asmat5beda23(MORN_HOUR 4,DAY_HOUR 10,NITE_HOUR 18, lines 36 to 38) andpokecrystal/engine/rtc/rtc.asm(theTimesOfDaytable and its comment at line 50; the unusedBetaTimesOfDay), https://github.com/pret/pokecrystal/blob/master/constants/misc_constants.asm and https://github.com/pret/pokecrystal/blob/master/engine/rtc/rtc.asm. Lines printed bymeasure_systems.py. ↩↩↩↩ -
pret,
pokecrystal/maps/Route35NationalParkGate.asmat5beda23(the weekday checks for Tuesday, Thursday and Saturday, lines 38 to 40) andpokecrystal/constants/script_constants.asm(BUG_CONTEST_BALLS 20,BUG_CONTEST_MINUTES 20, lines 293 and 294), https://github.com/pret/pokecrystal/blob/master/maps/Route35NationalParkGate.asm. Lines printed bymeasure_systems.py. ↩↩↩↩↩↩↩ -
pret,
pokecrystal/constants/engine_flags.asmat5beda23(wDailyFlags1andwDailyFlags2, 8 flags each), https://github.com/pret/pokecrystal/blob/master/constants/engine_flags.asm. Counted bymeasure_systems.py. ↩↩↩↩ -
pret,
pokecrystal/engine/overworld/time.asmat5beda23(.GetDaysUntilNextFriday, line 241) andpokecrystal/engine/events/lucky_number.asm(the comparison against every owned Pokémon’s ID and the three prize tiers), https://github.com/pret/pokecrystal/blob/master/engine/events/lucky_number.asm. Lines printed bymeasure_systems.py; the tiers are the author’s reading of the routine. ↩↩↩↩↩↩↩↩ -
pret,
pokeemerald/src/clock.cat731ad5b(UpdatePerDay, which reads the stored day numberVAR_DAYSat line 38, compares it with today’s at line 41, computesdaysSinceat line 43, makes eleven calls with it at lines 44 to 54 and stores today’s day at line 55; two of themUpdateFrontierManiacandUpdateFrontierGambler, and the!InPokemonCenter()guard at line 28 in front of the per-day and per-minute updates), https://github.com/pret/pokeemerald/blob/master/src/clock.c. Lines printed bymeasure_systems.py. ↩↩↩↩↩↩↩↩↩↩ -
pret,
pokeemerald/src/trainer_card.cat731ad5b(the Hoenn and Kanto card palettes by star count, lines 267 to 280;CountPlayerTrainerStars, lines 663 to 677;GetRubyTrainerStars, lines 679 to 692, for a Ruby or Sapphire card: the Hall of Fame debut time,caughtAllHoenn,battleTowerStraightWins > 49at line 687 andhasAllPaintings; the 9,999 and 999 caps at lines 711 to 743), https://github.com/pret/pokeemerald/blob/master/src/trainer_card.c. Lines printed bymeasure_systems.py; Ruby and Sapphire are not among the clones, so their rule is read from this code that interprets their cards. ↩↩↩↩↩↩↩↩↩ -
pret,
pokered/constants/pokemon_data_constants.asm(MONS_PER_BOX 20,NUM_BOXES 12),pokecrystal/constants/pokemon_data_constants.asm(MONS_PER_BOX 20,MONS_PER_BOX_JP 30,NUM_BOXES 14) andpokeemerald/include/pokemon_storage_system.h(TOTAL_BOXES_COUNT 14,IN_BOX_ROWS 5,IN_BOX_COLUMNS 6, box names and wallpapers), https://github.com/pret/pokeemerald/blob/master/include/pokemon_storage_system.h. Lines printed bymeasure_systems.py. ↩↩↩ -
pret,
pokeemerald/include/constants/battle_frontier.hat731ad5b(MAX_STREAK 9999,FRONTIER_STAGES_PER_CHALLENGE 7) andpokeemerald/src/frontier_util.c(the Frontier Brain streak table, lines 88 to 94, whose fourth column is the modifier;GetFrontierBrainStatus, lines 1656 to 1693, withwinStreakNoModifier + sFrontierBrainStreakAppearances[facility][3]at line 1662 and the comparison at line 1674;IncrementWinStreakfrom line 2111). What each streak counts is read from the facilities’ scripts at the same commit: the Tower, Palace, Arena and Factory battle rooms callBattleFrontier_EventScript_IncrementWinStreakafter each defeated opponent and end the challenge when the battle count reaches 7 (case 7in each room’sscripts.inc: Tower line 51, Palace line 70, Arena line 107, Factory line 104); the Pyramid calls it inBattlePyramid_WarpToNextFloor(data/maps/BattleFrontier_BattlePyramidFloor/scripts.inc, line 88), which sends the player to the top after floor 7 (line 93); the Dome calls it once per tournament won, inBattleFrontier_BattleDomeLobby_EventScript_WonChallenge(data/maps/BattleFrontier_BattleDomeLobby/scripts.inc, lines 44 and 45), andIncrementWinStreak(src/frontier_util.c, lines 2130 to 2134) raises bothdomeWinStreaksanddomeTotalChampionships; a tournament isDOME_ROUNDS_COUNT 4rounds (include/constants/battle_dome.h, line 8). (IncrementDomeStreaksinsrc/battle_dome.cwould do the same, but its macro,dome_incrementstreaks, is used nowhere indata/.)include/constants/battle_pike.hsetsNUM_PIKE_ROOMS 14at line 4 and lists nine room kinds, among them full and partial healing, a status room and a room with a non-player character, andsrc/battle_pike.cdivides the Pike streak byNUM_PIKE_ROOMSat line 1401, https://github.com/pret/pokeemerald/blob/master/src/frontier_util.c. Lines printed bymeasure_systems.py. ↩↩↩↩↩↩ -
pret,
pokeemerald/src/record_mixing.cat731ad5b(the mixed record’s layout, lines 67 to 78, ending at offset0x1434plus 16 bytes of filler,0x1444bytes in all), https://github.com/pret/pokeemerald/blob/master/src/record_mixing.c. Lines printed bymeasure_systems.py. ↩↩↩↩↩↩ -
pret,
pokeemerald/include/constants/tv.hat731ad5b(POKENEWS_COUNTDOWN 4,NUM_NORMAL_TVSHOW_SLOTS 5,TV_SHOWS_COUNTof 5 plus 20; the show kinds, counted bymeasure_systems.pyas 11 normal, 19 record-mix-only and 1 outbreak;NUM_CUTIES_RIBBONS 4at line 84, the constant the Spot the Cuties callers compare against), https://github.com/pret/pokeemerald/blob/master/include/constants/tv.h. ↩↩↩↩↩ -
pret,
pokeemerald/src/easy_chat.cat731ad5b(the Trendy Sayings comment at lines 5429 to 5436),pokeemerald/include/constants/easy_chat.h(NUM_TRENDY_SAYINGS 33),pokeemerald/src/mauville_old_man.c((trainerId % 10) / 2, line 120) andpokeemerald/include/constants/mauville_old_man.h(the five kinds), https://github.com/pret/pokeemerald/blob/master/src/easy_chat.c and https://github.com/pret/pokeemerald/blob/master/src/mauville_old_man.c. Lines printed bymeasure_systems.py. ↩↩↩↩↩↩↩ -
Automaton West, “Nintendo and The Pokémon Company have reportedly narrowed Palworld lawsuit to older versions of the game only, likely thanks to ‘preventive’ updates by Pocketpair,” June 12, 2026 (Tokyo District Court records reviewed by Automaton’s Japanese staff, and Games Fray; the November 2025 amendment; the injunction still sought; the October 1 and November 9, 2026 dates; the announced July 10 launch), accessed October 4, 2026, https://automaton-media.com/en/news/nintendo-and-the-pokemon-company-have-reportedly-narrowed-palworld-lawsuit-to-older-versions-of-the-game-only-likely-thanks-to-preventive-updates-by-pocketpair/. ↩↩↩↩↩↩
-
Pocketpair, Important Notice list, accessed October 4, 2026 (the latest notice January 12, 2026, on a card game; the latest on the suit May 8, 2025), https://www.pocketpair.jp/en/news/category/important-en/. Absence of a report is what the author could find, not a proof. ↩↩↩
-
Author’s count, October 4, 2026:
figures/steam_names.pybeside the draft, over the seven Steam app details records saved in the author’s evidence folder for this post (steam_*.html; Coromon 1218210, Nexomon: Extinction 1196630, Cassette Beasts 1321440, Temtem 745920, Monster Sanctuary 814370, Moonstone Island 1658150, Palworld 1623730), counting “Pokémon” or “Pokemon” field by field: zero in every short and long description; one in Temtem’sreviewsfield, a Rock Paper Shotgun quotation. Outputfigures/steam_names.out.txt. ↩↩↩↩↩↩↩ -
Nintendo Life, “‘The Single Best Game Concept Ever’ - Pokémon-Inspired Devs Talk The Series That Started It All,” March 2, 2026 (Andrades, JVemon, Pouwels, Spink, Coxon), accessed October 4, 2026, https://www.nintendolife.com/features/the-single-best-game-concept-ever-pokemon-inspired-devs-talk-the-series-that-started-it-all. ↩↩
-
Author’s research dossier, “Homage without borrowing,” October 4, 2026,
docs/research/homage/01-homage.mdin the Kiradex repository: the brief this post’s section 14 is drawn from, the structures research’s refusal of ledges (its section 8.8), the collecting research’s lines on random paid items and slot machines, and the plaza server’s presence-only design. Private repository. ↩↩↩↩↩↩↩↩↩↩↩ -
Blake Crosley, “Pixel-Art Worlds on iPhone: What the 16-Bit Masters Knew,” blakecrosley.com, October 3, 2026, updated October 4, 2026 (the forge’s 58 colors in fourteen ramps; the legal FAQ, corrected October 4 to name copyright and add the Palworld patents), https://blakecrosley.com/blog/pixel-art-world-on-iphone. ↩↩↩↩↩
-
Blake Crosley, “Pixel-Art Structures: Houses, Halls and Interiors on iPhone,” blakecrosley.com, October 3, 2026 (the rooms, the hall, and “a one-way ledge” among what the town does not have), https://blakecrosley.com/blog/pixel-art-structures-on-iphone. ↩↩↩↩
-
Blake Crosley, “Pixel-Art People: Characters and a Creator on iPhone,” blakecrosley.com, October 3, 2026 (PEGI’s ratings of paid random items and expiring log-in streaks since June 2026; its rule that every cosmetic is “purely visual, never random, never on a countdown”), https://blakecrosley.com/blog/pixel-art-characters-on-iphone. ↩↩↩↩↩↩↩↩
-
Author’s app, Kiradex repository at commit
b1b78b1(October 4, 2026),docs/WORLD.mdsection 1, “Can this exist without being sued” (the rules for Kiradex World, the nominative description line, card images for identification only, and the earlier Uranium wording this post corrects), section 2 (the design built to collect as little as possible, lines 146 to 149) and the data paragraph in section 3 (the server keyed by the Game Center player id, a persistent identifier COPPA counts as personal information when combined with other data, a privacy policy, no third-party analytics or ads, deletion on request, lines 199 to 206). Private repository. ↩↩↩↩↩↩↩↩ -
Author’s measurement, October 4, 2026, extended October 5, 2026 to print every line the notes cite:
measure_systems.pyin the author’s evidence folder for this post, run over shallow clones of pret’spokered(d2704a6),pokecrystal(5beda23),pokeemerald(731ad5b) andpokefirered(037335f), master-branch commits dated September 22, September 29, October 1 and September 26, 2026 respectively (git show -sin each clone); it prints each constant with its file and line and derives the counts, outputmeasure_systems.out.txt. The repositories’ READMEs list the SHA-1 of each ROM they build, for example https://github.com/pret/pokeemerald/blob/master/README.md. ↩↩ -
Author’s measurement, October 4, 2026:
measure_map_features.pyin the author’s evidence folder for this post, over everydata/maps/*/map.jsonin pret’spokeemeraldat731ad5b, resolving each unique layout’smap.binagainst its primary and secondarymetatile_attributes.bin(ledgesMB_JUMP_*; Mach-onlyMB_MUDDY_SLOPEandMB_CRACKED_FLOOR; Acro-only rails andMB_BUMPY_SLOPE;MB_TALL_GRASS) and countingOBJ_EVENT_GFX_CUTTABLE_TREEobjects over all maps; re-run for this post, output saved asfigures/measure_map_features.out.txtbeside the draft. Cells, not features; shared layouts counted once. ↩↩↩↩↩↩↩↩↩ -
pret,
pokecrystal/engine/overworld/events.asmat commit5beda23(the comment lines “decrease the hatch counter of all your eggs until you reach the first” and “one that is ready to hatch” at lines 892 and 893;farcall DoEggStepandjr nz, .hatchat lines 898 and 899;.hatchloadsPLAYEREVENT_HATCHat line 928, which runsHatchEggScript, the label at line 999 with itscallasm OverworldHatchEggat line 1000) andpokecrystal/engine/pokemon/breeding.asmat the same commit (DoEggStepfrom line 174: it walkswPartySpeciesin order, skips anything that is notEGG, and on an egg runsdec [hl]at line 185 and returns with a nonzero result at line 189 when the counter reaches 0), https://github.com/pret/pokecrystal/blob/master/engine/pokemon/breeding.asm. That later eggs wait for the next beat is the author’s reading of the early return. ↩ -
pret,
pokeemerald/src/daycare.cat731ad5b((daycare->mons[1].steps & 0xFF) == 0xFFat line 890;++daycare->stepCounter == 255at line 898;GetEggCyclesToSubtract; the party loop from line 903, which skipsMON_DATA_SANITY_IS_BAD_EGGat line 907, subtracts only wheneggCycles != 0at line 911 and otherwise setsgSpecialVar_0x8004 = iat line 922 and returns at line 923, so the loop ends at that egg;ShouldEggHatchthen startsEventScript_EggHatchinsrc/field_control_avatar.cat lines 554 to 557), https://github.com/pret/pokeemerald/blob/master/src/daycare.c. Lines printed bymeasure_systems.py. ↩↩↩ -
pret,
pokeemerald/src/battle_setup.cat731ad5b(STEP_COUNTER_MAX 255at line 1792,HasAtLeastFiveBadges()at line 1796), https://github.com/pret/pokeemerald/blob/master/src/battle_setup.c, andpokefirered/src/vs_seeker.cat037335f(vsSeekerChargeSteps == 100at line 855), https://github.com/pret/pokefirered/blob/master/src/vs_seeker.c. Lines printed bymeasure_systems.py. ↩↩ -
Author’s figures, drawn October 4, 2026 (the claim matrix’s legal note redrawn October 5, 2026) by
figures/figures.pybeside the draft frommeasure_systems.out.txt,measure_map_features.out.txt,measure_patent_claims.out.txt, the saved US patent page, the dated record pages cited in sections 8 and 9, andKiradex/World/Daylight.swift; the script re-reads and asserts the source values before it draws. No game art, no logos. ↩↩↩↩↩↩ -
U.S. Copyright Office, Circular 33: Works Not Protected by Copyright, https://www.copyright.gov/circs/circ33.pdf, as cited in the first post of this series (its note 19, accessed October 2, 2026). ↩↩↩↩
-
Author’s app, Kiradex repository at commit
b1b78b1:Kiradex/World/Daylight.swift(Phase.init(hour:):case 6..<9: self = .morning,9..<17day,17..<20evening, otherwise night;Daylight.forcedHour, which reads the-plazaHourlaunch argument, at lines 100 to 105),Kiradex/World/PlazaStage.swift(daylight(at:), which usesDaylight.forcedHourwhen it is set, at line 58) andKiradexUITests/KiradexUITests.swift(a walk launched with-plazaHour 21). Private repository. ↩↩↩↩↩ -
pret,
pokecrystal/constants/phone_constants.asmat5beda23(CONTACT_LIST_SIZE 10) andpokecrystal/constants/engine_flags.asm(wDailyRematchFlags24,wDailyPhoneItemFlags10,wDailyPhoneTimeOfDayFlags24; the call windows by weekday, Monday 3, Tuesday 3, Wednesday 4, Thursday 4, Friday 4, Saturday 3, Sunday 3, and by time, morning 9, afternoon 7, night 8, counted bymeasure_systems.py), https://github.com/pret/pokecrystal/blob/master/constants/phone_constants.asm. ↩↩↩↩↩ -
pret,
pokeemerald/include/constants/flags.hat731ad5b(the 12 namedFLAG_DAILY_*flags, 9 of them berry gifts), https://github.com/pret/pokeemerald/blob/master/include/constants/flags.h. Listed bymeasure_systems.py. ↩ -
pret,
pokeemerald/include/constants/berry.hat731ad5b(the stage constants at lines 20 to 26,BERRY_TREES_COUNT 128at line 130), https://github.com/pret/pokeemerald/blob/master/include/constants/berry.h. Lines printed bymeasure_systems.py. ↩ -
Author’s enumeration, October 5, 2026:
enumerate_berry_yield.pyin the author’s evidence folder for this post, which printsCalcBerryYieldInternalfrom pokeemeraldsrc/berry.cat731ad5b(lines 1210 to 1234:return minwhen nothing was watered; otherwiserandMin + Random() % (randMax - randMin + 1)over(max - min) * (water - 1)to(max - min) * water, divided byNUM_WATER_STAGES(4) and rounded half up), reads the 43 berries’minYieldandmaxYield(1 to 2 for 14 berries, 2 to 3 for 14, 2 to 4 for 5, 2 to 6 for 5, 3 to 6 for 5) and lists every yield each number of watered stages can give; outputenumerate_berry_yield.out.txt. ↩ -
Serebii.net, “Pokéathlon” (HeartGold and SoulSilver; the round of three events, the first-place bonus, the daily shop and the “Daily & Weekly Events” heading), accessed October 4, 2026, https://www.serebii.net/heartgoldsoulsilver/pokeathlon.shtml. Secondary source; not measured. ↩
-
pret,
pokeemerald/src/tv.cat731ad5b(TryStartRandomMassOutbreakcalled fromTryPutPokemonTodayOnAirat line 1115, the game-clear flag at line 1652 and the existing-outbreak loop at lines 1654 to 1657, which runsi < LAST_TVSHOW_IDXwithLAST_TVSHOW_IDXdefined at line 49 asTV_SHOWS_COUNT - 1, so it checks slots 0 to 23 of the 25,StartMassOutbreakfrom line 1563, which setsoutbreakDaysLeft = 2at line 1578 and is called at line 4906 byDoTVShowPokemonNewsMassOutbreak, the outbreak report as it plays on a television;UpdateTimeBeforeMassOutbreak, lines 1716 to 1737, countsdaysBeforeOutbreakdown each day, andGetRandomActiveShowIdxoffers an outbreak report to the television only when it reaches 0, line 800;rbernoulli(1, 200)at line 1659, the empty-slot check at lines 1661 and 1662, whereFindFirstEmptyNormalTVShowSlot, from line 3118, searches only the firstNUM_NORMAL_TVSHOW_SLOTS(5) slots for one that is off the air,probability = 50at line 1680,daysBeforeOutbreak = 1at line 1682), https://github.com/pret/pokeemerald/blob/master/src/tv.c, andsrc/battle_main.c(HandleEndTurn_FinishBattlefrom line 5098, which skips link, recorded link, first, Safari, e-Reader, Wally tutorial and Frontier battles at lines 5102 to 5108 and callsTryPutPokemonTodayOnAirat line 5126). Lines printed bymeasure_systems.py. ↩↩↩ -
pret,
pokefirered/src/trainer_card.cat037335f(the link card’s stars:HasAllKantoMons()at line 850,berriesPicked >= 200 && jumpsInRow >= 200at line 886), https://github.com/pret/pokefirered/blob/master/src/trainer_card.c. Lines printed bymeasure_systems.py. ↩ -
pret,
pokeemerald/include/constants/pokemon.hat731ad5b(the ribbon IDs fromCHAMPION_RIBBONat line 100), https://github.com/pret/pokeemerald/blob/master/include/constants/pokemon.h. ↩ -
pret,
pokeemerald/src/field_specials.cat731ad5b(if (GetRibbonCount(leadMon) > NUM_CUTIES_RIBBONS)at line 1386, one of the callers; the contest, Battle Tower and post-battle callers incontest_util.c,battle_tower.candpost_battle_event_funcs.cuse the same>test) andsrc/tv.c(TryPutSpotTheCutiesOnAirfrom line 2253: it needs an empty record-mix slot and no Spot the Cuties show already spawned, line 2258, and setsshow->cuties.active = FALSEwith the comment “NOTE: Show is not active until passed via Record Mix.” at line 2262), https://github.com/pret/pokeemerald/blob/master/src/tv.c. ↩ -
pret,
pokeemerald/include/constants/coins.hat731ad5b(MAX_COINS 9999), https://github.com/pret/pokeemerald/blob/master/include/constants/coins.h. ↩ -
pret,
pokeemerald/src/lottery_corner.cat731ad5b(the four prizes at lines 16 to 19; the “do not calculate ticket values for eggs” comment at line 64; the more-than-one-digit rule at lines 70 and 94), https://github.com/pret/pokeemerald/blob/master/src/lottery_corner.c, withFLAG_DAILY_PICKED_LOTO_TICKETininclude/constants/flags.handSetRandomLotteryNumberinsrc/clock.c. Lines printed bymeasure_systems.py. ↩↩ -
pret,
pokeemerald/src/bike.cat731ad5b(sMachBikeSpeeds, the Acro Bike’s trick handling), https://github.com/pret/pokeemerald/blob/master/src/bike.c. ↩↩ -
pret,
pokeemerald/include/constants/global.hat731ad5b(SECRET_BASES_COUNT 20,DECOR_MAX_SECRET_BASE 16,DECOR_MAX_PLAYERS_HOUSE 12), https://github.com/pret/pokeemerald/blob/master/include/constants/global.h. ↩↩ -
pret,
pokecrystal/engine/overworld/time.asmat5beda23(ReceiveCallDelays:db 20, 10, 5, 3at line 45, indexed bywTimeCyclesSinceLastCall, whichCheckReceiveCallTimerraises by one, up to 3, each time the timer runs out, lines 47 to 59, andInitCallReceiveDelay, lines 12 to 14, resets to 0;Script_ReceivePhoneCallcalls it after each call,engine/phone/phone.asmline 431) andpokecrystal/engine/phone/phone.asm(the “50% chance for a call” comment at line 119; the time-of-day and coverage checks), https://github.com/pret/pokecrystal/blob/master/engine/phone/phone.asm. Lines printed bymeasure_systems.py. ↩↩↩ -
The Pokémon Company, ポケットモンスターオフィシャルサイト, ご利用について (site rules), the derivative-works paragraph, the no-unsolicited-ideas paragraph and the trademark line, accessed October 4, 2026, https://www.pokemon.co.jp/rules/. Translations in the text are the author’s. ↩↩↩↩↩↩
-
Google Patents, US12403397B2, “Storage medium, information processing system, information processing apparatus, and game processing method” (assignees Nintendo Co., Ltd. and The Pokémon Company; filed March 1, 2023; granted September 2, 2025), claim 1, saved October 4, 2026, https://patents.google.com/patent/US12403397B2/en. ↩↩↩↩↩↩↩
-
Warner-Jenkinson Co. v. Hilton Davis Chemical Co., 520 U.S. 17 (1997), the Reporter of Decisions’ syllabus as published by Cornell Law School’s Legal Information Institute, saved October 5, 2026 (the Court “adheres to the doctrine of equivalents,” under which a product or process that does not literally infringe “may nonetheless be found to infringe if there is ‘equivalence’” between its elements and the claimed elements, and the doctrine is applied “to each of the individual elements of a claim, rather than to the accused product or process as a whole”; the syllabus is a summary, not part of the opinion), https://www.law.cornell.edu/supct/html/95-728.ZS.html. ↩
-
Supreme Court of Japan, Third Petty Bench, judgment of February 24, 1998, case 1994 (O) No. 1083, the Ball Spline Bearing Device case, in the English translation the Intellectual Property High Court publishes in its list of important judgments on the doctrine of equivalents, saved October 5, 2026 (where a product differs from the claim in one part, it is “regarded as identical with the construction as indicated in the scope of the patent claim” if five conditions hold, the first that “this part is not the essential part of the patented invention” and the last that no special circumstances exist, “such as the fact that the products had been intentionally excluded from the scope of the patent claim in the patent application process”), https://www.courts.go.jp/ip/eng/assets/ip/eng/chizai_en/chizai_en-pdf-1640.pdf, linked from https://www.courts.go.jp/ip/eng/hanrei/Important_IP_Judgment_by_Category/Patent/Doctrine_of_Equivalents/index.html. The Japanese judgment governs. ↩
-
Ana Diaz, “Pokémon Fangames Evolve Beyond Their Origins,” Aftermath, October 1, 2026 (first published September 30, 2026 by Fansplaining), accessed October 4, 2026, https://aftermath.site/pokemon-fangames-fansplaining/. It is the source the app’s world document drew its Uranium sentence from. ↩
-
Nintendo Life, “Fan-Made Pokémon Prism Game Leaks Online After Nintendo Shutdown Notice,” December 30, 2016 (the letter on December 21; the planned December 25 release), accessed October 4, 2026, https://www.nintendolife.com/news/2016/12/fan-made_pokemon_prism_game_leaks_online_after_nintendo_shutdown_notice. ↩↩
-
Internet Archive, “Nintendo’s Cease and Desist to Pokémon Prism,” uploaded by a third party who says a Prism contributor sent the redacted scan; the uploader’s description is partisan, and the scan was not read for this post, https://archive.org/details/pokemon-prism-cease-desist. ↩
-
Luke Plunkett, “Pokémon’s Former Chief Lawyer On Shutting Down Fan Games & Honeymoon Business Deals,” Aftermath, March 13, 2024 (a “What I Do” interview with Don McGowan), accessed October 4, 2026, https://aftermath.site/pokemon-lawyer-cease-desist-fan-project-pikachu-movie/. ↩↩↩↩
-
Chris Scullion, “Former Pokémon lawyer says fundraising and press coverage lead to fan project takedowns,” Video Games Chronicle, March 14, 2024, accessed October 4, 2026, https://www.videogameschronicle.com/news/former-pokemon-lawyer-says-fundraising-and-press-coverage-lead-to-fan-project-takedowns/. ↩
-
The National Law Review, “Guangdong Higher People’s Court: 107 Million RMB Settlement in Pokémon Copyright and Unfair Competition Case,” February 23, 2025 (the February 21 announcement; filed December 2021; 500 million RMB claimed; the first-instance reasoning), accessed October 4, 2026, https://natlawreview.com/article/guangdong-higher-peoples-court-107-million-rmb-settlement-pokemon-copyright-and. ↩↩↩
-
The Pokémon Company, 他社ゲームに関するお問い合わせについて, corporate news, January 25, 2024 (Japanese text with the English statement below it), accessed October 4, 2026, https://corporate.pokemon.co.jp/media/news/detail/335.html. ↩↩
-
Nintendo Life, “The Pokémon Company Releases Official Statement About Palworld,” January 25, 2024, accessed October 4, 2026, https://www.nintendolife.com/news/2024/01/the-pokemon-company-releases-official-statement-about-palworld. ↩
-
GamesRadar+, “Palworld developer reveals the exact patents it’s alleged to have infringed upon in the Nintendo lawsuit, and they all have application dates after the survival game’s release,” November 8, 2024 (the mapping of the three patents, via Automaton, Kiyoshi Kurihara and Patent Attorney Corporation Siarasia; the December 2021 parent), accessed October 4, 2026, https://www.gamesradar.com/games/survival/palworld-developer-reveals-the-exact-patents-its-alleged-to-have-infringed-upon-in-the-nintendo-lawsuit-and-they-all-have-application-dates-after-the-survival-games-release/. ↩↩↩
-
Author’s extraction, October 4, 2026, rewritten October 5, 2026:
measure_patent_claims.pyin the author’s evidence folder for this post reads the saved Google Patents pages for title, assignees and dates, and takes claim 1 whole from the page’s own claim container (<claim num="1">on the Japanese pages,CLM-00001on the US page), printing the original Japanese and Google’s English machine translation separately for the three Japanese patents, and the original English for the US patent, untruncated; outputmeasure_patent_claims.out.txt. The first version flattened the claims section and cut it at 3,000 characters, and its JP 7545191 “claim 1” ran into claim 2; it is kept beside the new one. ↩↩ -
Pocketpair, “Regarding the lawsuit, changes to Palworld and the future,” Important Notice, May 8, 2025 (patch v0.3.11 of November 30, 2024; patch v0.5.5; the changes “a result of the ongoing litigation”), accessed October 4, 2026, https://www.pocketpair.jp/en/news/regarding-the-lawsuit-changes-to-palworld-and-the-future/. ↩↩
-
Steam, app details for Palworld (app 1623730), release date “9 Jul, 2026,” fetched through the store API October 4, 2026, https://store.steampowered.com/app/1623730/Palworld/. ↩
-
Automaton West, “Nintendo patent tied to Palworld lawsuit stays rejected as JPO shuts down objections in unusually sharp-tongued notice,” July 22, 2026 (divisional application No. 2026-019762; the 2013 Pokémon Generations video; the examiner’s reasoning on inventive step; the three-month window), accessed October 4, 2026, https://automaton-media.com/en/news/nintendo-patent-central-to-palworld-lawsuit-stays-rejected-as-jpo-shuts-down-objections-in-unusually-sharp-tongued-notice/. ↩
-
Engadget, “Nintendo’s patent on summoning fighting NPCs is being reexamined,” November 4, 2025 (the Director’s order; the 2002 Konami application and the Nintendo publication cited as prior art), accessed October 4, 2026, https://www.engadget.com/gaming/nintendo/nintendos-patent-on-summoning-fighting-npcs-is-being-reexamined-180949135.html. ↩
-
Claire Jackson, “US Patent Office Reexamining Controversial Pokemon Patent,” Kotaku, November 4, 2025, accessed October 4, 2026, https://kotaku.com/pokemon-patent-summoning-nintendo-palworld-monsters-2000641133. ↩
-
Andrew H. Velzen, “Pokémon Reexam Receives First Action from USPTO,” MBHB, April 3, 2026 (Reexamination No. 90/020,162; the first Office Action mailed March 25, 2026 rejecting all claims under 35 U.S.C. § 103; the June 25 and September 25, 2026 response dates; claim 1 quoted), accessed October 4, 2026, https://www.mbhb.com/intelligence/snippets/pokemon-reexam-receives-first-action-from-uspto/. ↩↩↩
-
The Pokémon Company International, legal information page, https://www.pokemon.com/us/legal/information: served a bot check to the author’s fetcher on October 4, 2026, and its Wayback Machine copy returned the same block; unverified. ↩↩
-
Nintendo, “Nintendo Game Content Guidelines for Online Video & Image Sharing Platforms,” with its FAQ (A5 on selling; Q6 and A6 on other content), accessed October 4, 2026, https://www.nintendo.co.jp/networkservice_guideline/en/index.html. ↩↩↩
-
Nintendo Life, “Cassette Beasts Dev On Doing What Pokémon Doesn’t In A Zelda-Inspired Overworld,” April 26, 2023, accessed October 4, 2026, https://www.nintendolife.com/features/cassette-beasts-dev-on-doing-what-pokemon-doesnt-in-a-zelda-inspired-overworld. ↩
-
Gematsu, “Crema Games announces Pokemon-inspired multiplayer creature collection game Temtem,” April 30, 2018, accessed October 4, 2026, https://www.gematsu.com/2018/04/crema-games-announces-pokemon-inspired-multiplayer-creature-collection-game-temtem. ↩
-
Apple Developer Documentation, “CMPedometer” (iOS 8.0; “An object for fetching the system-generated live walking data”; the usage-description requirement), fetched as JSON October 4, 2026, https://developer.apple.com/documentation/coremotion/cmpedometer. ↩↩
-
Apple Developer Documentation, “stepCount” (HKQuantityTypeIdentifier; iOS 8.0), fetched as JSON October 4, 2026, https://developer.apple.com/documentation/healthkit/hkquantitytypeidentifier/stepcount. ↩
-
Author’s app, Kiradex repository at commit
b1b78b1:server/app/rooms.py(WALKABLE,is_walkable,may_move),server/app/main.py(_playerfrom line 156, which reads each connection’s playeridas a UUID at line 160, with a handle and the card it shows;_tile, which rejects a move to an unwalkable tile; and the move handler from line 217, which sets the player’s tile at line 222),server/app/lines.py(“The preset lines: everything anyone can say in the plaza. Nothing is typed”),Kiradex/World/PlazaStage.swift(the@AppStorage("plaza.id")property at line 333, under a doc comment saying the id is made once and never typed or shown, andjoin(), which sets it toUUID().uuidStringat lines 576 and 577 when it is empty) andKiradex/World/PlazaClient.swift(the hello message, which sends that id at line 135). Private repository. ↩↩↩↩↩↩↩ -
Apple Developer Documentation, “startOfDay(for:)” (Calendar; iOS 8.0), fetched as JSON October 4, 2026, https://developer.apple.com/documentation/foundation/calendar/startofday(for:). ↩↩
-
Apple Developer Documentation, “isDate(:inSameDayAs:)” (Calendar; iOS 8.0), fetched as JSON October 4, 2026, https://developer.apple.com/documentation/foundation/calendar/isdate(:insamedayas:). ↩↩
-
Apple Developer Documentation, “NSCalendarDayChanged” (NSNotification.Name; iOS 8.0), fetched as JSON October 4, 2026, https://developer.apple.com/documentation/foundation/nsnotification/name-swift.struct/nscalendardaychanged. ↩↩
-
Apple Developer Documentation, “significantTimeChangeNotification” (UIApplication; the discussion’s examples), fetched as JSON October 4, 2026, https://developer.apple.com/documentation/uikit/uiapplication/significanttimechangenotification. ↩
-
Author’s check, October 5, 2026:
figures/saying_drift.pybeside the draft, which runs the brief’s proposed drift rule on the acceptance test’s numbers and asserts that ten days applied at once equal ten daily reads; outputfigures/saying_drift.out.txt(50 after three reads on one date and after a restart; 20, stale, after ten days; 5, rising, for a stale saying at 10 three days on). ↩