Idiomdrottning’s homepage

Clu-Clu Land’s strobe effect

On the NES version of Clu-Clu Land, Bubbles goes to a rave between levels as the background screen rapidly cycles. That might’ve looked okay on CRT but does not look good on OLED or LCD.

Clu-Clu Land is my favorite game but I never heard of it back in the day (go figure; we played Devil World, Ice Climber, Little Sampson, all kinds of deep cuts but not this). The version I fell in love with was the 2DS Virtual Console release. It features a much slower and more pleasant background color pulse between levels.

TL;DR: Look for a sequence of A9 04 85 55 A9 01 at address 0x435 (that offset is for a file that does include the header) and change the $04 to $0f if you want to make the backgrounds cycle more slowly the way modern VC and AC releases of Clu-Clu Land do.

Short story long

Disappointed in how the version from NES romsets was so stroboscopic, I wanted to dump out the VC version so I could play it on Retroid.

My 2DS is so broken and requires a lot of tries to boot but I finally managed to start Godmode9 on it and get the ROM from it. But it was just as stroboscopic!

After looking around, it turned out that there was a separate .patch file that the VC version applies dynamically:

;Format Sample
;[xxxx]			;User-defined Name (Max:31 chars)
;Mode = 1		;1:Fixcode; 2:Fixvalue; 3:Mask; 4:Palette; 5:Double Frame Buffer
;Type = 0		;Normal: 0:Begin 1:End; Mode2: Value Type
;Address = x1F8000	;ROM Address
;Fixcode = 0		;Mode1: Fixed Rom Code; Mode2: Fixed Value
;DelayFrame = 0		;Delay Frame
;FadeFrame = 0		;Fade Frame 0:Off
;DarkEnable0 = 0	;0:Off, 1:On (for Normal Mode)
;ReduceEnable0 = 0	;0:Off, 1:On (for Normal Mode)
;MotionBEnable0 = 0	;0:Off, 1:Black Fade, 2:White Fade, 3:Frame Blend (for Normal Mode)
;Dark0 = 10		;0~10 (for Normal Mode)
;ReduceColorR0 = 0	;0~31 (for Normal Mode)
;ReduceColorG0 = 0	;0~31 (for Normal Mode)
;ReduceColorB0 = 0	;0~31 (for Normal Mode)
;MotionBlur0 = 31	;0~31 (for Normal Mode)
;DarkEnable1 = 0	;0:Off, 1:On (for Green Mode)
;ReduceEnable1 = 0	;0:Off, 1:On (for Green Mode)
;MotionBEnable1 = 0	;0:Off, 1:Black Fade, 2:White Fade, 3:Frame Blend (for Green Mode)
;Dark1 = 10		;0~10 (for Green Mode)
;ReduceColorR1 = 0	;0~31 (for Green Mode)
;ReduceColorG1 = 0	;0~31 (for Green Mode)
;ReduceColorB1 = 0	;0~31 (for Green Mode)
;MotionBlur1 = 31	;0~31 (for Green Mode)
;PaletteX = c31,31,31	;X:0~15, cR,G,B (0~31)


;$A55F:A5 55     LDA $0055 = #$00           A:21
;$A561:D0 12     BNE $A575                  A:00
;$A563:A9 04     LDA #$04                   A:00
;$A565:85 55     STA $0055 = #$00           A:04
;$A567:A9 01     LDA #$01                   A:04
;$A569:45 A7     EOR $00A7 = #$01           A:01
;$A56B:85 A7     STA $00A7 = #$01           A:00
;
;00000435h: A9 04 85 55 A9 01

[FPA]
Mode = 1
Address = 0x435
Fixcode = a6: A9 0f 85 55 A9 01

Score bug?

Clu-Clu Land also has a well-known score bug where you get 30 points when you’re supposed to get 3000 points.

According to The Cutting Room Floor, 0x0571’s value of $80 should be $08 to fix the bug. (That offset is 0x0561 headerless, as their page correctly indicates, but I’m working with a headered file here.) But the version on the 2DS actually had $80! So I’m wondering if maybe it went from $08 to $80 rather than the other way around? I did set it to $08 as per TCRF but I’ll keep a look out the next time I play the game and update this page once I know either way.