@0804FF7E Metroid Zero Mission: damage mov r1,r8 Make r1 r8 ldrb r0,[r1,0Fh] Load projectile type to r0 cmp r0,0Eh If it is not a powerbomb bls 804FF88h Go to BRANCH ALPHA b 805032Ch Go to BRANCH DELTA BRANCH ALPHA lsl r0,r0,2h Shift r0 left by 2 ldr r1,=804FFA4h add r0,r0,r1 Add r1 to r0 ldr r0,[r0] Load r0 to r0 mov r15,r0 Make program counter r0 __________________________________________ |Projectile type ROM pointer| |0 short beam 0804FFE0 | BRANCH SHORT |1 long beam 0804FFF2 | BRANCH LONG |2 ice beam 08050004 | BRANCH ICE |3 wave beam 08050034 | BRANCH WAVE |4 plasma beam 08050098 | BRANCH PLASMA |5 pistol 08050140 | BRANCH PISTOL |6 charged beam 08050152 | BRANCH CHARGE SHORT |7 charged long beam 0805016A | BRANCH CHARGE LONG |8 charged ice beam 0805017C | BRANCH CHARGE ICE |9 charged wave beam 080501AC | BRANCH CHARGE WAVE |A charged plasma beam 08050216 | BRANCH CHARGE PLASMA |B charged pistol 080502BE | BRANCH CHARGE PISTOL |C missile 08050306 | BRANCH MISSILE |D super missile 08050314 | BRANCH SUPER MISSILE |E bomb 08050322 | BRANCH BOMB ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ BRANCH SHORT mov r0,2Ah Make r0 42 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,2h Make r3 2 bl 80505ACh Go to 80505AC subroutine b 8050162h Go to BRANCH CHARGE SHORT ALPHA BRANCH LONG mov r0,2Bh Make r0 43 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,3h Make r3 3 bl 80505ACh Go to 80505AC subroutine b 805020Eh Go to BRANCH BETA BRANCH ICE mov r0,r9 Make r0 r9 ldrb r1,[r0,0Dh] Load beam+bomb activation status to r1 mov r0,1h Make r0 1 and r0,r1 AND r1 to r0 cmp r0,0h If it is not long beam beq 8050022h Go to BRANCH ICE ALPHA mov r0,2Ch Make r0 44 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,4h Make r3 4 bl 8050724h Go to 8050724 subroutine b 80502FEh Go to BRANCH GAMMA BRANCH ICE ALPHA mov r0,2Ch Make r0 44 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,3h Make r3 3 bl 8050724h Go to 8050724 subroutine b 80502FEh Go to BRANCH GAMMA BRANCH WAVE mov r2,r9 Make r2 r9 ldrb r1,[r0,0Dh] Load beam+bomb activation status to r1 mov r0,1h Make r0 1 and r0,r1 AND r1 to r0 cmp r0,0h If it is not long beam beq 805006Ch Go to BRANCH WAVE BETA mov r0,2h Make r0 2 and r0,r1 AND r1 to r0 cmp r0,0h If it is not ice beam beq 805005Ah Go to BRANCH WAVE ALPHA mov r0,32h Make r0 50 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,5h Make r3 5 bl 8050724h Go to 8050724 subroutine b 805020Eh Go to BRANCH BETA BRANCH WAVE ALPHA mov r0,2Dh Make r0 45 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,4h Make r3 4 bl 80505ACh Go to 80505AC subroutine b 805020Eh Go to BRANCH BETA BRANCH WAVE BETA mov r0,2h Make r0 2 and r0,r1 AND r1 to r0 cmp r0,0h If it is not ice beam beq 8050086h Go to BRANCH WAVE GAMMA mov r0,32h Make r0 50 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,4h Make r3 4 bl 8050724h Go to 8050724 subroutine b 805020Eh Go to BRANCH BETA BRANCH WAVE GAMMA mov r0,2Dh Make r0 45 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,3h Make r3 3 bl 80505ACh Go to 80505AC subroutine b 805020Eh Go to BRANCH BETA BRANCH PLASMA mov r0,r9 Make r0 r9 ldrb r1,[r0,0Dh] Load beam+bomb activation status to r1 mov r0,1h Make r0 1 and r0,r1 AND r1 to r0 cmp r0,0h If it is not long beam beq 80500E0h Go to BRANCH PLASMA BETA mov r0,2h Make r0 2 and r0,r1 AND r1 to r0 cmp r0,0h If it is not ice beam beq 80500C6h Go to BRANCH PLASMA ALPHA mov r0,4h Make r0 4 and r0,r1 AND r1 to r0 cmp r0,0h If it is not wave beam beq 80500F0h Go to BRANCH PLASMA GAMMA mov r0,33h Make r0 51 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,6h Make r3 6 bl 8050724h Go to 8050724 subroutine b 805032Ch Go to BRANCH DELTA BRANCH PLASMA ALPHA mov r0,4h Make r0 4 and r0,r1 AND r1 to r0 cmp r0,0h If it is not wave beam beq 805011Ch Go to BRANCH PLASMA ZETA mov r0,2Eh Make r0 46 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,5h Make r3 5 bl 80505ACh Go to 80505AC subroutine b 805032Ch Go to BRANCH DELTA BRANCH PLASMA BETA mov r0,2h Make r0 2 and r0,r1 AND r1 to r0 cmp r0,0h If it is not ice beam beq 8050114h Go to BRANCH PLASMA EPSILON mov r0,4h Make r0 4 and r0,r1 AND r1 to r0 cmp r0,0h If it is not wave beam beq 8050102h Go to BRANCH PLASMA DELTA BRANCH PLASMA GAMMA mov r0,33h Make r0 51 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,5h Make r3 5 bl 8050724h Go to 8050724 subroutine b 805032Ch Go to BRANCH DELTA BRANCH PLASMA DELTA mov r0,33h Make r0 51 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,4h Make r3 4 bl 8050724h Go to 8050724 subroutine b 805032Ch Go to BRANCH DELTA BRANCH PLASMA EPSILON mov r0,4h Make r0 4 and r0,r1 AND r1 to r0 cmp r0,0h If it is not wave beam beq 805012Eh Go to BRANCH PLASMA ETA BRANCH PLASMA ZETA mov r0,2Eh Make r0 46 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,4h Make r3 4 bl 80505ACh Go to 80505AC subroutine b 805032Ch Go to BRANCH DELTA BRANCH PLASMA ETA mov r0,2Eh Make r0 46 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,3h Make r3 3 bl 80505ACh Go to 80505AC subroutine b 805032Ch Go to BRANCH DELTA BRANCH PISTOL mov r0,r6 Make r0 r6 bl 80504ACh Go to 80504ACh subroutine mov r0,r4 Make r0 r4 mov r1,r5 Make r1 r5 mov r2,2Fh Make r2 47 bl 80540ECh Go to 80540ECh subroutine b 80502FEh Go to BRANCH GAMMA BRANCH CHARGE SHORT mov r0,2Ah Make r0 42 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,8h Make r3 8 bl 8050654h Go to 805654h subroutine BRANCH CHARGE SHORT ALPHA mov r0,0h Make r0 0 mov r2,r8 Make r2 r8 strb r0,[r2] Store r0 to 3000A30 BRANCH CHARGE LONG mov r0,2Bh Make r0 43 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,0Ch Make r3 12 bl 8050654h Go to 805654h subroutine b 805020Eh Go to BRANCH BETA BRANCH CHARGE ICE mov r0,r9 Make r0 r9 ldrb r1,[r0,0Dh] Load beam+bomb activation status to r1 mov r0,1h Make r0 1 and r0,r1 AND r1 to r0 cmp r0,0h If it is not long beam beq 805019Ah Go to BRANCH CHARGE ICE ALPHA mov r0,2Ch Make r0 44 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,10h Make r3 16 bl 8050828h Go to 8050828 subroutine b 80502FEh Go to BRANCH GAMMA BRANCH CHARGE ICE ALPHA mov r0,2Ch Make r0 44 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,0Ch Make r3 12 bl 8050828h Go to 8050828 subroutine b 80502FEh Go to BRANCH GAMMA BRANCH CHARGE WAVE mov r2,r9 Make r2 r9 ldrb r1,[r0,0Dh] Load beam+bomb activation status to r1 mov r0,1h Make r0 1 and r0,r1 AND r1 to r0 cmp r0,0h If it is not long beam beq 80501E4h Go to BRANCH CHARGE WAVE BETA mov r0,2h Make r0 2 and r0,r1 AND r1 to r0 cmp r0,0h If it is not ice beam beq 80501D2h Go to BRANCH CHARGE WAVE ALPHA mov r0,32h Make r0 50 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,14h Make r3 20 bl 8050828h Go to 805828h subroutine b 805020Eh Go to BRANCH BETA BRANCH CHARGE WAVE ALPHA mov r0,2Dh Make r0 45 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,10h Make r3 16 bl 8050654h Go to 805654h subroutine b 805020Eh Go to BRANCH BETA BRANCH CHARGE WAVE BETA mov r0,2h Make r0 2 and r0,r1 AND r1 to r0 cmp r0,0h If it is not ice beam beq 80501FEh Go to BRANCH CHARGE WAVE GAMMA mov r0,32h Make r0 50 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,10h Make r3 16 bl 8050828h Go to 805828h subroutine b 805020Eh Go to BRANCH BETA BRANCH CHARGE WAVE GAMMA mov r0,2Dh Make r0 45 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,0Ch Make r3 12 bl 8050654h Go to 805654h subroutine BRANCH BETA mov r0,0h Make r0 0 mov r3,r8 Make r3 r8 strb r0,[r3] Store r0 to 3000A30 b 805032Ch Go to BRANCH DELTA BRANCH CHARGE PLASMA mov r0,r9 Make r0 r9 ldrb r1,[r0,0Dh] Load beam+bomb activation status to r1 mov r0,1h Make r0 1 and r0,r1 AND r1 to r0 cmp r0,0h If it is not long beam beq 805025Eh Go to BRANCH CHARGE PLASMA BETA mov r0,2h Make r0 2 and r0,r1 AND r1 to r0 cmp r0,0h If it is not ice beam beq 8050244h Go to BRANCH CHARGE PLASMA ALPHA mov r0,4h Make r0 4 and r0,r1 AND r1 to r0 cmp r0,0h If it is not wave beam beq 805026Eh Go to BRANCH CHARGE PLASMA GAMMA mov r0,33h Make r0 51 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,18h Make r3 24 bl 8050828h Go to 805828h subroutine b 805032Ch Go to BRANCH DELTA BRANCH CHARGE PLASMA ALPHA mov r0,4h Make r0 4 and r0,r1 AND r1 to r0 cmp r0,0h If it is not wave beam beq 805029Ah Go to BRANCH CHARGE PLASMA ZETA mov r0,2Eh Make r0 46 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,14h Make r3 20 bl 8050654h Go to 805654h subroutine b 805032Ch Go to BRANCH DELTA BRANCH CHARGE PLASMA BETA mov r0,2h Make r0 2 and r0,r1 AND r1 to r0 cmp r0,0h If it is not ice beam beq 8050292h Go to BRANCH CHARGE PLASMA EPSILON mov r0,4h Make r0 4 and r0,r1 AND r1 to r0 cmp r0,0h If it is not wave beam beq 8050280h Go to BRANCH CHARGE PLASMA DELTA BRANCH CHARGE PLASMA GAMMA mov r0,33h Make r0 51 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,14h Make r3 20 bl 8050828h Go to 805828h subroutine b 805032Ch Go to BRANCH DELTA BRANCH CHARGE PLASMA DELTA mov r0,33h Make r0 51 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,10h Make r3 16 bl 8050828h Go to 805828h subroutine b 805032Ch Go to BRANCH DELTA BRANCH CHARGE PLASMA EPSILON mov r0,4h Make r0 4 and r0,r1 AND r1 to r0 cmp r0,0h If it is not wave beam beq 80502ACh Go to BRANCH CHARGE PLASMA ETA BRANCH CHARGE PLASMA ZETA mov r0,2Eh Make r0 46 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,10h Make r3 16 bl 8050654h Go to 805654h subroutine b 805032Ch Go to BRANCH DELTA BRANCH CHARGE PLASMA ETA mov r0,2Eh Make r0 46 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,0Ch Make r3 12 bl 8050654h Go to 805654h subroutine b 805032Ch Go to BRANCH DELTA BRANCH CHARGE PISTOL mov r0,r6 Make r0 r6 add r0,25h Add 37 to r0 ldrb r0,[r0] Load 3000241 to r0 cmp r0,14h If it is not 20 bne 80502EEh Go to BRANCH CHARGE PISTOL ALPHA mov r1,r6 Make r1 r6 add r1,31h Add 49 to r1 mov r0,0h Make r0 0 strb r0,[r1] Store r0 to 300024D sub r1,1h Subtract 1 from r1 mov r0,3Ch Make r0 50 strb r0,[r1] Store t0 to 300024C mov r0,r6 Make r0 r6 add r0,20h Add 32 to r0 mov r1,1h Make r1 1 strb r1,[r0] Store r1 to 300023C add r0,14h Add 20 to r0 strb r1,[r0] Store r1 to 3000250 mov r0,r4 Make r0 r4 mov r1,r5 Make r1 r5 mov r2,2Bh Make r2 43 bl 80540ECh Go to 80540EC subroutine b 80502FEh Go to BRANCH GAMMA BRANCH CHARGE PISTOL ALPHA mov r0,2Bh Make r0 43 str r0,[sp] Store r0 to the stack mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 mov r3,0Ch Make r3 12 bl 8050654h Go to 805654h subroutine BRANCH GAMMA mov r0,0h Make r0 0 mov r1,r8 Make r1 r8 strb r0,[r1] Store r0 to 3000A2C b 805032Ch Go to BRANCH DELTA BRANCH MISSILE mov r0,r6 Make r0 r6 mov r1,r8 Make r1 r8 mov r2,r4 Make r2 r4 mov r3,r5 Make r3 r5 bl 80509DCh Go to 80509DC subroutine b 805032Ch Go to BRANCH DELTA BRANCH SUPER MISSILE mov r0,r6 Make r0 r6 mov r1,r8 Make r1 r8 mov r2,r4 Make r2 r4 mov r3,r5 Make r3 r5 bl 8050A7Ch Go to 8050A7C subroutine b 805032Ch Go to BRANCH DELTA BRANCH BOMB mov r0,r6 Make r0 r6 mov r1,r4 Make r1 r4 mov r2,r5 Make r2 r5 bl 8050B18h Go to 8050B18 subroutine BRANCH DELTA mov r2,1Ch Make r2 28 add r8,r2 Add r2 to r8 ldr r0,=3000BECh cmp r8,r0 If r8 is greater than r0 bcs 8050338h Go to BRANCH EPSILON b 804FF30h Go to 804FF30 BRANCH EPSILON ldr r3,[sp,24h] Load stack slot 9 to r3 lsl r0,r3,18h Shift r3 left by 24 to r0 lsr r2,r0,18h Shift r0 right by 18 to r2 ldr r6,[sp,2Ch] Load stack slot 11 to r6 ldr r0,=30006ECh cmp r6,r0 If r6 is greater than r0 bcs 8050348h Go to BRANCH ZETA b 804FED8h Go to 804FED8 BRANCH ZETA ldr r1,[sp,28h] Load stack slot 10 to r1 lsl r0,r1,18h Shift r1 left by 24 to r0 lsr r0,r0,18h Shift r0 right by 24 str r0,[sp,10h] Store r0 to stack slot 4 cmp r0,10h If r0 is higher than 16 bhi 8050356h Go to BRANCH ETA b 804FEC2h Go to 804FEC2 BRANCH ETA add sp,30h Add 48 to the stack pointer pop r3-r5 Pop to r3,r4 and r5 mov r8,r3 Make r8 r3 mov r9,r4 Make r9 r4 mov r10,r5 Make r10 r5 pop r4-r7 Pop to r4,r5,r6 and r7 pop r0 Pop to r0 bx r0 Branch to r0