If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Notes:Lemmings 2: The Tribes (SNES)

From The Cutting Room Floor
Jump to navigation Jump to search

This page contains notes for the game Lemmings 2: The Tribes (SNES).

Addresses correspond to the USA version unless noted otherwise.

RAM Addresses

7E0C34 cursor X coord
7E0C35 cursor Y coord
7E0C36 cursor graphic: 84-hand cursor clicking, 8C-Music Test, C0-Hi! speech bubble, C4-Cheat Mode

7E2886 Classic tribe cleared (max $0A / 10)
7E2887 Beach tribe cleared (max $0A / 10)
7E2888 Cavelem tribe cleared (max $0A / 10)
7E2889 Circus tribe cleared (max $0A / 10)
7E288A Egyptian tribe cleared (max $0A / 10)
7E288B Highland tribe cleared (max $0A / 10)
7E288C Medieval tribe cleared (max $0A / 10)
7E288D Outdoor tribe cleared (max $0A / 10)
7E288E Polar tribe cleared (max $0A / 10)
7E288F Shadow tribe cleared (max $0A / 10)
7E2890 Space tribe cleared (max $0A / 10)
7E2891 Sports tribe cleared (max $0A / 10)

7E289E-7E2915 lemmings saved on each level ($13=19 lemmings, $28=40 lemmings)
7E2916-7E298D 1st/2nd/3rd place status for each level (00=not completed,01=1st place,02=2nd place,03=3rd place)

Title Screen

Data Sets

The 6 byte data sets for all actions on the title screen start at SNES address $0390F6

min x coord
  min y coord
     max x coord
       max y coord
          jump to programming address (+030000) eg: Play jumps to SNES address 039289
               description
36AC 6BB5 8992 Play
4591 9AA4 5992 Practice
73AC AAB5 7192 Map
0091 34A4 BE92 Load
AC91 E0A4 B992 Save
7A09 8111 8C91 Hi!
A84C A94D DB92 View Credits
096D 1683 AA91 Cheat Mode bit 01
2770 36AA B691 Cheat Mode bit 02
4979 4F82 C291 Cheat Mode bit 04
617B 6583 CE91 Cheat Mode bit 08
687B 6C80 DA91 Cheat Mode bit 10
837A 878D E691 Cheat Mode bit 20
8B7A 9387 F291 Cheat Mode bit 40
B75D C98F FE91 Cheat Mode bit 80
00A8 07B4 5791 Music Test

Programming

Check data sets
$03/90A3 B9 00 00    LDA $0000,y
$03/90A6 C9 FF       CMP #$FF                //Terminating byte for 6 byte data sets block
$03/90A8 F0 2E       BEQ $2E    [$90D8]      //Skip to $90D8 if at the end of the 6 byte data sets block
$03/90AA AD 34 0C    LDA $0C34  [$03:0C34]   //Current cursor position - X coord
$03/90AD D9 00 00    CMP $0000,y             //Compare to min X coord in 6 byte data set
$03/90B0 90 1E       BCC $1E    [$90D0]      //Skip to $90D0 if lower than the minimum X coord
$03/90B2 D9 02 00    CMP $0002,y             //Compare to max X coord in 6 byte data set
$03/90B5 B0 19       BCS $19    [$90D0]      //Skip to $90D0 if higher than the maximum X coord
$03/90B7 AD 35 0C    LDA $0C35  [$03:0C35]   //Curent cursor position - Y coord
$03/90BA D9 01 00    CMP $0001,y             //Compare to min Y coord in 6 byte data set
$03/90BD 90 11       BCC $11    [$90D0]      //Skip to $90D0 if lower than the minimum Y coord
$03/90BF D9 03 00    CMP $0003,y             //Compare to max Y coord in 6 byte data set
$03/90C2 B0 0C       BCS $0C    [$90D0]      //Skip to $90D0 if higher than the maximum Y coord
Cursor was within boundaries when B button pressed, jump to programming for the data set
$03/90C4 C2 20       REP #$20
$03/90C6 B9 04 00    LDA $0004,y
$03/90C9 85 4D       STA $4D    [$00:004D]
$03/90CB E2 20       SEP #$20
$03/90CD 6C 4D 00    JMP ($004D)
Cursor wasn't within boundaries when B button pressed, advance 6 bytes to next data set
$03/90D0 C8          INY
$03/90D1 C8          INY
$03/90D2 C8          INY
$03/90D3 C8          INY
$03/90D4 C8          INY
$03/90D5 C8          INY
$03/90D6 80 CB       BRA $CB    [$90A3]
Reached end of 6 byte data sets block
$03/90D8 A9 84       LDA #$84                //Cursor clicked (ie, finger pressed down)
$03/90DA 8D 36 0C    STA $0C36  [$03:0C36]
$03/90DD A9 0F       LDA #$0F                //Length of time to show cursor finger pressed down?
$03/90DF 85 15       STA $15    [$00:0015]
$03/90E1 60          RTS

Enable Hi!

$03/918C A2 80 80    LDX #$8080              //Enable speech bubble effect (not checked)
$03/918F 86 F2       STX $F2    [$00:00F2]
$03/9191 A9 C0       LDA #$C0                //Hi! speech bubble cursor
$03/9193 8D 36 0C    STA $0C36  [$03:0C36]
$03/9196 A9 00       LDA #$00
$03/9198 85 15       STA $15    [$00:0015]
Play sound effect (also shared by Cheat Mode)
$03/919A A9 FF       LDA #$FF
$03/919C 8D 42 21    STA $2142  [$03:2142]
$03/919F A9 04       LDA #$04
$03/91A1 8D 41 21    STA $2141  [$03:2141]
$03/91A4 A9 0B       LDA #$0B
$03/91A6 8D 40 21    STA $2140  [$03:2140]
$03/91A9 60          RTS

Enable Cheat Mode

Bit 01
$03/91AA A9 01       LDA #$01
$03/91AC 0F AB 29 7E ORA $7E29AB
$03/91B0 8F AB 29 7E STA $7E29AB
$03/91B4 80 52       BRA $52    [$9208]
Bit 02
$03/91B6 A9 02       LDA #$02
$03/91B8 0F AB 29 7E ORA $7E29AB
$03/91BC 8F AB 29 7E STA $7E29AB
$03/91C0 80 46       BRA $46    [$9208]
Bit 04
$03/91C2 A9 04       LDA #$04
$03/91C4 0F AB 29 7E ORA $7E29AB
$03/91C8 8F AB 29 7E STA $7E29AB
$03/91CC 80 3A       BRA $3A    [$9208]
Bit 08
$03/91CE A9 08       LDA #$08
$03/91D0 0F AB 29 7E ORA $7E29AB
$03/91D4 8F AB 29 7E STA $7E29AB
$03/91D8 80 2E       BRA $2E    [$9208]
Bit 10 
$03/91DA A9 10       LDA #$10
$03/91DC 0F AB 29 7E ORA $7E29AB
$03/91E0 8F AB 29 7E STA $7E29AB
$03/91E4 80 22       BRA $22    [$9208]
Bit 20
$03/91E6 A9 20       LDA #$20
$03/91E8 0F AB 29 7E ORA $7E29AB
$03/91EC 8F AB 29 7E STA $7E29AB
$03/91F0 80 16       BRA $16    [$9208]
Bit 40
$03/91F2 A9 20       LDA #$40
$03/91F4 0F AB 29 7E ORA $7E29AB
$03/91F8 8F AB 29 7E STA $7E29AB
$03/91FC 80 0A       BRA $0A    [$9208]
Bit 80
$03/91FE A9 80       LDA #$80
$03/9200 0F AB 29 7E ORA $7E29AB
$03/9204 8F AB 29 7E STA $7E29AB
$03/9208 AF AB 29 7E LDA $7E29AB
$03/920C C9 FF       CMP #$FF                //Check if all 8 spots were correctly clicked/all bits set
$03/920E F0 01       BEQ $01    [$9211]      //Skip to $9211 if successful
$03/9210 60          RTS                     //Otherwise, exit
Successful cheat entry, all 8 spots clicked
$03/9211 A9 0A       LDA #$0A                //10 levels cleared
$03/9213 A2 0B 00    LDX #$000B              //Total number of tribes 
$03/9216 9F 86 28 7E STA $7E2886,x           //RAM addresses 7E2886-7E2981 hold tribe index, see RAM Addresses section for list
$03/921A CA          DEX
$03/921B 10 F9       BPL $F9    [$9216]      //Loop until all levels cleared for each tribe
$03/921D A2 77 00    LDX #$0077              //Total number of levels
$03/9220 A9 13       LDA #$13                //19 lemmings saved*
$03/9222 9F 9E 28 7E STA $7E289E,x           //RAM addresses 7E289E-7E2915 hold number of lemmings saved on each level
$03/9226 A9 03       LDA #$03                //3rd place**
$03/9228 9F 16 29 7E STA $7E2916,x[$7E:298D] //RAM addresses 7E2916-7E298D hold 1st/2nd/3rd place status obtained for each level
$03/922C CA          DEX
$03/922D 10 F1       BPL $F1    [$9220]      //Loop until all levels cleared in 3rd place with 19 lemmings saved in each
$03/922F 20 9A 91    JSR $919A  [$03:919A]   //Play sound effect
$03/9232 A9 C4       LDA #$C4                //Change cursor from hand into Cheat Mode
$03/9234 8D 36 0C    STA $0C36  [$03:0C36]
$03/9237 A9 00       LDA #$00
$03/9239 85 15       STA $15    [$00:0015]
$03/923B 60          RTS

*Use Pro Action Replay code 03922128 or Game Genie code 46B4-6D0A for 40 lemmings saved in each level
**Use Pro Action Replay code 03922701 or Game Genie code DFB4-6FAA for 1st place in each level