Difference between revisions of "Decide what to do based on skillset/ability selections?"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m
 
Line 94: Line 94:
 
  000750c8: 92020005 lbu r2,0x0005(r16) load skillset used
 
  000750c8: 92020005 lbu r2,0x0005(r16) load skillset used
 
  000750cc: 00000000 nop
 
  000750cc: 00000000 nop
  000750d0: 2443ffff addiu r3,r2,0xffff
+
  000750d0: 2443ffff addiu r3,r2,0xffff r3 = skillset id - 1
  000750d4: 2c620018 sltiu r2,r3,0x0018
+
  000750d4: 2c620018 sltiu r2,r3,0x0018 r2 = skillset id < 25
  000750d8: 1040003f beq r2,r0,0x000751d8
+
  000750d8: 1040003f beq r2,r0,0x000751d8 if id > 25, treat as a "normal" action skillset (goto 751d8)
  000750dc: 00031080 sll r2,r3,0x02
+
  000750dc: 00031080 sll r2,r3,0x02 r2 = (skillset id - 1) * 4
 
  000750e0: 3c018006 lui r1,0x8006
 
  000750e0: 3c018006 lui r1,0x8006
  000750e4: 00220821 addu r1,r1,r2
+
  000750e4: 00220821 addu r1,r1,r2 r1 = lookup address, including skillset id offset
  000750e8: 8c227590 lw r2,0x7590(r1)
+
  000750e8: 8c227590 lw r2,0x7590(r1) load the data table value at that address
  000750ec: 00000000 nop
+
  000750ec: 00000000 nop (see reference below, starting at 0x00067590)
  000750f0: 00400008 jr r2
+
  000750f0: 00400008 jr r2 jump to the right place, based on skillset id
 
  000750f4: 00000000 nop
 
  000750f4: 00000000 nop
  00067590: 800751d8 lb r7,0x51d8(r0) attack
+
  00067590: 800751d8 attack
  00067594: 800750f8 lb r7,0x50f8(r0) defend
+
  00067594: 800750f8 defend
  00067598: 80075150 lb r7,0x5150(r0) eq. change
+
  00067598: 80075150 eq. change
  0006759c: 800751c8 lb r7,0x51c8(r0) blank
+
  0006759c: 800751c8 blank
  000675a0: 800751d8 lb r7,0x51d8(r0)
+
  000675a0: 800751d8
  000675a4: 800751d8 lb r7,0x51d8(r0)
+
  000675a4: 800751d8
  000675a8: 800751d8 lb r7,0x51d8(r0)
+
  000675a8: 800751d8
  000675ac: 800751d8 lb r7,0x51d8(r0)
+
  000675ac: 800751d8
  000675b0: 800751d8 lb r7,0x51d8(r0)
+
  000675b0: 800751d8
  000675b4: 800751d8 lb r7,0x51d8(r0)
+
  000675b4: 800751d8
  000675b8: 800751d8 lb r7,0x51d8(r0)
+
  000675b8: 800751d8
  000675bc: 800751d8 lb r7,0x51d8(r0)
+
  000675bc: 800751d8
  000675c0: 800751d8 lb r7,0x51d8(r0)
+
  000675c0: 800751d8
  000675c4: 800751d8 lb r7,0x51d8(r0)
+
  000675c4: 800751d8
  000675c8: 800751d8 lb r7,0x51d8(r0)
+
  000675c8: 800751d8
  000675cc: 800751d8 lb r7,0x51d8(r0)
+
  000675cc: 800751d8
  000675d0: 800751d8 lb r7,0x51d8(r0)
+
  000675d0: 800751d8
  000675d4: 800751d8 lb r7,0x51d8(r0)
+
  000675d4: 800751d8
  000675d8: 800751d8 lb r7,0x51d8(r0)
+
  000675d8: 800751d8
  000675dc: 800751d8 lb r7,0x51d8(r0)
+
  000675dc: 800751d8
  000675e0: 800751d8 lb r7,0x51d8(r0)
+
  000675e0: 800751d8
  000675e4: 800751d8 lb r7,0x51d8(r0)
+
  000675e4: 800751d8
  000675e8: 800751d8 lb r7,0x51d8(r0)
+
  000675e8: 800751d8
  000675ec: 800751c8 lb r7,0x51c8(r0) dance?
+
  000675ec: 800751c8 dance
  000675f0: 80075558 lb r7,0x5558(r0) mimic
+
  000675f0: 80075558 mimic
 
  000750f8: 8e020000 lw r2,0x0000(r16)
 
  000750f8: 8e020000 lw r2,0x0000(r16)
 
  000750fc: 8e030004 lw r3,0x0004(r16)
 
  000750fc: 8e030004 lw r3,0x0004(r16)

Latest revision as of 22:21, 26 March 2024

00074f5c: 27bdffe0 addiu r29,r29,0xffe0
00074f60: afbf0018 sw r31,0x0018(r29)
00074f64: afb10014 sw r17,0x0014(r29)
00074f68: 0c04f55e jal 0x0013d578				make some determination, return value
00074f6c: afb00010 sw r16,0x0010(r29)
00074f70: 14400003 bne r2,r0,0x00074f80
00074f74: 00000000 nop
00074f78: 0c01c31e jal 0x00070c78
00074f7c: 00000000 nop
00074f80: 3c028004 lui r2,0x8004
00074f84: 8c42594c lw r2,0x594c(r2)				load ?? (input for this frame? 0x0100 is select button?)
00074f88: 00000000 nop
00074f8c: 30420100 andi r2,r2,0x0100
00074f90: 10400003 beq r2,r0,0x00074fa0			branch if select not pressed
00074f94: 00000000 nop
00074f98: 0c01c56a jal 0x000715a8				help message?
00074f9c: 00000000 nop
00074fa0: 0c01d2eb jal 0x00074bac				00074bac - 00074bf4 - Graphic loading master routine? (contains lots of different graphic loading things.)
00074fa4: 00000000 nop
00074fa8: 0c011298 jal 0x00044a60
00074fac: 00000000 nop
00074fb0: 3c058004 lui r5,0x8004
00074fb4: 8ca55944 lw r5,0x5944(r5)
00074fb8: 0c04fd48 jal 0x0013f520				data setting from menu selections
00074fbc: 00402021 addu r4,r2,r0
00074fc0: 0c04fe5e jal 0x0013f978			get 169828 data?
00074fc4: 00000000 nop
00074fc8: 0c01e875 jal 0x0007a1d4			get casting units misc data
00074fcc: 00408021 addu r16,r2,r0
00074fd0: 00408821 addu r17,r2,r0
00074fd4: 8e030000 lw r3,0x0000(r16)		load 169828
00074fd8: 3402000e ori r2,r0,0x000e
00074fdc: 106200b0 beq r3,r2,0x000752a0		branch if executing attack (0x0e)
00074fe0: 2862000f slti r2,r3,0x000f
00074fe4: 10400014 beq r2,r0,0x00075038
00074fe8: 34020002 ori r2,r0,0x0002
00074fec: 106200a8 beq r3,r2,0x00075290
00074ff0: 28620003 slti r2,r3,0x0003
00074ff4: 10400007 beq r2,r0,0x00075014
00074ff8: 00000000 nop
00074ffc: 1060001c beq r3,r0,0x00075070
00075000: 34020001 ori r2,r0,0x0001
00075004: 1062002e beq r3,r2,0x000750c0
00075008: 00000000 nop
0007500c: 0801d4be j 0x000752f8
00075010: 00000000 nop
00075014: 3402000c ori r2,r0,0x000c
00075018: 106200a1 beq r3,r2,0x000752a0		
0007501c: 2862000d slti r2,r3,0x000d
00075020: 104000a4 beq r2,r0,0x000752b4
00075024: 34020007 ori r2,r0,0x0007
00075028: 106200ab beq r3,r2,0x000752d8
0007502c: 00000000 nop
00075030: 0801d4be j 0x000752f8
00075034: 00000000 nop
00075038: 34020012 ori r2,r0,0x0012
0007503c: 106200ac beq r3,r2,0x000752f0
00075040: 28620013 slti r2,r3,0x0013
00075044: 10400005 beq r2,r0,0x0007505c
00075048: 3402000f ori r2,r0,0x000f
0007504c: 10620099 beq r3,r2,0x000752b4
00075050: 00000000 nop
00075054: 0801d4b2 j 0x000752c8
00075058: 00000000 nop
0007505c: 34020019 ori r2,r0,0x0019
00075060: 1062000d beq r3,r2,0x00075098
00075064: 00000000 nop
00075068: 0801d4be j 0x000752f8				go to end
0007506c: 00000000 nop						r17 = misc data
00075070: 92220130 lbu r2,0x0130(r17)		load ??
00075074: 00000000 nop
00075078: 10400007 beq r2,r0,0x00075098		
0007507c: 00000000 nop
00075080: 92240131 lbu r4,0x0131(r17)		load some unit id?
00075084: 0c01e9b9 jal 0x0007a6e4
00075088: 00000000 nop
0007508c: 90420004 lbu r2,0x0004(r2)		load palette? if r2 is unit data
00075090: 0801d428 j 0x000750a0
00075094: 00000000 nop
00075098: 3c028009 lui r2,0x8009
0007509c: 8c426118 lw r2,0x6118(r2)			load casting units id
000750a0: 3c018009 lui r1,0x8009
000750a4: ac22611c sw r2,0x611c(r1)			casting units misc id
000750a8: 0c01a1e5 jal 0x00068794			clear at list ID
000750ac: 00000000 nop
000750b0: 0c01c5f3 jal 0x000717cc			??
000750b4: 00000000 nop
000750b8: 0801d4be j 0x000752f8				go to end
000750bc: 00000000 nop
000750c0: 0c01a1e5 jal 0x00068794			clear acting unit ID
000750c4: 00000000 nop
000750c8: 92020005 lbu r2,0x0005(r16)		load skillset used
000750cc: 00000000 nop
000750d0: 2443ffff addiu r3,r2,0xffff		r3 = skillset id - 1
000750d4: 2c620018 sltiu r2,r3,0x0018		r2 = skillset id < 25
000750d8: 1040003f beq r2,r0,0x000751d8		if id > 25, treat as a "normal" action skillset (goto 751d8)
000750dc: 00031080 sll r2,r3,0x02		r2 = (skillset id - 1) * 4
000750e0: 3c018006 lui r1,0x8006
000750e4: 00220821 addu r1,r1,r2		r1 = lookup address, including skillset id offset
000750e8: 8c227590 lw r2,0x7590(r1)		load the data table value at that address
000750ec: 00000000 nop				(see reference below, starting at 0x00067590)
000750f0: 00400008 jr r2			jump to the right place, based on skillset id
000750f4: 00000000 nop
			00067590: 800751d8			attack
			00067594: 800750f8			defend
			00067598: 80075150			eq. change
			0006759c: 800751c8			blank
			000675a0: 800751d8
			000675a4: 800751d8
			000675a8: 800751d8
			000675ac: 800751d8
			000675b0: 800751d8
			000675b4: 800751d8
			000675b8: 800751d8
			000675bc: 800751d8
			000675c0: 800751d8
			000675c4: 800751d8
			000675c8: 800751d8
			000675cc: 800751d8
			000675d0: 800751d8
			000675d4: 800751d8
			000675d8: 800751d8
			000675dc: 800751d8
			000675e0: 800751d8
			000675e4: 800751d8
			000675e8: 800751d8
			000675ec: 800751c8			dance
			000675f0: 80075558			mimic
000750f8: 8e020000 lw r2,0x0000(r16)
000750fc: 8e030004 lw r3,0x0004(r16)
00075100: 8e040008 lw r4,0x0008(r16)
00075104: 8e05000c lw r5,0x000c(r16)
00075108: ae220158 sw r2,0x0158(r17)		store ??
0007510c: ae23015c sw r3,0x015c(r17)		store target ID
00075110: ae240160 sw r4,0x0160(r17)
00075114: ae250164 sw r5,0x0164(r17)
00075118: 8e020010 lw r2,0x0010(r16)
0007511c: 8e030014 lw r3,0x0014(r16)
00075120: ae220168 sw r2,0x0168(r17)
00075124: ae23016c sw r3,0x016c(r17)
00075128: 8e220134 lw r2,0x0134(r17)		r2 = unit data
0007512c: 00000000 nop
00075130: 9044018a lbu r4,0x018a(r2)		load unit ID
00075134: 0c060f80 jal 0x00183e00			enable/disable acting status
00075138: 00000000 nop
0007513c: 9222013c lbu r2,0x013c(r17)		load ??
00075140: 92240004 lbu r4,0x0004(r17)		load unit id?
00075144: 34420002 ori r2,r2,0x0002
00075148: 0801d46b j 0x000751ac
0007514c: a222013c sb r2,0x013c(r17)		store 0x02 flag
00075150: 8e020000 lw r2,0x0000(r16)
00075154: 8e030004 lw r3,0x0004(r16)
00075158: 8e040008 lw r4,0x0008(r16)
0007515c: 8e05000c lw r5,0x000c(r16)
00075160: ae220158 sw r2,0x0158(r17)
00075164: ae23015c sw r3,0x015c(r17)
00075168: ae240160 sw r4,0x0160(r17)
0007516c: ae250164 sw r5,0x0164(r17)
00075170: 8e020010 lw r2,0x0010(r16)
00075174: 8e030014 lw r3,0x0014(r16)
00075178: ae220168 sw r2,0x0168(r17)
0007517c: ae23016c sw r3,0x016c(r17)
00075180: 9222013c lbu r2,0x013c(r17)
00075184: 8e240134 lw r4,0x0134(r17)
00075188: 34420002 ori r2,r2,0x0002
0007518c: 0c060f78 jal 0x00183de0			enable/disable acting status
00075190: a222013c sb r2,0x013c(r17)		atore 02 flag
00075194: 8e220134 lw r2,0x0134(r17)		load unit data
00075198: 00000000 nop
0007519c: 9044018a lbu r4,0x018a(r2)		load unit ID
000751a0: 0c0667b2 jal 0x00199ec8
000751a4: 00000000 nop
000751a8: 92240004 lbu r4,0x0004(r17)
defend, eq change
000751ac: 0c01a38c jal 0x00068e30
000751b0: 00000000 nop
000751b4: 8e220134 lw r2,0x0134(r17)		load unit data
000751b8: 00000000 nop
000751bc: 9044018a lbu r4,0x018a(r2)		load unit ID
000751c0: 0c060eea jal 0x00183ba8			set move/act for defend/eq change
000751c4: 00000000 nop
000751c8: 0c01c723 jal 0x00071c8c			
000751cc: 00000000 nop
000751d0: 0801d4be j 0x000752f8				jump to end
000751d4: 00000000 nop
All but defend, eq change, mimic, dance, blank
000751d8: 8e020000 lw r2,0x0000(r16)
000751dc: 8e030004 lw r3,0x0004(r16)
000751e0: 8e040008 lw r4,0x0008(r16)
000751e4: 8e05000c lw r5,0x000c(r16)
000751e8: ae220158 sw r2,0x0158(r17)		Store in misc data
000751ec: ae23015c sw r3,0x015c(r17)		
000751f0: ae240160 sw r4,0x0160(r17)
000751f4: ae250164 sw r5,0x0164(r17)
000751f8: 8e020010 lw r2,0x0010(r16)
000751fc: 8e030014 lw r3,0x0014(r16)
00075200: ae220168 sw r2,0x0168(r17)
00075204: ae23016c sw r3,0x016c(r17)
00075208: 2630015c addiu r16,r17,0x015c
0007520c: 8e220134 lw r2,0x0134(r17)		load unit data
00075210: 02002021 addu r4,r16,r0
00075214: 9043018a lbu r3,0x018a(r2)		load unit ID
00075218: 34020005 ori r2,r0,0x0005
0007521c: a2220166 sb r2,0x0166(r17)		store tile-specific ability
00075220: 0c05f0ee jal 0x0017c3b8			call attack preparation
00075224: a223015c sb r3,0x015c(r17)		store target ID
00075228: 9622015e lhu r2,0x015e(r17)		load ability ID
0007522c: 02002021 addu r4,r16,r0
00075230: 0c05ea30 jal 0x0017a8c0			calculate ability range
00075234: a6220138 sh r2,0x0138(r17)		store type of action?
00075238: 00401821 addu r3,r2,r0
0007523c: 34020002 ori r2,r0,0x0002
00075240: 1062000f beq r3,r2,0x00075280		branch if return value = 02
00075244: ae230174 sw r3,0x0174(r17)		store ??
00075248: 28620003 slti r2,r3,0x0003		
0007524c: 10400005 beq r2,r0,0x00075264		branch if return value >= 3
00075250: 00000000 nop
00075254: 0460000a bltz r3,0x00075280		branch if return value less than zero
00075258: 00000000 nop
0007525c: 0801d49c j 0x00075270
00075260: 00000000 nop
00075264: 34020003 ori r2,r0,0x0003
00075268: 14620005 bne r3,r2,0x00075280		branch if return value is not 03
0007526c: 00000000 nop
00075270: 0c01cad4 jal 0x00072b50			Go to range targeting
00075274: 00000000 nop
00075278: 0801d4be j 0x000752f8				go to end
0007527c: 00000000 nop
00075280: 0c01d0c2 jal 0x00074308
00075284: 00000000 nop
00075288: 0801d4be j 0x000752f8
0007528c: 00000000 nop
00075290: 0c01c951 jal 0x00072544
00075294: 00000000 nop
00075298: 0801d4be j 0x000752f8
0007529c: 00000000 nop
000752a0: 92020000 lbu r2,0x0000(r16)
000752a4: 0c01d1ee jal 0x000747b8
000752a8: a22201b6 sb r2,0x01b6(r17)
000752ac: 0801d4be j 0x000752f8
000752b0: 00000000 nop
000752b4: 92020000 lbu r2,0x0000(r16)
000752b8: 0c01d272 jal 0x000749c8
000752bc: a22201b6 sb r2,0x01b6(r17)			store  ???
000752c0: 0801d4be j 0x000752f8
000752c4: 00000000 nop
000752c8: 0c01c301 jal 0x00070c04
000752cc: 00000000 nop
000752d0: 0801d4be j 0x000752f8
000752d4: 00000000 nop
000752d8: 0c01a1e9 jal 0x000687a4
000752dc: 00000000 nop
000752e0: 0c01c402 jal 0x00071008
000752e4: 00000000 nop
000752e8: 0801d4be j 0x000752f8
000752ec: 00000000 nop
000752f0: 0c01c2df jal 0x00070b7c				Store ENTD flags into misc data w/o control flag
000752f4: 02202021 addu r4,r17,r0
000752f8: 8fbf0018 lw r31,0x0018(r29)
000752fc: 8fb10014 lw r17,0x0014(r29)
00075300: 8fb00010 lw r16,0x0010(r29)
00075304: 27bd0020 addiu r29,r29,0x0020
00075308: 03e00008 jr r31
0007530c: 00000000 nop