Final Fantasy IX/ROM map/CD3

From Data Crystal
Jump to navigation Jump to search

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

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

000c4a5c: 27bdffd0 addiu r29,r29,0xffd0
000c4a60: afb10014 sw r17,0x0014(r29)
000c4a64: 00008821 addu r17,r0,r0
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)
000c4b5c: 00008821 addu r17,r0,r0
000c4b60: 3c02800d lui r2,0x800d
000c4b64: 244449f0 addiu r4,r2,0x49f0
000c4b68: 3c02800d lui r2,0x800d
000c4b6c: 24434960 addiu r3,r2,0x4960
000c4b70: ac600000 sw r0,0x0000(r3)		;store 0 to (r3)
000c4b74: ac600004 sw r0,0x0004(r3)		;store 0 to (r3+0x4)
000c4b78: ac600008 sw r0,0x0008(r3)		;store 0 to (r3+0x8)
000c4b7c: a4800000 sh r0,0x0000(r4)		;store 0 to (r4)
000c4b80: a4800002 sh r0,0x0002(r4)		;store 0 to (r4+0x2)
000c4b84: a4800004 sh r0,0x0004(r4)		;store 0 to (r4+0x4)
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
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)