data/claims/dkc.yamlDonkey Kong Country play rules (Yoshifanatic's disassembly)
Game: Donkey Kong Country.
In the first US release, lives are set to 5 when a game is started or a saved game loaded, or to 50 when a cheat flag the code tests is set. The same routine sets the banana count and the first two animal token counts to 0, and a load copies its saved fields back afterward without the lives among them. dkc/starting-lives
About: Donkey Kong Country Lives
Value: lives 5 · cheat lives 50 · cheat bit $0004
CodeDonkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly ·DKC1/Routine_Macros_DKC1.asm#L64313-L64337CODE_B88288: … LDA.w #$0001 STA.w !RAM_DKC1_Player_CurrentKongLo STZ.w !RAM_DKC1_Player_CurrentBananaCountLo … STZ.w !RAM_DKC1_Player_WinkyTokenCount … LDX.w #!Define_DKC1_Global_StartingLives LDA.w !RAM_DKC1_Global_CheatCodeFlagsLo AND.w #!Define_DKC1_CheatFlags_50Lives BEQ.b CODE_B882C5 LDX.w #!Define_DKC1_Global_50LivesCheatStartingLives CODE_B882C5: STX.w !RAM_DKC1_Player_CurrentLifeCountLo STX.w !RAM_DKC1_Player_DisplayedLifeCountLoOur readingcurrent Kong word = 164320–64321bananas, shown and counted, 064322–64325the first two token counts 0 (one 16-bit store)64326lives = 564330cheat bit $0004 set: lives = 5064331–64334set the lives and the shown lives64336–64337Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Routine_Macros_DKC1.asm#L546-L553LDA.b !RAM_DKC1_Global_EntranceIDLo BEQ.b CODE_8083B6 RTS CODE_8083B6: JSL.l CODE_B88288 JSL.l CODE_B8923E RTSOur readingthe first caller: when the entrance number is 0, run the routine546–551Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Routine_Macros_DKC1.asm#L65375-L65406CODE_B894EC: PHA JSL.l CODE_B89470 PLA BCC.b CODE_B8953B LSR STA.w !RAM_DKC1_FileSelect_CurrentSelectionLo JSL.l CODE_B88288 LDA.l $7F2091 AND.w #$00FF STA.b $42 … LDA.l $7F2096 AND.w #$00FF STA.b !RAM_DKC1_Global_EntranceIDLo … LDA.l $7F2099,x STA.w $0583,x … STZ.w !RAM_DKC1_Player_CollectedKONGLettersLo STZ.w $057D STZ.w !RAM_DKC1_Player_WinkyTokenCount RTSOur readingthe second caller: after the file check, store the file chosen, run the routine65376–65382copy the file's fields back: $42, $46, $48, the entrance, $0579, and 256 bytes to $058365383–65402clear the letters, $057D and the first two token counts65403–65405Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Misc_Defines_DKC1.asm#L5-L6!Define_DKC1_Global_StartingLives = 5 !Define_DKC1_Global_50LivesCheatStartingLives = 50Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Misc_Defines_DKC1.asm#L158-L158!Define_DKC1_CheatFlags_50Lives = $0004Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/RAM_Map_DKC1.asm#L61-L61 — lives are at $0575, outside the fields a load copies back!RAM_DKC1_Player_CurrentLifeCountLo = $000575Checked by claude-agent, 2026-11-08 — read the routine from line 64313 to the life store, both of its callers (the only two JSLs to it), the load's field copies, and the life constants and the cheat bit in the definesRevised after a check by a second AI model, 2026-11-08.The flag is bit $0004 of the cheat flags, which the disassembly names the 50-lives cheat; the code shows only that the bit gives 50. That the second caller loads a saved game rests on the disassembly's file-select names. The 16-bit store at line 64326 clears $0571 and $0572, the first two of the four token counts the token routine indexes (dkc/animal-tokens).
In the first US release, 100 bananas give a life (converted from hex). The banana counter on screen counts up one at a time toward the bananas collected; when it would pass 99, the game takes 100 from the bananas collected, sets the counter back to 0, and adds a life. The life waits instead when the sprite number the life routine keeps isn't positive: the number is made negative, and a later routine adds the life and sets it back to 0. In one mode, set by a flag the code tests, the counter runs to 999 and goes back to 0 with no life (both converted from hex). dkc/banana-life
About: Donkey Kong Country Extra life
Value: bananas 100
CodeDonkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly ·DKC1/Routine_Macros_DKC1.asm#L4166-L4210CODE_80A332: LDA.w !RAM_DKC1_Player_DisplayedBananaCountLo CMP.w #$03E7 BMI.b CODE_80A38A STZ.w !RAM_DKC1_Player_DisplayedBananaCountLo … CODE_80A345: JSR.w CODE_80A743 LDA.w !RAM_DKC1_Player_DisplayedBananaCountLo CMP.w !RAM_DKC1_Player_CurrentBananaCountLo BMI.b CODE_80A356 LDA.w !RAM_DKC1_Level_ShowBananaCountTimerLo BNE.b CODE_80A3BD RTS CODE_80A356: LDA.w $1E15 AND.w #$0400 BNE.b CODE_80A332 LDA.w !RAM_DKC1_Player_DisplayedBananaCountLo CMP.w #$0063 BMI.b CODE_80A38A LDA.w !RAM_DKC1_Player_CurrentBananaCountLo SEC SBC.w #$0064 STA.w !RAM_DKC1_Player_CurrentBananaCountLo LDA.w $1E25 DEC BPL.b CODE_80A37B STA.w $1E25 BRA.b CODE_80A37F CODE_80A37B: JSL.l CODE_B6A84B CODE_80A37F: STZ.w !RAM_DKC1_Player_DisplayedBananaCountLo … CODE_80A38A: INC.w !RAM_DKC1_Player_DisplayedBananaCountLoOur readingthe counter has caught up with the bananas: return, or run the show-timer branch4177–4182bit $0400 of $1E15 set:4185–4187 counter below $3E7 (999): count up one4167–4169 else back to 0, no life4170–4173counter below $63 (99): count up one @4188-4190,4209–4210else bananas - $64 (100)4191–4194 $1E25 - 1 not negative: add a life @4195-4197,4201–4202 else store it, no life now4198–4199 counter back to 04203–4206Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Routine_Macros_DKC1.asm#L53225-L53258CODE_B6A804: LDX.w $1E25 BNE.b CODE_B6A84A JSL.l CODE_BF8148 LDY.w #DATA_B5E62B JSL.l CODE_B5804C LDX.b $86 STX.w $1E25 … CODE_B6A84B: JSL.l CODE_B6A804 INC.w !RAM_DKC1_Player_CurrentLifeCountLo INC.w !RAM_DKC1_NorSpr_RAMTable1375Lo,x RTLOur readingthe life routine's helper: $1E25 holds a sprite number; not 0: use it53226–532270: create a sprite and keep its number in $1E2553228–53232lives + 1, and + 1 to a field of that sprite53254–53257Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Routine_Macros_DKC1.asm#L67832-L67836CODE_B8B503: LDA.w $1E25 BPL.b CODE_B8B50F STZ.w $1E25 JSL.l CODE_B6A84BOur reading$1E25 negative: set it to 0 and add the waiting life67833–67836Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/RAM_Map_DKC1.asm#L61-L66!RAM_DKC1_Player_CurrentLifeCountLo = $000575 … !RAM_DKC1_Player_CurrentBananaCountLo = $00057BChecked by claude-agent, 2026-11-08 — read the banana counter CODE_80A345 with its other mode CODE_80A332, the life add CODE_B6A84B and its helper CODE_B6A804, and the waiting life's payout CODE_B8B503Revised after a check by a second AI model, 2026-11-08.The sprite number is kept at $1E25; the mode flag is bit $0400 of the word at $1E15. A second 100 counted while a life waits takes $1E25 from $FFFF to $FFFE, still negative, and the later routine pays one life for both (read from the two routines; not measured).
In the first US release, the routine that plays the sound the disassembly names "life balloon" adds to the lives a value read from a field of the touched sprite, and adds the same value to a field of the sprite the life routine keeps, whose role isn't read. Where the value is set isn't read. dkc/life-balloon
About: Donkey Kong Country Extra life
CodeDonkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly ·DKC1/Routine_Macros_DKC1.asm#L53123-L53140CODE_B6A73D: JSL.l CODE_B6A804 PHX JSL.l CODE_BCBC37 LDA.w #!Define_DKC1_SoundID_CollectLifeBalloon JSL.l CODE_BFFB3A PLX LDY.b !RAM_DKC1_NorSpr_CurrentIndexLo LDA.w !RAM_DKC1_NorSpr_RAMTable145DLo,y CLC ADC.w !RAM_DKC1_Player_CurrentLifeCountLo STA.w !RAM_DKC1_Player_CurrentLifeCountLo LDA.w !RAM_DKC1_NorSpr_RAMTable145DLo,y CLC ADC.w !RAM_DKC1_NorSpr_RAMTable1375Lo,x STA.w !RAM_DKC1_NorSpr_RAMTable1375Lo,xOur readingX = the sprite the life routine keeps53124play sound $7353127–53128lives + the current sprite's value at $145D53130–53134the same value added to field $1375 of sprite X53135–53138Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Routine_Macros_DKC1.asm#L53225-L53232CODE_B6A804: LDX.w $1E25 BNE.b CODE_B6A84A JSL.l CODE_BF8148 LDY.w #DATA_B5E62B JSL.l CODE_B5804C LDX.b $86 STX.w $1E25Our readingX = the kept sprite, created first if there is none53226–53232Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Misc_Defines_DKC1.asm#L151-L151!Define_DKC1_SoundID_CollectLifeBalloon = $73Checked by claude-agent, 2026-11-08 — read CODE_B6A73D from its label to the store of the sprite's index, its helper CODE_B6A804, and the sound's defineRevised after a check by a second AI model, 2026-11-08.The kept sprite's number is at $1E25 (dkc/banana-life); the value is the touched sprite's field $145D. That the routine runs when a balloon is touched rests on the sound's name; the test before it (line 53118) isn't read.
In the first US release, each of the four kinds of animal token has its own count. A token adds 1 to its kind's count, and a count of 4 becomes 1, so the fourth token of a kind counts as the first of a new set. The new count, 1 to 3, picks one of three consecutive sounds, and at 3 the game sets two values whose effect isn't read here. dkc/animal-tokens
About: Donkey Kong Country Collectibles
CodeDonkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly ·DKC1/Routine_Macros_DKC1.asm#L49614-L49656CODE_B683D2: JSL.l CODE_BCBC37 … LDY.w #$0000 LDA.w !RAM_DKC1_NorSpr_AnimationIDLo,x CMP.w #!Define_DKC1_AnimationID_AnimalBuddyToken_Winky BEQ.b CODE_B683F6 INY … INY … INY CODE_B683F6: TYA STA.w !RAM_DKC1_NorSpr_AnimationIDLo,x SEP.b #$20 LDA.w !RAM_DKC1_Player_WinkyTokenCount,y INC CMP.b #$04 BCC.b CODE_B68406 LDA.b #$01 CODE_B68406: STA.w !RAM_DKC1_Player_WinkyTokenCount,y … ADC.w #!Define_DKC1_SoundID_Collect1stAnimalBuddyToken-$01 JSL.l CODE_BFFB3A … CMP.w #$0003 BCC.b CODE_B68433 LDA.w #$0011 STA.w $1929 PHY JSL.l CODE_809B9C LDA.w #$0051 STA.w !RAM_DKC1_NorSpr_RAMTable1029Lo,y PLYOur readingthe token's kind, 0 to 3, from its animation49619–49631its count + 1; 4 becomes 149634–49640sound = the first token's sound + count - 149642–49646count 3 or more:49647–49649 $1929 = $1149650–49651 the current Kong's sprite gets $5149652–49656Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Misc_Defines_DKC1.asm#L132-L134 — the three sounds, $60 to $62!Define_DKC1_SoundID_Collect1stAnimalBuddyToken = $60 !Define_DKC1_SoundID_Collect2ndAnimalBuddyToken = $61 !Define_DKC1_SoundID_Collect3rdAnimalBuddyToken = $62Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Routine_Macros_DKC1.asm#L3221-L3234CODE_809B9C: JSR.w CODE_809BA0 RTL CODE_809BA0: LDY.w #$0002 LDA.w !RAM_DKC1_Player_CurrentKongLo BEQ.b CODE_809BAF CMP.w #$0003 BPL.b CODE_809BAF ASL TAY CODE_809BAF: RTSOur readingthe Kong's sprite slot: 2, or the current Kong word × 2 when it is 1 or 23226–3233Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/RAM_Map_DKC1.asm#L57-L60 — the four counts, one byte each, in the order the routine numbers the kinds!RAM_DKC1_Player_WinkyTokenCount = $000571 !RAM_DKC1_Player_ExpressoTokenCount = !RAM_DKC1_Player_WinkyTokenCount+$01 !RAM_DKC1_Player_RambiTokenCount = !RAM_DKC1_Player_WinkyTokenCount+$02 !RAM_DKC1_Player_EnguardeTokenCount = !RAM_DKC1_Player_WinkyTokenCount+$03Checked by claude-agent, 2026-11-08 — read the token routine CODE_B683D2 through the store of $51, the slot helper CODE_809B9C, and the three sound definesRevised after a check by a second AI model, 2026-11-08.The disassembly names the four kinds, in order, Winky, Expresso, Rambi, and Enguarde; the routine tests the first three by animation number and takes anything else as the fourth. At 3 it sets the word at $1929 to $11 and gives the current Kong's sprite the value $51 in its field $1029.
In the first US release, the routine the disassembly labels KONG letters adds a life when four letter flags are all set: once a test it runs first passes (unread), it adds the sprite's own flag to the four, and when all four are set it resets them, sets two other flags whose effect isn't read, and adds a life. dkc/kong-letters-life
About: Donkey Kong Country Extra life
CodeDonkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly ·DKC1/Routine_Macros_DKC1.asm#L115414-L115431CODE_BFD551: JSR.w CODE_BFD5FB BPL.b CODE_BFD57A LDA.w #$0001 STA.w !RAM_DKC1_NorSpr_RAMTable1029Lo,x LDA.w !RAM_DKC1_NorSpr_RAMTable13E9Lo,x ORA.w !RAM_DKC1_Player_CollectedKONGLettersLo STA.w !RAM_DKC1_Player_CollectedKONGLettersLo AND.w #$000F CMP.w #$000F BNE.b CODE_BFD57A SEP.b #$20 LDA.b #$90 STA.w !RAM_DKC1_Player_CollectedKONGLettersLo REP.b #$20 JSL.l CODE_B6A84B CODE_BFD57A: RTLOur readingthe test at $BF:D5FB fails: nothing115415–115416the sprite's state = 1115417–115418the letters word |= the sprite's own bit115419–115421all four low bits set:115422–115424 the low byte = $90115425–115428 lives + 1115429Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Routine_Macros_DKC1.asm#L53254-L53258CODE_B6A84B: JSL.l CODE_B6A804 INC.w !RAM_DKC1_Player_CurrentLifeCountLoOur readinglives + 153256Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/RAM_Map_DKC1.asm#L69-L69!RAM_DKC1_Player_CollectedKONGLettersLo = $00057FChecked by claude-agent, 2026-11-08 — read CODE_BFD551 to its RTL and the life add CODE_B6A84B; found by searching every use of $057FRevised after a check by a second AI model, 2026-11-08.The flags are the low four bits of the word at $057F, which the disassembly names the collected KONG letters; the sprite's flag is its field $13E9. The reset writes $90 to the low byte, which clears the four and sets bits $10 and $80; bit $10 changes how a letter sprite starts (line 115349), and what either bit does after that isn't read.
In the first US release, a Rambi or Enguarde token count carries into the next game unless the console is reset (computed). Starting or loading a game sets the first two of the four animal token counts to 0 and leaves the other two as they were: by the disassembly's names, Winky's and Expresso's counts are cleared, and Rambi's and Enguarde's are not. The reset fills work RAM with zero bytes by DMA through its data port, starting at address 0. The only other writes to the four counts are the token routine's own (dkc/animal-tokens) and a copy of 280 bytes of player state that starts two bytes below the counts (280 converted from hex): at a game's start the game copies the state to both players' stores, and in two-player mode, as far as the code shows (the mode isn't read), each change of player saves the state to one store and loads it from the other. dkc/token-counts-carry
About: Donkey Kong Country Collectibles
Value: cleared Winky, Expresso · kept Rambi, Enguarde · state bytes 280
CodeIn the first US release, lives are set to 5 when a game is started or a saved game loaded, or to 50 when a cheat flag the code tests is set. The same routine sets the banana count and the first two animal token counts to 0, and a load copies its saved fields back afterward without the lives among them. CodeIn the first US release, each of the four kinds of animal token has its own count. A token adds 1 to its kind's count, and a count of 4 becomes 1, so the fourth token of a kind counts as the first of a new set. The new count, 1 to 3, picks one of three consecutive sounds, and at 3 the game sets two values whose effect isn't read here. CodeDonkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly ·DKC1/RAM_Map_DKC1.asm#L55-L60 — the counts are the bytes $0571 to $0574; the state copy starts at $056F!RAM_DKC1_Player_CurrentKongLo = $00056F … !RAM_DKC1_Player_WinkyTokenCount = $000571 !RAM_DKC1_Player_ExpressoTokenCount = !RAM_DKC1_Player_WinkyTokenCount+$01 !RAM_DKC1_Player_RambiTokenCount = !RAM_DKC1_Player_WinkyTokenCount+$02 !RAM_DKC1_Player_EnguardeTokenCount = !RAM_DKC1_Player_WinkyTokenCount+$03Donkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Routine_Macros_DKC1.asm#L64326-L64326 — a 16-bit store in the routine that sets the lives (dkc/starting-lives), so $0571 and $0572 onlySTZ.w !RAM_DKC1_Player_WinkyTokenCountDonkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Routine_Macros_DKC1.asm#L65403-L65405 — the file load clears the same two again after copying its saved fieldsSTZ.w !RAM_DKC1_Player_CollectedKONGLettersLo STZ.w $057D STZ.w !RAM_DKC1_Player_WinkyTokenCountDonkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Routine_Macros_DKC1.asm#L49630-L49640 — the token routine, an 8-bit store indexed by kind (0 to 3)CODE_B683F6: TYA STA.w !RAM_DKC1_NorSpr_AnimationIDLo,x SEP.b #$20 LDA.w !RAM_DKC1_Player_WinkyTokenCount,y INC CMP.b #$04 BCC.b CODE_B68406 LDA.b #$01 CODE_B68406: STA.w !RAM_DKC1_Player_WinkyTokenCount,yDonkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Routine_Macros_DKC1.asm#L4701-L4726CODE_80A8D8: JSR.w CODE_80A8AD REP.b #$20 LDA.w #DATA_80A911 STA.w DMA[$00].SourceLo LDA.w #DATA_80A911>>16 STA.w DMA[$00].SourceBank STZ.w DMA[$00].SizeLo STZ.w !REGISTER_WRAMAddressLo SEP.b #$20 STZ.w !REGISTER_WRAMAddressBank LDA.b #!REGISTER_ReadOrWriteToWRAMPort STA.w DMA[$00].Destination LDA.b #$08 STA.w DMA[$00].Parameters LDA.b #$01 STA.w !REGISTER_DMAEnable LDA.b #$01 STA.w !REGISTER_DMAEnable … JMP.w CODE_808020 DATA_80A911: db $00Our readingsource: one byte, $00; count 0 (65,536 bytes); work-RAM address 04704–4711to the work-RAM data port, address adjust fixed ($08)4712–4715run twice4716–4719then the reset's next step4723–4726In the first US release, the game sends the sound driver to the audio processor once, at reset: first a small loader, then 3,454 bytes of driver to audio RAM from address 1,248 (both computed), the first 256 of them zeros, then the sound effects. To start a song it sends the song's data, each block headed by its length and its address in audio RAM, restarts the driver at its entry point, and waits for the driver to answer 255. Each byte goes over the ports with a toggling handshake that the loader echoes back. Code — its quotes show the reset entry jumping to the work-RAM fill, which then goes on to the rest of the resetDonkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Routine_Macros_DKC1.asm#L546-L552 — at a game's start, the lives routine and then the copy to both storesLDA.b !RAM_DKC1_Global_EntranceIDLo BEQ.b CODE_8083B6 RTS CODE_8083B6: JSL.l CODE_B88288 JSL.l CODE_B8923EDonkey-Kong-Country-1-Disassembly: Donkey Kong Country (SNES) disassembly · DKC1/Routine_Macros_DKC1.asm#L65031-L65170CODE_B8923E: JSR.w CODE_B892FE LDA.b $44 EOR.w #$0001 STA.b $44 JSR.w CODE_B892FE LDA.b $44 EOR.w #$0001 STA.b $44 … CODE_B89283: LDA.b $42 CMP.w #$0002 BEQ.b CODE_B8928B RTL CODE_B8928B: JSR.w CODE_B892FE LDA.b $44 EOR.w #$0001 STA.b $44 JSR.w CODE_B892BA … CODE_B892BA: JSR.w CODE_B89333 … LDX.w #$0000 CODE_B892D0: LDA.w !REGISTER_ReadOrWriteToWRAMPort STA.w !RAM_DKC1_Player_CurrentKongLo,x INX CPX.w #$0118 BNE.b CODE_B892D0 … CODE_B892FE: JSR.w CODE_B89333 … LDX.w #$0000 CODE_B89314: LDA.w !RAM_DKC1_Player_CurrentKongLo,x STA.w !REGISTER_ReadOrWriteToWRAMPort INX CPX.w #$0118 BNE.b CODE_B89314 … CODE_B89333: LDA.b $44 BEQ.b CODE_B89348 LDA.w #$7F2555 … CODE_B89348: LDA.w #$7F2331Our readinggame start: save to the store of player $44, then of the other65031–65041mode word $42 = 2: save, change player, load the new player's65063–65074load: $118 (280) bytes from the store into the state from $056F65090–65106save: the same bytes from the state to the store65125–65141the store: $7F2331 for player 0, $7F2555 for player 165152–65170DMA registers · DMAPn - DMA/HDMA parameters ($43n0 read/write) (n = 0..7)A fixed address adjust mode (A) can be used to fill the DMA target with a single repeated byte of data.DMA registers · DASnL, DASnH - DMA Byte-Counter ($43n5, $43n6 read/write) (n = 0..7)A byte count of zero means 65536 bytes.Checked by claude-agent, 2026-11-08 — searched the routines for every name and address of the four counts and for indexed or long stores that reach $0571-$0574 (three direct stores and the state copy's indexed loop); read the game-start and file-load clears, the token routine, the reset's work-RAM fill, and the player-state save, load and swap with their callersRevised after a check by a second AI model, 2026-11-08.The counts are $0571 (Winky) to $0574 (Enguarde), by the disassembly's names and the token routine's index order (Winky 0, Expresso 1, Rambi 2, otherwise 3). The game-start and file-load clears are 16-bit STZ stores at $0571. The state copy runs from $056F, so it holds all four counts; the swap runs only when the word at $42 is 2, which by the game's design is two players taking turns, not read here. The fill runs two passes of 65,536 bytes; that they cover all of work RAM, rather than one address, rests on the port's address stepping after each byte, which no quoted source says. The search for other writes covered the routine file's direct, indexed and long addressing, not code that computes the address at run time.