Difference between revisions of "Ramza Causes Game Over"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
 
(3 intermediate revisions by the same user not shown)
Line 8: Line 8:
 
  00180b44: afb00010 sw r16,0x0010(r29)
 
  00180b44: afb00010 sw r16,0x0010(r29)
 
  00180b48: 0806031d j 0x00180c74
 
  00180b48: 0806031d j 0x00180c74
  00180b4c: 2402ffff addiu r2,r0,0xffff
+
  00180b4c: 2402ffff addiu r2,r0,0xffff return 0xffff if Sprite set => 0x80
 
  00180b50: 0806031d j 0x00180c74
 
  00180b50: 0806031d j 0x00180c74
  00180b54: 2402fffe addiu r2,r0,0xfffe
+
  00180b54: 2402fffe addiu r2,r0,0xfffe return 0xfffe if 0x183 flags = 0 (unit doesn't exist?)
 
  00180b58: 00008021 addu r16,r0,r0
 
  00180b58: 00008021 addu r16,r0,r0
 
  00180b5c: 340600ff ori r6,r0,0x00ff R6 = FF
 
  00180b5c: 340600ff ori r6,r0,0x00ff R6 = FF
Line 16: Line 16:
 
  00180b64: 3c038019 lui r3,0x8019
 
  00180b64: 3c038019 lui r3,0x8019
 
  00180b68: 246308cc addiu r3,r3,0x08cc Load Unit Data
 
  00180b68: 246308cc addiu r3,r3,0x08cc Load Unit Data
 +
 +
Check if sprite set = Ramza
 
  00180b6c: 90620001 lbu r2,0x0001(r3) Unit ID
 
  00180b6c: 90620001 lbu r2,0x0001(r3) Unit ID
 
  00180b70: 00000000 nop
 
  00180b70: 00000000 nop
Line 33: Line 35:
 
  00180ba8: 30630001 andi r3,r3,0x0001
 
  00180ba8: 30630001 andi r3,r3,0x0001
 
  00180bac: 10600031 beq r3,r0,0x00180c74 Branch to end if not in Treasure  Status
 
  00180bac: 10600031 beq r3,r0,0x00180c74 Branch to end if not in Treasure  Status
  00180bb0: 02001021 addu r2,r16,r0
+
  00180bb0: 02001021 addu r2,r16,r0 return 0
 
  00180bb4: 0806031d j 0x00180c74
 
  00180bb4: 0806031d j 0x00180c74
  00180bb8: 2402fffd addiu r2,r0,0xfffd
+
  00180bb8: 2402fffd addiu r2,r0,0xfffd return 0xfffd if ramza is crystal or treasure
 
  00180bbc: 26100001 addiu r16,r16,0x0001
 
  00180bbc: 26100001 addiu r16,r16,0x0001
 
  00180bc0: 2a020015 slti r2,r16,0x0015
 
  00180bc0: 2a020015 slti r2,r16,0x0015
 
  00180bc4: 1440ffe9 bne r2,r0,0x00180b6c
 
  00180bc4: 1440ffe9 bne r2,r0,0x00180b6c
  00180bc8: 246301c0 addiu r3,r3,0x01c0
+
  00180bc8: 246301c0 addiu r3,r3,0x01c0
 +
 
  00180bcc: 00008021 addu r16,r0,r0
 
  00180bcc: 00008021 addu r16,r0,r0
 
  00180bd0: 340800ff ori r8,r0,0x00ff R8 = FF
 
  00180bd0: 340800ff ori r8,r0,0x00ff R8 = FF
Line 46: Line 49:
 
  00180bdc: 3c038019 lui r3,0x8019
 
  00180bdc: 3c038019 lui r3,0x8019
 
  00180be0: 246308cc addiu r3,r3,0x08cc Load Unit Data
 
  00180be0: 246308cc addiu r3,r3,0x08cc Load Unit Data
 +
 +
 
  00180be4: 90650001 lbu r5,0x0001(r3) Load Unit ID
 
  00180be4: 90650001 lbu r5,0x0001(r3) Load Unit ID
 
  00180be8: 00000000 nop
 
  00180be8: 00000000 nop
  00180bec: 14a8000d bne r5,r8,0x00180c24
+
  00180bec: 14a8000d bne r5,r8,0x00180c24       branch if unit does exist
 
  00180bf0: 26100001 addiu r16,r16,0x0001
 
  00180bf0: 26100001 addiu r16,r16,0x0001
 
  00180bf4: 90620000 lbu r2,0x0000(r3) Load Sprite Set
 
  00180bf4: 90620000 lbu r2,0x0000(r3) Load Sprite Set
 
  00180bf8: 00000000 nop
 
  00180bf8: 00000000 nop
  00180bfc: 1446000a bne r2,r6,0x00180c28
+
  00180bfc: 1446000a bne r2,r6,0x00180c28       branch if sprite set != Ramza
 
  00180c00: 2a020015 slti r2,r16,0x0015
 
  00180c00: 2a020015 slti r2,r16,0x0015
 
  00180c04: 90620183 lbu r2,0x0183(r3)
 
  00180c04: 90620183 lbu r2,0x0183(r3)
 
  00180c08: 00000000 nop
 
  00180c08: 00000000 nop
  00180c0c: 10450005 beq r2,r5,0x00180c24
+
  00180c0c: 10450005 beq r2,r5,0x00180c24       branch if unit ID = 0x183 flags
 
  00180c10: 00000000 nop
 
  00180c10: 00000000 nop
  00180c14: 1040ffce beq r2,r0,0x00180b50
+
  00180c14: 1040ffce beq r2,r0,0x00180b50       branch if 0x183 flags = 0 (unit doesn't exist?)
 
  00180c18: 00000000 nop
 
  00180c18: 00000000 nop
  00180c1c: 10470015 beq r2,r7,0x00180c74
+
  00180c1c: 10470015 beq r2,r7,0x00180c74       branch if 0x183 flags = 80 (was active, now disabled?)
  00180c20: 2402fffd addiu r2,r0,0xfffd
+
  00180c20: 2402fffd addiu r2,r0,0xfffd return 0xfffd
 
  00180c24: 2a020015 slti r2,r16,0x0015
 
  00180c24: 2a020015 slti r2,r16,0x0015
 
  00180c28: 1440ffee bne r2,r0,0x00180be4
 
  00180c28: 1440ffee bne r2,r0,0x00180be4
 
  00180c2c: 246301c0 addiu r3,r3,0x01c0
 
  00180c2c: 246301c0 addiu r3,r3,0x01c0
 +
 +
Check if ramza is in party
 
  00180c30: 00008021 addu r16,r0,r0
 
  00180c30: 00008021 addu r16,r0,r0
 
  00180c34: 341200ff ori r18,r0,0x00ff
 
  00180c34: 341200ff ori r18,r0,0x00ff
 
  00180c38: 309100ff andi r17,r4,0x00ff
 
  00180c38: 309100ff andi r17,r4,0x00ff
  00180c3c: 0c0166bc jal 0x00059af0
+
  00180c3c: 0c0166bc jal 0x00059af0 Get Party data pointer
 
  00180c40: 02002021 addu r4,r16,r0
 
  00180c40: 02002021 addu r4,r16,r0
 
  00180c44: 00401821 addu r3,r2,r0
 
  00180c44: 00401821 addu r3,r2,r0
 
  00180c48: 90620001 lbu r2,0x0001(r3) Load Unit ID
 
  00180c48: 90620001 lbu r2,0x0001(r3) Load Unit ID
 
  00180c4c: 00000000 nop
 
  00180c4c: 00000000 nop
  00180c50: 10520005 beq r2,r18,0x00180c68
+
  00180c50: 10520005 beq r2,r18,0x00180c68 branch if party unit ID = 0xff
 
  00180c54: 26100001 addiu r16,r16,0x0001
 
  00180c54: 26100001 addiu r16,r16,0x0001
 
  00180c58: 90620000 lbu r2,0x0000(r3) Load Sprite Set
 
  00180c58: 90620000 lbu r2,0x0000(r3) Load Sprite Set
 
  00180c5c: 00000000 nop
 
  00180c5c: 00000000 nop
  00180c60: 10510004 beq r2,r17,0x00180c74
+
  00180c60: 10510004 beq r2,r17,0x00180c74 branch if sprite set = Ramza
  00180c64: 2402fffc addiu r2,r0,0xfffc
+
  00180c64: 2402fffc addiu r2,r0,0xfffc return 0xfffc if ramza found in party
 
  00180c68: 2a020014 slti r2,r16,0x0014
 
  00180c68: 2a020014 slti r2,r16,0x0014
 
  00180c6c: 1440fff3 bne r2,r0,0x00180c3c
 
  00180c6c: 1440fff3 bne r2,r0,0x00180c3c
  00180c70: 2402fffb addiu r2,r0,0xfffb
+
  00180c70: 2402fffb addiu r2,r0,0xfffb return 0xfffb if ramza not found in party
 +
 
 
  00180c74: 8fbf001c lw r31,0x001c(r29)
 
  00180c74: 8fbf001c lw r31,0x001c(r29)
 
  00180c78: 8fb20018 lw r18,0x0018(r29)
 
  00180c78: 8fb20018 lw r18,0x0018(r29)

Latest revision as of 15:20, 30 July 2012

Ramza Causes Game Over?
00180b2c: 27bdffe0 addiu r29,r29,0xffe0		
00180b30: 2c820080 sltiu r2,r4,0x0080		
00180b34: afbf001c sw r31,0x001c(r29)		
00180b38: afb20018 sw r18,0x0018(r29)		
00180b3c: afb10014 sw r17,0x0014(r29)		
00180b40: 14400005 bne r2,r0,0x00180b58		
00180b44: afb00010 sw r16,0x0010(r29)		
00180b48: 0806031d j 0x00180c74			
00180b4c: 2402ffff addiu r2,r0,0xffff		return 0xffff if Sprite set => 0x80
00180b50: 0806031d j 0x00180c74			
00180b54: 2402fffe addiu r2,r0,0xfffe		return 0xfffe if 0x183 flags = 0 (unit doesn't exist?)
00180b58: 00008021 addu r16,r0,r0		
00180b5c: 340600ff ori r6,r0,0x00ff		R6 = FF
00180b60: 308500ff andi r5,r4,0x00ff		
00180b64: 3c038019 lui r3,0x8019		
00180b68: 246308cc addiu r3,r3,0x08cc		Load Unit Data
Check if sprite set = Ramza
00180b6c: 90620001 lbu r2,0x0001(r3)		Unit ID
00180b70: 00000000 nop				
00180b74: 10460011 beq r2,r6,0x00180bbc		Branch if unit ID is FF (doesn't  exist)? 
00180b78: 00000000 nop				
00180b7c: 90620000 lbu r2,0x0000(r3)		Load Sprite Set
00180b80: 00000000 nop			 	
00180b84: 1445000d bne r2,r5,0x00180bbc		Branch if Sprite set isn't Ramza  (01 - 03)? 
00180b88: 00000000 nop				
00180b8c: 90620058 lbu r2,0x0058(r3)		Load 1st Set of Current Status
00180b90: 00000000 nop				
00180b94: 30420040 andi r2,r2,0x0040		
00180b98: 14400006 bne r2,r0,0x00180bb4		Branch if in Crystal Status
00180b9c: 00000000 nop				
00180ba0: 90630059 lbu r3,0x0059(r3)		Load 2nd Set of Current Status
00180ba4: 00000000 nop				
00180ba8: 30630001 andi r3,r3,0x0001	 	
00180bac: 10600031 beq r3,r0,0x00180c74		Branch to end if not in Treasure  Status
00180bb0: 02001021 addu r2,r16,r0		return 0
00180bb4: 0806031d j 0x00180c74			
00180bb8: 2402fffd addiu r2,r0,0xfffd		 return 0xfffd if ramza is crystal or treasure
00180bbc: 26100001 addiu r16,r16,0x0001		
00180bc0: 2a020015 slti r2,r16,0x0015		
00180bc4: 1440ffe9 bne r2,r0,0x00180b6c		
00180bc8: 246301c0 addiu r3,r3,0x01c0	
00180bcc: 00008021 addu r16,r0,r0		
00180bd0: 340800ff ori r8,r0,0x00ff		R8 = FF
00180bd4: 308600ff andi r6,r4,0x00ff		
00180bd8: 34070080 ori r7,r0,0x0080		
00180bdc: 3c038019 lui r3,0x8019		
00180be0: 246308cc addiu r3,r3,0x08cc		Load Unit Data


00180be4: 90650001 lbu r5,0x0001(r3)		Load Unit ID
00180be8: 00000000 nop				
00180bec: 14a8000d bne r5,r8,0x00180c24	       branch if unit does exist
00180bf0: 26100001 addiu r16,r16,0x0001		
00180bf4: 90620000 lbu r2,0x0000(r3)		Load Sprite Set
00180bf8: 00000000 nop				
00180bfc: 1446000a bne r2,r6,0x00180c28	       branch if sprite set != Ramza
00180c00: 2a020015 slti r2,r16,0x0015		
00180c04: 90620183 lbu r2,0x0183(r3)		
00180c08: 00000000 nop				
00180c0c: 10450005 beq r2,r5,0x00180c24	       branch if unit ID = 0x183 flags	
00180c10: 00000000 nop				
00180c14: 1040ffce beq r2,r0,0x00180b50	       branch if 0x183 flags = 0 (unit doesn't exist?)
00180c18: 00000000 nop				
00180c1c: 10470015 beq r2,r7,0x00180c74	       branch if 0x183 flags = 80 (was active, now disabled?)	
00180c20: 2402fffd addiu r2,r0,0xfffd		return 0xfffd
00180c24: 2a020015 slti r2,r16,0x0015		
00180c28: 1440ffee bne r2,r0,0x00180be4		
00180c2c: 246301c0 addiu r3,r3,0x01c0		
Check if ramza is in party
00180c30: 00008021 addu r16,r0,r0		
00180c34: 341200ff ori r18,r0,0x00ff		
00180c38: 309100ff andi r17,r4,0x00ff		
00180c3c: 0c0166bc jal 0x00059af0		Get Party data pointer
00180c40: 02002021 addu r4,r16,r0		
00180c44: 00401821 addu r3,r2,r0		
00180c48: 90620001 lbu r2,0x0001(r3)		Load Unit ID
00180c4c: 00000000 nop				
00180c50: 10520005 beq r2,r18,0x00180c68	branch if party unit ID = 0xff
00180c54: 26100001 addiu r16,r16,0x0001		
00180c58: 90620000 lbu r2,0x0000(r3)		Load Sprite Set
00180c5c: 00000000 nop				
00180c60: 10510004 beq r2,r17,0x00180c74	branch if sprite set = Ramza
00180c64: 2402fffc addiu r2,r0,0xfffc		return 0xfffc if ramza found in party
00180c68: 2a020014 slti r2,r16,0x0014		
00180c6c: 1440fff3 bne r2,r0,0x00180c3c		
00180c70: 2402fffb addiu r2,r0,0xfffb		return 0xfffb if ramza not found in party
00180c74: 8fbf001c lw r31,0x001c(r29)		
00180c78: 8fb20018 lw r18,0x0018(r29)		
00180c7c: 8fb10014 lw r17,0x0014(r29)		
00180c80: 8fb00010 lw r16,0x0010(r29)		
00180c84: 27bd0020 addiu r29,r29,0x0020		
00180c88: 03e00008 jr r31			
00180c8c: 00000000 nop


Return Locations

00133180: - Routine at 133158
00141c28: - Routine at 141b0c
0014253c: - Routine at 142508