Notes:Thunder Spirits

Configuration Mode
Addresses correspond to the North American version.

open configuration menu $05/91AC AF 90 03 7F LDA $7F0390[$7F:0390]  //check if finished game. FFFF = no 0000 = yes $05/91B0 D0 03      BNE $03    [$91B5] $05/91B2 4C BD 92   JMP $92BD  [$05:92BD]   //yes, open expanded config mode. replace 4C BD 92 with 4C F2 91 (JMP $91F2) for debug mode $05/91B5 20 1F 89   JSR $891F  [$05:891F]   //no

Pause cheat
Addresses correspond to the North American version.

while paused... $00/8D31 20 0D 88   JSR $880D  [$00:880D] $00/8D34 20 95 AB   JSR $AB95  [$00:AB95] $00/8D37 20 E1 B5   JSR $B5E1  [$00:B5E1] $00/8D3A AD 69 1B   LDA $1B69  [$00:1B69] $00/8D3D 89 00 20   BIT #$2000              //check Select $00/8D40 F0 03      BEQ $03    [$8D45]

Select button pressed $00/8D42 EE 6D 1B   INC $1B6D  [$00:1B6D]   //inc counter for times Select pressed

$00/8D45 89 20 00   BIT #$0020              //check L $00/8D48 F0 08       BEQ $08    [$8D52]

L button pressed $00/8D4A AD 6D 1B   LDA $1B6D  [$00:1B6D] $00/8D4D C9 0A 00   CMP #$000A              //check if Select pressed 10x $00/8D50 F0 09      BEQ $09    [$8D5B]      //if 10x, proceed to next section $8D5B

$00/8D52 AD 69 1B   LDA $1B69  [$00:1B69] $00/8D55 89 00 10   BIT #$1000              //check Start $00/8D58 F0 D7      BEQ $D7    [$8D31]

$00/8D5A 60         RTS

second part of cheat entry $00/8D5B 20 0D 88   JSR $880D  [$00:880D] $00/8D5E 20 95 AB   JSR $AB95  [$00:AB95] $00/8D61 20 E1 B5   JSR $B5E1  [$00:B5E1] $00/8D64 AD 69 1B   LDA $1B69  [$00:1B69] $00/8D67 89 10 00   BIT #$0010              //check R $00/8D6A F0 03       BEQ $03    [$8D6F]

R button pressed $00/8D6C EE 6D 1B   INC $1B6D  [$00:1B6D]   //inc counter for times R pressed

$00/8D6F 89 00 20   BIT #$2000              //check Select $00/8D72 F0 08      BEQ $08    [$8D7C]

Select button pressed $00/8D74 AD 6D 1B   LDA $1B6D  [$00:1B6D] $00/8D77 C9 0C 00   CMP #$000C              //Select pressed 10x + R 2x $00/8D7A F0 09      BEQ $09    [$8D85]      //if #$0C, code entry successful, proceed to $8D85

$00/8D7C AD 69 1B   LDA $1B69  [$00:1B69] $00/8D7F 89 00 10   BIT #$1000              //check Start $00/8D82 F0 D7      BEQ $D7    [$8D5B]

$00/8D84 60         RTS

use cheat features $00/8D85 20 0D 88   JSR $880D  [$00:880D] $00/8D88 20 95 AB   JSR $AB95  [$00:AB95] $00/8D8B 20 E1 B5   JSR $B5E1  [$00:B5E1] $00/8D8E AD 69 1B   LDA $1B69  [$00:1B69] $00/8D91 89 80 00   BIT #$0080              //check A $00/8D94 F0 11       BEQ $11    [$8DA7]

A button pressed - upgrade/add weapons $00/8D96 20 F1 8D   JSR $8DF1  [$00:8DF1] $00/8D99 E2 20      SEP #$20 $00/8D9B A9 FF      LDA #$FF $00/8D9D 99 63 1B   STA $1B63,y[$00:1B63] $00/8DA0 C2 20      REP #$20 $00/8DA2 20 45 C1   JSR $C145  [$00:C145] $00/8DA5 80 DE      BRA $DE    [$8D85]

$00/8DA7 89 00 80   BIT #$8000              //check B $00/8DAA F0 14       BEQ $14    [$8DC0]

B button pressed - downgrade/remove weapons $00/8DAC 20 F1 8D   JSR $8DF1  [$00:8DF1] $00/8DAF E2 20      SEP #$20 $00/8DB1 A9 00      LDA #$00 $00/8DB3 99 63 1B   STA $1B63,y[$00:1B64] $00/8DB6 C2 20      REP #$20 $00/8DB8 9C 61 1B   STZ $1B61  [$00:1B61] $00/8DBB 20 45 C1   JSR $C145  [$00:C145] $00/8DBE 80 C5      BRA $C5    [$8D85]

$00/8DC0 89 40 00   BIT #$0040              //check X $00/8DC3 F0 0B       BEQ $0B    [$8DD0]

X button pressed - add support guns $00/8DC5 A9 01 00   LDA #$0001 $00/8DC8 8D 12 04   STA $0412  [$00:0412] $00/8DCB 20 45 C1   JSR $C145  [$00:C145] $00/8DCE 80 B5      BRA $B5    [$8D85]

$00/8DD0 89 00 40   BIT #$4000              //check Y $00/8DD3 F0 0B       BEQ $0B    [$8DE0]

Y button pressed - add shield $00/8DD5 A9 03 00   LDA #$0003 $00/8DD8 8D 14 04   STA $0414  [$00:0414] $00/8DDB 20 45 C1   JSR $C145  [$00:C145] $00/8DDE 80 A5      BRA $A5    [$8D85]

$00/8DE0 89 10 00   BIT #$0010              //check R $00/8DE3 F0 03       BEQ $03    [$8DE8]

R button pressed - self-destruct $00/8DE5 20 6C AD   JSR $AD6C  [$00:AD6C]

$00/8DE8 89 00 10   BIT #$1000              //check Start $00/8DEB F0 98      BEQ $98    [$8D85]

Start button pressed $00/8DED 9C 61 1B   STZ $1B61  [$00:1B61]   //related to collision? $00/8DF0 60         RTS                     //exit

sub for weapons $00/8DF1 AD 6F 1B   LDA $1B6F  [$00:1B6F] $00/8DF4 1A         INC A $00/8DF5 C9 05 00    CMP #$0005 $00/8DF8 90 03      BCC $03    [$8DFD] $00/8DFA A9 00 00   LDA #$0000 $00/8DFD 8D 6F 1B   STA $1B6F  [$00:1B6F] $00/8E00 A8         TAY $00/8E01 60         RTS

Name entry check
rep	#$20           ; $28FD2 lda	$7F0302,x      ; $28FD4 | $7F0302 - first two initials cmp	#$4040         ; $28FD8 - "  " beq	loc_28FE7      ; $28FDB - yes, see if we need to replace cmp	#$4141         ; $28FDD - "AA" beq	loc_28FE7      ; $28FE0 - yes, see if we need to replace cmp	#$4553         ; $28FE2 - "ES" (little-endian) bne	loc_29010      ; $28FE5 - no, do not replace loc_28FE7: lda	$7F0304,x      ; $28FE7 | $7F0304 - last initial cmp	#$0040         ; $28FEB - " " beq	loc_28FFA      ; $28FEE - yes, replace cmp	#$0041         ; $28FF0 - "A" beq	loc_28FFA      ; $28FF3 - yes, replace cmp	#$0058         ; $28FF5 - "X" bne	loc_29010      ; $28FF8 - no, do not replace loc_28FFA: sep	#$20           ; $28FFA - switch to byte reads/writes lda	#$45           ; $28FFC - "E" sta	$7F0302,x      ; $28FFE |  $7F0302 lda	#$4D           ; $29002 - "M" sta	$7F0303,x      ; $29004 |  $7F0303 lda	#$49           ; $29008 - "I" sta	$7F0304,x      ; $2900A |  $7F0304 rep	#$20           ; $2900E - switch to word reads/writes loc_29010:
 * format:                        ROM addr | logical addr of memory access