Final Fantasy IX/ROM map/CD3

From Data Crystal
< Final Fantasy IX‎ | ROM map
Revision as of 14:42, 19 October 2015 by Mantidactyle (talk | contribs) (Tetra Master board blocks)
Jump to navigation Jump to search

Chip tiny.png The following article is a ROM map for Final Fantasy IX/ROM map.

Tetra Master board blocks

000aea24: 27bdffd0 addiu r29,r29,0xffd0		;r29 -= 0x30
000aea28: afb60028 sw r22,0x0028(r29)		;store r22 in (r29+0x28)
000aea2c: 3c168010 lui r22,0x8010
000aea30: 36d63800 ori r22,r22,0x3800		;r22 = 0x80103800
000aea34: afb10014 sw r17,0x0014(r29)		;store r17 in (r29+0x14)
000aea38: 00008821 addu r17,r0,r0		;r17 = 0
000aea3c: afb40020 sw r20,0x0020(r29)		;store r20 in (r29+0x20)
000aea40: 24140002 addiu r20,r0,0x0002		;r20 = 2
000aea44: afb3001c sw r19,0x001c(r29)		;store r19 in (r29+0x1c)
000aea48: 24130003 addiu r19,r0,0x0003		;r19 = 3
000aea4c: afb50024 sw r21,0x0024(r29)		;store r21 in (r29+0x24)
000aea50: 24950010 addiu r21,r4,0x0010		;r21 = r4 + 0x10
000aea54: afb00010 sw r16,0x0010(r29)		;store r16 in (r29+0x10)
000aea58: 02a08021 addu r16,r21,r0		;r16 = r21
000aea5c: afb20018 sw r18,0x0018(r29)		;store r18 in (r29+0x18)
000aea60: 02209021 addu r18,r17,r0		;r18 = r17
000aea64: afbf002c sw r31,0x002c(r29)		;store r31 in (r29+0x2c)
000aea68: 240200dc addiu r2,r0,0x00dc		;r2 = 0xdc
000aea6c: ae02000c sw r2,0x000c(r16)		;store r2 in (r16+0xc)
000aea70: 24020028 addiu r2,r0,0x0028		;r2 = 0x28
000aea74: ae120010 sw r18,0x0010(r16)		;store r18 in (r16+0x10)
000aea78: ae000014 sw r0,0x0014(r16)		;store 0 in (r16+0x14)
000aea7c: ae000018 sw r0,0x0018(r16)		;store 0 in (r16+0x18)
000aea80: ae000008 sw r0,0x0008(r16)		;store 0 in (r16+0x8)
000aea84: ae020030 sw r2,0x0030(r16)		;store r2 in (r16+0x30)
000aea88: 0c018acf jal 0x00062b3c		;PRNG call
000aea8c: a2000000 sb r0,0x0000(r16)		;store 0 in (r16)
000aea90: 0c018acf jal 0x00062b3c		;PRNG call
000aea94: a2020001 sb r2,0x0001(r16)		;store PRN[0;0x7FFF] in (r16+0x1)
000aea98: 0c018acf jal 0x00062b3c		;PRNG call
000aea9c: a2020002 sb r2,0x0002(r16)		;store PRN[0;0x7FFF] in (r16+0x2)
000aeaa0: 30430003 andi r3,r2,0x0003
000aeaa4: 24020001 addiu r2,r0,0x0001
000aeaa8: 1062000f beq r3,r2,0x000aeae8		;if((r2 & 3) == 1), branch to 0x000aeae8
000aeaac: 28620002 slti r2,r3,0x0002
000aeab0: 10400005 beq r2,r0,0x000aeac8		;if((r2 & 3) ≥ 2), branch to 0x000aeac8
000aeab4: 00000000 nop
000aeab8: 10600009 beq r3,r0,0x000aeae0		;if((r2 & 3) == 0), branch to 0x000aeae0
000aeabc: 00000000 nop
000aeac0: 0802babf j 0x000aeafc		;error trap, jump to 0x000aeafc
000aeac4: 00000000 nop
000aeac8: 10740009 beq r3,r20,0x000aeaf0
000aeacc: 00000000 nop
000aead0: 10730009 beq r3,r19,0x000aeaf8
000aead4: 00000000 nop
000aead8: 0802babf j 0x000aeafc
000aeadc: 00000000 nop
000aeae0: 0802babf j 0x000aeafc
000aeae4: a2000003 sb r0,0x0003(r16)
000aeae8: 0802babf j 0x000aeafc
000aeaec: a2030003 sb r3,0x0003(r16)
000aeaf0: 0802babf j 0x000aeafc
000aeaf4: a2130003 sb r19,0x0003(r16)
000aeaf8: a2140003 sb r20,0x0003(r16)
000aeafc: 0c018acf jal 0x00062b3c
000aeb00: 2652001e addiu r18,r18,0x001e
000aeb04: 0c018acf jal 0x00062b3c
000aeb08: a2020004 sb r2,0x0004(r16)
000aeb0c: a2020005 sb r2,0x0005(r16)
000aeb10: 0c018acf jal 0x00062b3c
000aeb14: a2110000 sb r17,0x0000(r16)
000aeb18: a2020001 sb r2,0x0001(r16)
000aeb1c: 02201021 addu r2,r17,r0
000aeb20: 304200ff andi r2,r2,0x00ff
000aeb24: 00021880 sll r3,r2,0x02
000aeb28: 00621821 addu r3,r3,r2
000aeb2c: 00761821 addu r3,r3,r22
000aeb30: 90620000 lbu r2,0x0000(r3)
000aeb34: 00000000 nop
000aeb38: a2020002 sb r2,0x0002(r16)
000aeb3c: 90620001 lbu r2,0x0001(r3)
000aeb40: 00000000 nop
000aeb44: a2020003 sb r2,0x0003(r16)
000aeb48: 90620002 lbu r2,0x0002(r3)
000aeb4c: 00000000 nop
000aeb50: a2020004 sb r2,0x0004(r16)
000aeb54: 90620003 lbu r2,0x0003(r3)
000aeb58: 26310001 addiu r17,r17,0x0001
000aeb5c: ae000034 sw r0,0x0034(r16)
000aeb60: a2020005 sb r2,0x0005(r16)
000aeb64: 2a22000a slti r2,r17,0x000a
000aeb68: 1440ffbf bne r2,r0,0x000aea68
000aeb6c: 2610003c addiu r16,r16,0x003c
000aeb70: 24110005 addiu r17,r0,0x0005
000aeb74: 26a4012c addiu r4,r21,0x012c
000aeb78: ac800034 sw r0,0x0034(r4)
000aeb7c: 26310001 addiu r17,r17,0x0001
000aeb80: 2a22000a slti r2,r17,0x000a
000aeb84: 1440fffc bne r2,r0,0x000aeb78
000aeb88: 2484003c addiu r4,r4,0x003c
000aeb8c: 8fbf002c lw r31,0x002c(r29)
000aeb90: 8fb60028 lw r22,0x0028(r29)
000aeb94: 8fb50024 lw r21,0x0024(r29)
000aeb98: 8fb40020 lw r20,0x0020(r29)
000aeb9c: 8fb3001c lw r19,0x001c(r29)
000aeba0: 8fb20018 lw r18,0x0018(r29)
000aeba4: 8fb10014 lw r17,0x0014(r29)
000aeba8: 8fb00010 lw r16,0x0010(r29)
000aebac: 03e00008 jr r31
000aebb0: 27bd0030 addiu r29,r29,0x0030

Tetra Master PRNG call when entering the World Map, and ?

000c4a5c: 27bdffd0 addiu r29,r29,0xffd0
000c4a60: afb10014 sw r17,0x0014(r29)		;store r17 in (r29+0x14)
000c4a64: 00008821 addu r17,r0,r0		;r17 = 0
000c4a68: 3c02800d lui r2,0x800d
000c4a6c: afb50024 sw r21,0x0024(r29)
000c4a70: 245548f8 addiu r21,r2,0x48f8
000c4a74: 3c02800d lui r2,0x800d
000c4a78: afb40020 sw r20,0x0020(r29)
000c4a7c: 24544830 addiu r20,r2,0x4830
000c4a80: afb3001c sw r19,0x001c(r29)
000c4a84: 24130200 addiu r19,r0,0x0200
000c4a88: 3c02800d lui r2,0x800d
000c4a8c: afb20018 sw r18,0x0018(r29)
000c4a90: 24524870 addiu r18,r2,0x4870
000c4a94: afbf0028 sw r31,0x0028(r29)
000c4a98: afb00010 sw r16,0x0010(r29)
000c4a9c: 001111c0 sll r2,r17,0x07		;r2 = r17 << 7
000c4aa0: 0c018acf jal 0x00062b3c		;PRNG call
000c4aa4: a6420000 sh r2,0x0000(r18)		;store r2 in (r18)
000c4aa8: 00401821 addu r3,r2,r0		;r3 = prn[0;0x7FFF]
000c4aac: 04610002 bgez r3,0x000c4ab8		;if(r3 ≥ 0), branch to 0x000c4ab8
000c4ab0: 001180c0 sll r16,r17,0x03		;r16 = r17 << 3
000c4ab4: 24620fff addiu r2,r3,0x0fff		;r2 = r3 + 0xFFF
000c4ab8: 00021303 sra r2,r2,0x0c
000c4abc: 00021300 sll r2,r2,0x0c		;r2 &= 0xFFFFF000
000c4ac0: 00621023 subu r2,r3,r2		;r2 = r3 - r2
000c4ac4: a6420002 sh r2,0x0002(r18)		;store r2 in (r18+0x2)
000c4ac8: 24020800 addiu r2,r0,0x0800		;r2 = 0x800
000c4acc: a6400004 sh r0,0x0004(r18)		;store 0 in (r18+0x4)
000c4ad0: a6930000 sh r19,0x0000(r20)		;store r19 in (r20)
000c4ad4: a6a20000 sh r2,0x0000(r21)		;store r2 in (r21)
000c4ad8: 3c02800d lui r2,0x800d
000c4adc: 244248e8 addiu r2,r2,0x48e8
000c4ae0: 02221021 addu r2,r17,r2		;r2 = 0x800d48e8 + r17
000c4ae4: 0c018acf jal 0x00062b3c		;PRNG call
000c4ae8: a0400000 sb r0,0x0000(r2)		;store 0 in (r2)
000c4aec: 00401821 addu r3,r2,r0		;r3 = prn[0;0x7FFF]
000c4af0: 00602021 addu r4,r3,r0		;r4 = r3
000c4af4: 3c02800d lui r2,0x800d
000c4af8: 24424910 addiu r2,r2,0x4910		;r2 = 0x800dc4b08
000c4afc: 04610002 bgez r3,0x000c4b08		;if(r3 ≥ 0), branch to 0x000c4b08
000c4b00: 02028021 addu r16,r16,r2		;r16 += r2
000c4b04: 24640fff addiu r4,r3,0x0fff		;r4 = r3 + 0xFFF
000c4b08: 00041303 sra r2,r4,0x0c
000c4b0c: 00021300 sll r2,r2,0x0c		;r2 = r4 & 0xFFFFF000
000c4b10: 00621023 subu r2,r3,r2		;r2 &= r3 - r2
000c4b14: 0c018acf jal 0x00062b3c		;PRNG call
000c4b18: a6020000 sh r2,0x0000(r16)		;store r2 in (r16)
000c4b1c: 00401821 addu r3,r2,r0		;r3 = prn[0;0x7FFF]
000c4b20: 04610002 bgez r3,0x000c4b2c		;if(r3 ≥ 0), branch to 0x000c4b2c
000c4b24: 00000000 nop
000c4b28: 24620fff addiu r2,r3,0x0fff		;r2 = r3 + 0xFFF
000c4b2c: 26b50002 addiu r21,r21,0x0002		;r21 += 2
000c4b30: 26940002 addiu r20,r20,0x0002		;r20 += 2
000c4b34: 26730014 addiu r19,r19,0x0014		;r19 += 20
000c4b38: 26520008 addiu r18,r18,0x0008		;r18 += 8
000c4b3c: 26310001 addiu r17,r17,0x0001		;r17++
000c4b40: 00021303 sra r2,r2,0x0c
000c4b44: 00021300 sll r2,r2,0x0c		;r2 &= 0xFFFFF000
000c4b48: 00621023 subu r2,r3,r2		;r2 = r3 - r2
000c4b4c: a6020002 sh r2,0x0002(r16)		;store r2 in (r16+0x2)
000c4b50: 2a22000a slti r2,r17,0x000a
000c4b54: 1440ffd1 bne r2,r0,0x000c4a9c		;if(r17 < 10), loop to 0x000c4a9c
000c4b58: a6000004 sh r0,0x0004(r16)		;store 0 in (r16+0x4)
000c4b5c: 00008821 addu r17,r0,r0		;r17 = 0
000c4b60: 3c02800d lui r2,0x800d
000c4b64: 244449f0 addiu r4,r2,0x49f0		;r4 = 0x800d49f0
000c4b68: 3c02800d lui r2,0x800d
000c4b6c: 24434960 addiu r3,r2,0x4960		;r3 = 0x800d4960
000c4b70: ac600000 sw r0,0x0000(r3)		;store 0 to (0x800d4960)
000c4b74: ac600004 sw r0,0x0004(r3)		;store 0 to (0x800d4964)
000c4b78: ac600008 sw r0,0x0008(r3)		;store 0 to (0x800d4968)
000c4b7c: a4800000 sh r0,0x0000(r4)		;store 0 to (0x800d49f0)
000c4b80: a4800002 sh r0,0x0002(r4)		;store 0 to (0x800d49f2)
000c4b84: a4800004 sh r0,0x0004(r4)		;store 0 to (0x800d49f4)
000c4b88: 24840008 addiu r4,r4,0x0008		;r4 += 8
000c4b8c: 26310001 addiu r17,r17,0x0001		;r17++
000c4b90: 2a220009 slti r2,r17,0x0009
000c4b94: 1440fff6 bne r2,r0,0x000c4b70		;if(r17 < 10), loop to 0x000c4b70
000c4b98: 24630010 addiu r3,r3,0x0010		;r3 += 0x10
000c4b9c: 3c030004 lui r3,0x0004
000c4ba0: 3463464c ori r3,r3,0x464c		;r3 = 0x4464c
000c4ba4: 3c05fffc lui r5,0xfffc
000c4ba8: 34a5d97f ori r5,r5,0xd97f
000c4bac: 3c040003 lui r4,0x0003
000c4bb0: 3484805b ori r4,r4,0x805b
000c4bb4: 3c07fffc lui r7,0xfffc
000c4bb8: 34e7f7b9 ori r7,r7,0xf7b9
000c4bbc: 3c060002 lui r6,0x0002
000c4bc0: 34c6fffa ori r6,r6,0xfffa
000c4bc4: 3c08fffe lui r8,0xfffe
000c4bc8: 3508bfae ori r8,r8,0xbfae
000c4bcc: 24110001 addiu r17,r0,0x0001		;r17 = 1
000c4bd0: 3c02800d lui r2,0x800d
000c4bd4: 24424a40 addiu r2,r2,0x4a40
000c4bd8: 244b0050 addiu r11,r2,0x0050
000c4bdc: 00404821 addu r9,r2,r0
000c4be0: 25220028 addiu r2,r9,0x0028
000c4be4: 00405021 addu r10,r2,r0
000c4be8: 3c02800d lui r2,0x800d
000c4bec: ac434960 sw r3,0x4960(r2)
000c4bf0: 24424960 addiu r2,r2,0x4960
000c4bf4: 2403e198 addiu r3,r0,0xe198
000c4bf8: ac440010 sw r4,0x0010(r2)
000c4bfc: 24440010 addiu r4,r2,0x0010
000c4c00: ac430004 sw r3,0x0004(r2)
000c4c04: 240301f4 addiu r3,r0,0x01f4
000c4c08: ac450008 sw r5,0x0008(r2)
000c4c0c: ac830004 sw r3,0x0004(r4)
000c4c10: ac870008 sw r7,0x0008(r4)
000c4c14: 24440060 addiu r4,r2,0x0060
000c4c18: 2403d57e addiu r3,r0,0xd57e
000c4c1c: ac460060 sw r6,0x0060(r2)
000c4c20: ac830004 sw r3,0x0004(r4)
000c4c24: ac880008 sw r8,0x0008(r4)
000c4c28: 8c4c0010 lw r12,0x0010(r2)
000c4c2c: 8c4d0014 lw r13,0x0014(r2)
000c4c30: 8c4e0018 lw r14,0x0018(r2)
000c4c34: 8c4f001c lw r15,0x001c(r2)
000c4c38: ac4c0020 sw r12,0x0020(r2)
000c4c3c: ac4d0024 sw r13,0x0024(r2)
000c4c40: ac4e0028 sw r14,0x0028(r2)
000c4c44: ac4f002c sw r15,0x002c(r2)
000c4c48: 8c4c0010 lw r12,0x0010(r2)
000c4c4c: 8c4d0014 lw r13,0x0014(r2)
000c4c50: 8c4e0018 lw r14,0x0018(r2)
000c4c54: 8c4f001c lw r15,0x001c(r2)
000c4c58: ac4c0030 sw r12,0x0030(r2)
000c4c5c: ac4d0034 sw r13,0x0034(r2)
000c4c60: ac4e0038 sw r14,0x0038(r2)
000c4c64: ac4f003c sw r15,0x003c(r2)
000c4c68: 8c4c0010 lw r12,0x0010(r2)
000c4c6c: 8c4d0014 lw r13,0x0014(r2)
000c4c70: 8c4e0018 lw r14,0x0018(r2)
000c4c74: 8c4f001c lw r15,0x001c(r2)
000c4c78: ac4c0040 sw r12,0x0040(r2)
000c4c7c: ac4d0044 sw r13,0x0044(r2)
000c4c80: ac4e0048 sw r14,0x0048(r2)
000c4c84: ac4f004c sw r15,0x004c(r2)
000c4c88: 8c4c0010 lw r12,0x0010(r2)
000c4c8c: 8c4d0014 lw r13,0x0014(r2)
000c4c90: 8c4e0018 lw r14,0x0018(r2)
000c4c94: 8c4f001c lw r15,0x001c(r2)
000c4c98: ac4c0050 sw r12,0x0050(r2)
000c4c9c: ac4d0054 sw r13,0x0054(r2)
000c4ca0: ac4e0058 sw r14,0x0058(r2)
000c4ca4: ac4f005c sw r15,0x005c(r2)
000c4ca8: 8c4c0060 lw r12,0x0060(r2)
000c4cac: 8c4d0064 lw r13,0x0064(r2)
000c4cb0: 8c4e0068 lw r14,0x0068(r2)
000c4cb4: 8c4f006c lw r15,0x006c(r2)
000c4cb8: ac4c0070 sw r12,0x0070(r2)
000c4cbc: ac4d0074 sw r13,0x0074(r2)
000c4cc0: ac4e0078 sw r14,0x0078(r2)
000c4cc4: ac4f007c sw r15,0x007c(r2)
000c4cc8: 8c4c0060 lw r12,0x0060(r2)
000c4ccc: 8c4d0064 lw r13,0x0064(r2)
000c4cd0: 8c4e0068 lw r14,0x0068(r2)
000c4cd4: 8c4f006c lw r15,0x006c(r2)
000c4cd8: ac4c0080 sw r12,0x0080(r2)
000c4cdc: ac4d0084 sw r13,0x0084(r2)
000c4ce0: ac4e0088 sw r14,0x0088(r2)
000c4ce4: ac4f008c sw r15,0x008c(r2)
000c4ce8: 3c02800d lui r2,0x800d
000c4cec: 24424848 addiu r2,r2,0x4848
000c4cf0: ac400004 sw r0,0x0004(r2)
000c4cf4: ac490008 sw r9,0x0008(r2)
000c4cf8: ad220004 sw r2,0x0004(r9)
000c4cfc: ad2a0008 sw r10,0x0008(r9)
000c4d00: ad4b0008 sw r11,0x0008(r10)
000c4d04: 256b0028 addiu r11,r11,0x0028
000c4d08: ad490004 sw r9,0x0004(r10)
000c4d0c: 25290028 addiu r9,r9,0x0028
000c4d10: 26310001 addiu r17,r17,0x0001		;r17++
000c4d14: 2a22003b slti r2,r17,0x003b
000c4d18: 1440fff9 bne r2,r0,0x000c4d00
000c4d1c: 254a0028 addiu r10,r10,0x0028
000c4d20: 3c03800d lui r3,0x800d
000c4d24: 24634a40 addiu r3,r3,0x4a40
000c4d28: 00111080 sll r2,r17,0x02		;r2 = r17 << 2
000c4d2c: 00511021 addu r2,r2,r17		;r2 += r17
000c4d30: 000210c0 sll r2,r2,0x03		;r2 = r2 << 3
000c4d34: 00432021 addu r4,r2,r3
000c4d38: 2463ffd8 addiu r3,r3,0xffd8
000c4d3c: 00431021 addu r2,r2,r3
000c4d40: ac820004 sw r2,0x0004(r4)
000c4d44: 3c02800d lui r2,0x800d
000c4d48: 244253e8 addiu r2,r2,0x53e8
000c4d4c: 3c03800d lui r3,0x800d
000c4d50: 246353a0 addiu r3,r3,0x53a0
000c4d54: ac820008 sw r2,0x0008(r4)
000c4d58: ac440004 sw r4,0x0004(r2)
000c4d5c: ac400008 sw r0,0x0008(r2)
000c4d60: 3c02800d lui r2,0x800d
000c4d64: 244248c0 addiu r2,r2,0x48c0
000c4d68: ac600004 sw r0,0x0004(r3)
000c4d6c: ac620008 sw r2,0x0008(r3)
000c4d70: ac430004 sw r3,0x0004(r2)
000c4d74: ac400008 sw r0,0x0008(r2)
000c4d78: 3c02800d lui r2,0x800d
000c4d7c: a440df82 sh r0,-0x207e(r2)
000c4d80: 3c02800d lui r2,0x800d
000c4d84: a440df8a sh r0,-0x2076(r2)
000c4d88: 3c02800d lui r2,0x800d
000c4d8c: a440df92 sh r0,-0x206e(r2)
000c4d90: 3c02800d lui r2,0x800d
000c4d94: 2442dfa0 addiu r2,r2,0xdfa0
000c4d98: a4400002 sh r0,0x0002(r2)
000c4d9c: a440000a sh r0,0x000a(r2)
000c4da0: a4400012 sh r0,0x0012(r2)
000c4da4: 8fbf0028 lw r31,0x0028(r29)
000c4da8: 8fb50024 lw r21,0x0024(r29)
000c4dac: 8fb40020 lw r20,0x0020(r29)
000c4db0: 8fb3001c lw r19,0x001c(r29)
000c4db4: 8fb20018 lw r18,0x0018(r29)
000c4db8: 8fb10014 lw r17,0x0014(r29)
000c4dbc: 8fb00010 lw r16,0x0010(r29)
000c4dc0: 3c02800d lui r2,0x800d
000c4dc4: ac404a38 sw r0,0x4a38(r2)
000c4dc8: 3c02800d lui r2,0x800d
000c4dcc: ac4053cc sw r0,0x53cc(r2)
000c4dd0: 03e00008 jr r31
000c4dd4: 27bd0030 addiu r29,r29,0x0030

Tetra Master PRNG

seed × 0x41C64E6D + 0x3039
07c02200: 3c03a001 lui r3,0xa001
07c02204: 8c639010 lw r3,-0x6ff0(r3)
07c02208: 3c0141c6 lui r1,0x41c6
07c0220c: 34214e6d ori r1,r1,0x4e6d
07c02210: 00610019 multu r3,r1
07c02214: 3c01a001 lui r1,0xa001
07c02218: 00001812 mflo r3
07c0221c: 24633039 addiu r3,r3,0x3039
07c02220: 00031402 srl r2,r3,0x10
07c02224: 30427fff andi r2,r2,0x7fff
07c02228: 03e00008 jr r31
07c0222c: ac239010 sw r3,-0x6ff0(r1)

0x07c02230

07c02230: 3c01a001 lui r1,0xa001
07c02234: 03e00008 jr r31
07c02238: ac249010 sw r4,-0x6ff0(r1)