Bar Menu Controller Input Routine

From Final Fantasy Hacktics Wiki
Revision as of 04:14, 5 August 2020 by Pride (talk | contribs)
Jump to navigation Jump to search
Bar menu control routine
00071bb0: 27bdffe8 addiu r29,r29,0xffe8
00071bb4: afb00010 sw r16,0x0010(r29)
00071bb8: 00808021 addu r16,r4,r0
00071bbc: afbf0014 sw r31,0x0014(r29)
00071bc0: 8e020008 lw r2,0x0008(r16)
00071bc4: 00000000 nop
00071bc8: 00021840 sll r3,r2,0x01
00071bcc: 00621821 addu r3,r3,r2
00071bd0: 00031880 sll r3,r3,0x02
00071bd4: 00621821 addu r3,r3,r2
00071bd8: 00031880 sll r3,r3,0x02
00071bdc: 3c01800c lui r1,0x800c
00071be0: 2421bc70 addiu r1,r1,0xbc70
00071be4: 00230821 addu r1,r1,r3
00071be8: 8c220000 lw r2,0x0000(r1)
00071bec: 00000000 nop
00071bf0: 30420100 andi r2,r2,0x0100
00071bf4: 14400118 bne r2,r0,0x00072058				branch to end if ??
00071bf8: 00000000 nop
00071bfc: 3c038005 lui r3,0x8005
00071c00: 8c63d950 lw r3,-0x26b0(r3)				4d950
00071c04: 00000000 nop
00071c08: 30620008 andi r2,r3,0x0008
00071c0c: 14400112 bne r2,r0,0x00072058
00071c10: 30620004 andi r2,r3,0x0004
00071c14: 1040000f beq r2,r0,0x00071c54
00071c18: 00000000 nop
00071c1c: 0c03ffbb jal 0x000ffeec
00071c20: 3404000e ori r4,r0,0x000e
00071c24: 1440000b bne r2,r0,0x00071c54
00071c28: 00000000 nop
00071c2c: 3c028005 lui r2,0x8005
00071c30: 8c42d950 lw r2,-0x26b0(r2)
00071c34: 00000000 nop
00071c38: 38420004 xori r2,r2,0x0004
00071c3c: 3c018005 lui r1,0x8005
00071c40: ac22d950 sw r2,-0x26b0(r1)
00071c44: 0c01c6a8 jal 0x00071aa0
00071c48: 02002021 addu r4,r16,r0
00071c4c: 0801c816 j 0x00072058
00071c50: 00000000 nop
00071c54: 8e020018 lw r2,0x0018(r16)
00071c58: 00000000 nop
00071c5c: 10400019 beq r2,r0,0x00071cc4
00071c60: 00000000 nop
00071c64: 3c02800c lui r2,0x800c
00071c68: 8c42c2f0 lw r2,-0x3d10(r2)
00071c6c: 00000000 nop
00071c70: 30420060 andi r2,r2,0x0060
00071c74: 104000f8 beq r2,r0,0x00072058
00071c78: 3404000e ori r4,r0,0x000e
00071c7c: 00002821 addu r5,r0,r0
00071c80: 2406ffff addiu r6,r0,0xffff
00071c84: 00003821 addu r7,r0,r0
00071c88: 0c03ffc2 jal 0x000fff08
00071c8c: ae000018 sw r0,0x0018(r16)
00071c90: 34040002 ori r4,r0,0x0002
00071c94: 3c028005 lui r2,0x8005
00071c98: 8c42d950 lw r2,-0x26b0(r2)
00071c9c: 00000000 nop
00071ca0: 34420004 ori r2,r2,0x0004
00071ca4: 3c018005 lui r1,0x8005
00071ca8: ac22d950 sw r2,-0x26b0(r1)
00071cac: 0c01a500 jal 0x00069400
00071cb0: 34050010 ori r5,r0,0x0010
00071cb4: 0c02445d jal 0x00091174
00071cb8: 3404011b ori r4,r0,0x011b
00071cbc: 0801c816 j 0x00072058
00071cc0: 00000000 nop

00071cc4: 3c03800c lui r3,0x800c
00071cc8: 8c63c2f0 lw r3,-0x3d10(r3)
00071ccc: 00000000 nop
00071cd0: 30620040 andi r2,r3,0x0040
00071cd4: 10400005 beq r2,r0,0x00071cec			branch if cancel not pressed?
00071cd8: 30620100 andi r2,r3,0x0100

00071cdc: 0c02434c jal 0x00090d30				cancel pressed
00071ce0: 34040002 ori r4,r0,0x0002
00071ce4: 0801c795 j 0x00071e54
00071ce8: 3404000e ori r4,r0,0x000e

00071cec: 10400012 beq r2,r0,0x00071d38			branch if Select not pressed
00071cf0: 30620020 andi r2,r3,0x0020
00071cf4: 0c01c66f jal 0x000719bc
00071cf8: 02002021 addu r4,r16,r0
00071cfc: 8e02001c lw r2,0x001c(r16)
00071d00: 00000000 nop
00071d04: 00021080 sll r2,r2,0x02
00071d08: 00501021 addu r2,r2,r16
00071d0c: 8c420034 lw r2,0x0034(r2)
00071d10: 00000000 nop
00071d14: 3c01800a lui r1,0x800a
00071d18: 2421eb2c addiu r1,r1,0xeb2c
00071d1c: 00220821 addu r1,r1,r2
00071d20: 90240000 lbu r4,0x0000(r1)
00071d24: 34050001 ori r5,r0,0x0001
00071d28: 0c01ba18 jal 0x0006e860
00071d2c: 34841000 ori r4,r4,0x1000
00071d30: 0801c816 j 0x00072058
00071d34: 00000000 nop

00071d38: 1040005f beq r2,r0,0x00071eb8			branch if confirm not pressed
00071d3c: 00000000 nop
If Confirm was pressed
00071d40: 0c02434c jal 0x00090d30				play confirmation sound
00071d44: 34040001 ori r4,r0,0x0001
00071d48: 8e02001c lw r2,0x001c(r16)			load selectedindex of menu?
00071d4c: 00000000 nop
00071d50: 3c01800d lui r1,0x800d
00071d54: ac2207e0 sw r2,0x07e0(r1)				store in 800d07e0
00071d58: 8e02001c lw r2,0x001c(r16)			load bar menu selectedindex?
00071d5c: 00000000 nop
00071d60: 00021080 sll r2,r2,0x02				index*4
00071d64: 00501021 addu r2,r2,r16				add to other menu address (get menu data
00071d68: 8c430034 lw r3,0x0034(r2)				load ??
00071d6c: 34020004 ori r2,r0,0x0004
00071d70: 1062000b beq r3,r2,0x00071da0			branch if not 4
00071d74: 00000000 nop
00071d78: 8e020000 lw r2,0x0000(r16)			load 0x2C in  this data
00071d7c: 00000000 nop
00071d80: 000218c0 sll r3,r2,0x03				*8
00071d84: 00621821 addu r3,r3,r2				*9
00071d88: 00031880 sll r3,r3,0x02				*36 0x24
00071d8c: 34020001 ori r2,r0,0x0001
00071d90: 3c01800c lui r1,0x800c
00071d94: 2421b508 addiu r1,r1,0xb508			800cb508 - World Graphic Data
00071d98: 00230821 addu r1,r1,r3
00071d9c: ac220000 sw r2,0x0000(r1)			store counteR?
00071da0: 8e02001c lw r2,0x001c(r16)		load bar menu selectedindex?
00071da4: 00000000 nop
00071da8: 00021080 sll r2,r2,0x02
00071dac: 00501021 addu r2,r2,r16
00071db0: 8c430034 lw r3,0x0034(r2)			jump based on bar menu selection
00071db4: 00000000 nop
00071db8: 2c620005 sltiu r2,r3,0x0005
00071dbc: 104000a6 beq r2,r0,0x00072058
00071dc0: 00031080 sll r2,r3,0x02
00071dc4: 3c018006 lui r1,0x8006
00071dc8: 24217034 addiu r1,r1,0x7034
00071dcc: 00220821 addu r1,r1,r2
00071dd0: 8c220000 lw r2,0x0000(r1)
00071dd4: 00000000 nop
00071dd8: 00400008 jr r2
00071ddc: 00000000 nop

Load Rumors
00071de0: 0c01a2f1 jal 0x00068bc4
00071de4: 00002021 addu r4,r0,r0
00071de8: 0c01c66f jal 0x000719bc
00071dec: 02002021 addu r4,r16,r0
00071df0: 0c01c81b jal 0x0007206c		Rumors Name & Display (Set Rumors based on location)
00071df4: 00000000 nop
00071df8: 0801c816 j 0x00072058
00071dfc: 00000000 nop

Load Propositions
00071e00: 0c01a2f1 jal 0x00068bc4
00071e04: 34040001 ori r4,r0,0x0001
00071e08: 0c01c66f jal 0x000719bc
00071e0c: 02002021 addu r4,r16,r0
00071e10: 0c01ca86 jal 0x00072a18
00071e14: 00000000 nop
00071e18: 0801c816 j 0x00072058
00071e1c: 00000000 nop

Reload menu?
00071e20: 0c01c66f jal 0x000719bc
00071e24: 02002021 addu r4,r16,r0
00071e28: 0c01dc5d jal 0x00077174
00071e2c: 00000000 nop
00071e30: 0801c816 j 0x00072058
00071e34: 00000000 nop

Call Back
00071e38: 0c01c66f jal 0x000719bc
00071e3c: 02002021 addu r4,r16,r0
00071e40: 0c01ea7b jal 0x0007a9ec
00071e44: 00000000 nop
00071e48: 0801c816 j 0x00072058
00071e4c: 00000000 nop

Leave Bar
00071e50: 3404000e ori r4,r0,0x000e
00071e54: 34050019 ori r5,r0,0x0019
00071e58: 3406b807 ori r6,r0,0xb807
00071e5c: 3c01800d lui r1,0x800d
00071e60: ac2007e0 sw r0,0x07e0(r1)
00071e64: 0c03ffc2 jal 0x000fff08
00071e68: 00003821 addu r7,r0,r0
00071e6c: 3c02800a lui r2,0x800a
00071e70: 8c42f180 lw r2,-0x0e80(r2)
00071e74: 34030001 ori r3,r0,0x0001
00071e78: ae030018 sw r3,0x0018(r16)
00071e7c: 3c03800a lui r3,0x800a
00071e80: 8c63f198 lw r3,-0x0e68(r3)
00071e84: 2442fffe addiu r2,r2,0xfffe
00071e88: 3c01800a lui r1,0x800a
00071e8c: ac22f180 sw r2,-0x0e80(r1)
00071e90: 3c02800a lui r2,0x800a
00071e94: 8c42f244 lw r2,-0x0dbc(r2)
00071e98: 2463fffd addiu r3,r3,0xfffd
00071e9c: 3c01800a lui r1,0x800a
00071ea0: ac23f198 sw r3,-0x0e68(r1)
00071ea4: 2442ffff addiu r2,r2,0xffff
00071ea8: 3c01800a lui r1,0x800a
00071eac: ac22f244 sw r2,-0x0dbc(r1)
00071eb0: 0801c816 j 0x00072058
00071eb4: 00000000 nop

If confirm wasn't pressed (part of idle loop)
00071eb8: 0c01a404 jal 0x00069010
00071ebc: 34041000 ori r4,r0,0x1000
00071ec0: 1040002c beq r2,r0,0x00071f74			branch if up arrow not pressed
00071ec4: 00000000 nop
up arrow pressed
00071ec8: 8e02001c lw r2,0x001c(r16)			load bar menu selectedindex?
00071ecc: 00000000 nop
00071ed0: 10400013 beq r2,r0,0x00071f20			branch if zero
00071ed4: 00000000 nop
00071ed8: 8e020000 lw r2,0x0000(r16)			load ??
00071edc: 00000000 nop
00071ee0: 000218c0 sll r3,r2,0x03
00071ee4: 00621821 addu r3,r3,r2
00071ee8: 00031880 sll r3,r3,0x02
00071eec: 3c01800c lui r1,0x800c
00071ef0: 2421b520 addiu r1,r1,0xb520
00071ef4: 00230821 addu r1,r1,r3
00071ef8: 8c220000 lw r2,0x0000(r1)
00071efc: 00000000 nop
00071f00: 2442fff0 addiu r2,r2,0xfff0
00071f04: 3c01800c lui r1,0x800c
00071f08: 2421b520 addiu r1,r1,0xb520
00071f0c: 00230821 addu r1,r1,r3
00071f10: ac220000 sw r2,0x0000(r1)
00071f14: 8e02001c lw r2,0x001c(r16)			load bar menu selectedindex?
00071f18: 0801c7db j 0x00071f6c
00071f1c: 2442ffff addiu r2,r2,0xffff			decrement bar menu selectedindex?

00071f20: 8e020000 lw r2,0x0000(r16)			load ??
00071f24: 8e030030 lw r3,0x0030(r16)			load ??
00071f28: 000220c0 sll r4,r2,0x03				*8
00071f2c: 00822021 addu r4,r4,r2				*9
00071f30: 00042080 sll r4,r4,0x02				*36 (0x24)
00071f34: 2463ffff addiu r3,r3,0xffff			decrement ??
00071f38: 3c01800c lui r1,0x800c
00071f3c: 2421b520 addiu r1,r1,0xb520			800bb520
00071f40: 00240821 addu r1,r1,r4				get graphical menu data
00071f44: 8c220000 lw r2,0x0000(r1)				load ??
00071f48: 00031900 sll r3,r3,0x04
00071f4c: 00431021 addu r2,r2,r3
00071f50: 3c01800c lui r1,0x800c
00071f54: 2421b520 addiu r1,r1,0xb520			800bb520
00071f58: 00240821 addu r1,r1,r4				get graphical data?
00071f5c: ac220000 sw r2,0x0000(r1)
00071f60: 8e020030 lw r2,0x0030(r16)
00071f64: 00000000 nop
00071f68: 2442ffff addiu r2,r2,0xffff			decrement
00071f6c: 0801c80b j 0x0007202c
00071f70: ae02001c sw r2,0x001c(r16)			store bar menu selectedindex

00071f74: 0c01a404 jal 0x00069010
00071f78: 34044000 ori r4,r0,0x4000
00071f7c: 10400036 beq r2,r0,0x00072058
00071f80: 00000000 nop
If down arrow is pressed
00071f84: 8e030030 lw r3,0x0030(r16)			load ??
00071f88: 8e02001c lw r2,0x001c(r16)			load bar menu selectedindex
00071f8c: 2464ffff addiu r4,r3,0xffff			decrement ??
00071f90: 0044102a slt r2,r2,r4					set if bar menu selected index < ???
00071f94: 10400015 beq r2,r0,0x00071fec			branch if not
00071f98: 00042100 sll r4,r4,0x04				??*16

00071f9c: 8e020000 lw r2,0x0000(r16)			load ??
00071fa0: 00000000 nop
00071fa4: 000218c0 sll r3,r2,0x03
00071fa8: 00621821 addu r3,r3,r2
00071fac: 00031880 sll r3,r3,0x02
00071fb0: 3c01800c lui r1,0x800c
00071fb4: 2421b520 addiu r1,r1,0xb520			800bb520
00071fb8: 00230821 addu r1,r1,r3
00071fbc: 8c220000 lw r2,0x0000(r1)				load ??
00071fc0: 00000000 nop
00071fc4: 24420010 addiu r2,r2,0x0010			add 0x10
00071fc8: 3c01800c lui r1,0x800c
00071fcc: 2421b520 addiu r1,r1,0xb520			bb520
00071fd0: 00230821 addu r1,r1,r3
00071fd4: ac220000 sw r2,0x0000(r1)				store new
00071fd8: 8e02001c lw r2,0x001c(r16)			load selectedindex
00071fdc: 00000000 nop
00071fe0: 24420001 addiu r2,r2,0x0001			add 1
00071fe4: 0801c80b j 0x0007202c
00071fe8: ae02001c sw r2,0x001c(r16)			store new selectedindex

00071fec: 8e020000 lw r2,0x0000(r16)			load 
00071ff0: 00000000 nop
00071ff4: 000218c0 sll r3,r2,0x03
00071ff8: 00621821 addu r3,r3,r2
00071ffc: 00031880 sll r3,r3,0x02
00072000: 3c01800c lui r1,0x800c
00072004: 2421b520 addiu r1,r1,0xb520			get other data
00072008: 00230821 addu r1,r1,r3
0007200c: 8c220000 lw r2,0x0000(r1)				load ?
00072010: 00000000 nop
00072014: 00441023 subu r2,r2,r4				subtract the 2
00072018: 3c01800c lui r1,0x800c
0007201c: 2421b520 addiu r1,r1,0xb520
00072020: 00230821 addu r1,r1,r3
00072024: ac220000 sw r2,0x0000(r1)				store result
00072028: ae00001c sw r0,0x001c(r16)
0007202c: 0c02434c jal 0x00090d30					play sound
00072030: 34040003 ori r4,r0,0x0003
00072034: 8e02000c lw r2,0x000c(r16)			load ??
00072038: 00000000 nop
0007203c: 10400006 beq r2,r0,0x00072058			branch if ??
00072040: 3404000e ori r4,r0,0x000e

00072044: 34050019 ori r5,r0,0x0019
00072048: 3406b806 ori r6,r0,0xb806
0007204c: 0c03ffc2 jal 0x000fff08
00072050: 00003821 addu r7,r0,r0
00072054: ae00000c sw r0,0x000c(r16)
00072058: 8fbf0014 lw r31,0x0014(r29)
0007205c: 8fb00010 lw r16,0x0010(r29)
00072060: 27bd0018 addiu r29,r29,0x0018
00072064: 03e00008 jr r31
00072068: 00000000 nop