Never heard of it. I'll check it out.

Here is what i snagged so far, though i'm probably missing other subroutines:

01:B6B1:60 RTS

01:B6B2:00 BRK

01:B6B3:33 UNDEFINED

01:B6B4:20 13 22 JSR $2213

01:B6B7:01 11 ORA ($11,X) @ $C08B = #$D1

01:B6B9:03 UNDEFINED

01:B6BA:32 UNDEFINED

01:B6BB:12 UNDEFINED

01:B6BC:10 02 BPL $B6C0

01:B6BE:32 UNDEFINED

01:B6BF:23 UNDEFINED

01:B6C0:13 UNDEFINED

01:B6C1:30 21 BMI $B6E4

01:B6C3:01 31 ORA ($31,X) @ $0000 = #$00

01:B6C5:13 UNDEFINED

01:B6C6:01 22 ORA ($22,X) @ $8882 = #$B9

01:B6C8:10 30 BPL $B6FA

01:B6CA:33 UNDEFINED

01:B6CB:03 UNDEFINED

01:B6CC:21 A9 AND ($A9,X) @ $0000 = #$00

01:B6CE:00 BRK

01:B6CF:85 00 STA $0000 = #$00

01:B6D1:AA TAX

01:B6D2:BD F8 07 LDA $07F8,X @ $07F8 = #$50

01:B6D5:18 CLC

01:B6D6:7D E6 B6 ADC $B6E6,X @ $B6E6 = #$07

01:B6D9:18 CLC

01:B6DA:65 00 ADC $0000 = #$00

01:B6DC:85 00 STA $0000 = #$00

01:B6DE:E8 INX

01:B6DF:E0 08 CPX #$08

01:B6E1:D0 EF BNE $B6D2

01:B6E3:29 07 AND #$07

01:B799:60 RTS

01:B79A:A9 02 LDA #$02

01:B79C:85 00 STA $0000 = #$02

01:B79E:A9 00 LDA #$00

01:B7A0:85 01 STA $0001 = #$00

01:B7A2:A4 00 LDY $0000 = #$02

01:B7A4:B9 DF B7 LDA $B7DF,Y @ $B7EC = #$05

01:B7A7:20 E2 B7 JSR $B7E2

01:B7AA:B9 90 07 LDA $0790,Y @ $079D = #$00

01:B7AD:29 03 AND #$03

01:B7AF:F0 1A BEQ $B7CB

01:B7B1:A5 00 LDA $0000 = #$02

01:B7B3:8D 8F 07 STA $078F = #$00

01:B7B6:E6 01 INC $0001 = #$00

01:B7B8:A2 00 LDX #$00

01:B7BA:B9 90 07 LDA $0790,Y @ $079D = #$00

01:B7BD:DD 37 B9 CMP $B937,X @ $B93F = #$36

01:B7C0:F0 05 BEQ $B7C7

01:B7C2:E8 INX

01:B7C3:E0 09 CPX #$09

01:B7C5:D0 F6 BNE $B7BD

01:B7C7:8A TXA

01:B7C8:0A ASL

01:B7C9:85 2E STA $002E = #$00

01:B7CB:C6 00 DEC $0000 = #$02

01:B7CD:10 D3 BPL $B7A2

01:B7CF:A5 01 LDA $0001 = #$00

01:B7D1:C9 01 CMP #$01

01:B7D3:D0 01 BNE $B7D6

01:B7EF:60 RTS

01:B7F0:AD 8F 07 LDA $078F = #$00

01:B7F3:0A ASL

01:B7F4:0A ASL

01:B7F5:0A ASL

01:B7F6:6D 8F 07 ADC $078F = #$00

01:B7F9:85 00 STA $0000 = #$00

01:B7FB:A9 0F LDA #$0F

01:B7FD:85 01 STA $0001 = #$0F

01:B7FF:A4 01 LDY $0001 = #$0F

01:B801:B9 90 07 LDA $0790,Y @ $079F = #$00

01:B804:29 03 AND #$03

01:B806:F0 1F BEQ $B827

01:B808:A5 00 LDA $0000 = #$00

01:B80A:85 02 STA $0002 = #$00

01:B80C:A9 09 LDA #$09

01:B80E:85 03 STA $0003 = #$B3

01:B810:A4 02 LDY $0002 = #$00

01:B812:B9 B2 B6 LDA $B6B2,Y @ $B6C1 = #$30

01:B815:20 E2 B7 JSR $B7E2

01:B818:C4 01 CPY $0001 = #$0F

01:B81A:F0 0B BEQ $B827

01:B81C:E6 02 INC $0002 = #$00

01:B81E:C6 03 DEC $0003 = #$B3

01:B820:D0 EE BNE $B810

01:B822:A9 02 LDA #$02

01:B824:4C D8 B7 JMP $B7D8

01:B827:C6 01 DEC $0001 = #$0F

01:B829:10 D4 BPL $B7FF

01:B68E:60 RTS

01:B68F:A2 00 LDX #$00

01:B691:AD 8F 07 LDA $078F = #$00

01:B694:0A ASL

01:B695:0A ASL

01:B696:0A ASL

01:B697:6D 8F 07 ADC $078F = #$00

01:B69A:85 00 STA $0000 = #$00

01:B69C:A4 00 LDY $0000 = #$00

01:B69E:B9 B2 B6 LDA $B6B2,Y @ $B6B2 = #$00

01:B6A1:20 E2 B7 JSR $B7E2

01:B6A4:B9 90 07 LDA $0790,Y @ $0790 = #$00

01:B6A7:9D A0 07 STA $07A0,X @ $07A0 = #$00

01:B6AA:E6 00 INC $0000 = #$00

01:B6AC:E8 INX

01:B6AD:E0 09 CPX #$09

01:B6AF:90 EB BCC $B69C

I did find the subroutine that hashes out all the hidden names (like HELP ME and OKUDA). Don;t know how to read it, but i figured out at least that is what it is doing.

All I know so far about the algorithm from what I've seen is it checks all the letters of the name and I think adds them up and maybe modifies them. Then it adds up the values in the passcode box, each box valued 4 higher than the last (that part I figured out on my own too, but since I'm not used to hexadecimal I didn't know what i was doing). For some reason, three of the passcode boxes are checked twice: $0790, $0796 and $079D, where $079D is the top-left box. That's in the second subroutine posted.

And since I never learned to work with binary, I'm screwed on operations.

**Update:** Ah ha! ... I don't know anything. But those three addresses I noted as being checked twice, I just noticed something looking at the passwords for the HELP ME name. It looks like you cannot have more than one of those three at a time. So if you assign a value to $0790, you must leave $0796 and $079D blank. I still don't know what other purpose they may serve, but that's something I just noticed.

So apparently AND #$03 functions the same as the modulo of the currently checked passcode box over 4. (4 AND 3 is 0, 5 AND 3 is 1, 6 AND 3 is 2, and so on) So that line makes a little more sense to me now.

AARRRRRGH! The password generator seems to be somewhat random! I was running through the game trying to locate the password generator (before I was looking for the password decryptor) and just noticed for the same player name and dying in the same map, I got at least TWO different passwords.... FOR THE SAME STAGE!!

*curls up in a ball and whimpers*