Yu-Gi-Oh! Forbidden Memories/ROM map

From Data Crystal
Jump to navigation Jump to search

Chip tiny.png The following article is a ROM map for Yu-Gi-Oh! Forbidden Memories.

These addresses (unless otherwise noted) are from the extracted NTSC-U [SLUS-01411] bin.

0x12b50 (game initialization)

00012b50: 27bdffe8 addiu r29,r29,0xffe8
00012b54: afbf0014 sw r31,0x0014(r29)
00012b58: 0c004a9e jal 0x00012a78
00012b5c: afb00010 sw r16,0x0010(r29)
00012b60: 0c01ce2c jal 0x000738b0
00012b64: 00000000 nop
00012b68: 0c01d0e4 jal 0x00074390
00012b6c: 00000000 nop
00012b70: 0c021530 jal 0x000854c0
00012b74: 00000000 nop
00012b78: 0c01ce30 jal 0x000738c0
00012b7c: 00000000 nop
00012b80: 0c01d121 jal 0x00074484
00012b84: 00000000 nop
00012b88: 0c01ce14 jal 0x00073850
00012b8c: 24040002 addiu r4,r0,0x0002
00012b90: 0c01fd8d jal 0x0007f634
00012b94: 00002021 addu r4,r0,r0
00012b98: 0c005743 jal 0x00015d0c
00012b9c: 00000000 nop
00012ba0: 3c04800a lui r4,0x800a
00012ba4: 2484b4a8 addiu r4,r4,0xb4a8
00012ba8: 24030001 addiu r3,r0,0x0001
00012bac: af8001c4 sw r0,0x01c4(r28)
00012bb0: af8001c0 sw r0,0x01c0(r28)
00012bb4: a38001b8 sb r0,0x01b8(r28)
00012bb8: af800194 sw r0,0x0194(r28)
00012bbc: 8f850194 lw r5,0x0194(r28)
00012bc0: 24025000 addiu r2,r0,0x5000
00012bc4: a38001bb sb r0,0x01bb(r28)
00012bc8: a38001b9 sb r0,0x01b9(r28)
00012bcc: af8301d0 sw r3,0x01d0(r28)
00012bd0: a7820190 sh r2,0x0190(r28)
00012bd4: a38001c9 sb r0,0x01c9(r28)
00012bd8: 3c01800a lui r1,0x800a
00012bdc: a023b230 sb r3,-0x4dd0(r1)
00012be0: af8401ac sw r4,0x01ac(r28)
00012be4: af8501bc sw r5,0x01bc(r28)
00012be8: 0c004c55 jal 0x00013154
00012bec: 00000000 nop
00012bf0: 0c0100fc jal 0x000403f0
00012bf4: 00000000 nop
00012bf8: 0c00546c jal 0x000151b0
00012bfc: 00000000 nop
00012c00: 0c004d2d jal 0x000134b4
00012c04: 00000000 nop
00012c08: 0c00d696 jal 0x00035a58
00012c0c: 00000000 nop
00012c10: 0c00d699 jal 0x00035a64
00012c14: 00000000 nop
00012c18: 0c00ed72 jal 0x0003b5c8
00012c1c: 00000000 nop
00012c20: 3c02800f lui r2,0x800f
00012c24: 90449ec0 lbu r4,-0x6140(r2)
00012c28: 0c0119da jal 0x00046768
00012c2c: 00000000 nop
00012c30: 3c048001 lui r4,0x8001
00012c34: 0c01d108 jal 0x00074420
00012c38: 24842cd4 addiu r4,r4,0x2cd4
00012c3c: 0c00ffa0 jal 0x0003fe80
00012c40: 00000000 nop
00012c44: 3c045555 lui r4,0x5555
00012c48: 0c023970 jal 0x0008e5c0                   ;PRNG seed update, set initial PRNG seed to 0x55555555
00012c4c: 34845555 ori r4,r4,0x5555                 ;r4 = 0x55555555
00012c50: 0c01fd8d jal 0x0007f634
00012c54: 24040001 addiu r4,r0,0x0001
00012c58: 0c00b363 jal 0x0002cd8c
00012c5c: 00000000 nop
00012c60: 0c00b363 jal 0x0002cd8c
00012c64: 00000000 nop
00012c68: 0c010e58 jal 0x00043960
00012c6c: 00002021 addu r4,r0,r0
00012c70: 3c04800f lui r4,0x800f
00012c74: 0c023ed4 jal 0x0008fb50
00012c78: 24849dc0 addiu r4,r4,0x9dc0
00012c7c: 0c00b363 jal 0x0002cd8c
00012c80: 00408021 addu r16,r2,r0
00012c84: 12000005 beq r16,r0,0x00012c9c
00012c88: 00000000 nop
00012c8c: 0c016e17 jal 0x0005b85c
00012c90: 00000000 nop
00012c94: 0c004df9 jal 0x000137e4
00012c98: 00000000 nop
00012c9c: 0c010ef3 jal 0x00043bcc
00012ca0: 00000000 nop
00012ca4: 0c00b516 jal 0x0002d458
00012ca8: 00402021 addu r4,r2,r0
00012cac: 24020008 addiu r2,r0,0x0008
00012cb0: 3c01800a lui r1,0x800a
00012cb4: a022b269 sb r2,-0x4d97(r1)
00012cb8: 0c00b75d jal 0x0002dd74
00012cbc: 00000000 nop
00012cc0: 8fbf0014 lw r31,0x0014(r29)
00012cc4: 8fb00010 lw r16,0x0010(r29)
00012cc8: 00001021 addu r2,r0,r0
00012ccc: 03e00008 jr r31
00012cd0: 27bd0018 addiu r29,r29,0x0018

0x12d4c (routine)

00012d4c: 27bdffe8 addiu r29,r29,0xffe8
00012d50: afbf0010 sw r31,0x0010(r29)
00012d54: 0c004c1b jal 0x0001306c
00012d58: 00000000 nop
00012d5c: 0c004b6d jal 0x00012db4
00012d60: 00000000 nop
00012d64: 0c004b97 jal 0x00012e5c
00012d68: 00000000 nop
00012d6c: 0c00f336 jal 0x0003ccd8
00012d70: 00000000 nop
00012d74: 8fbf0010 lw r31,0x0010(r29)
00012d78: 00000000 nop
00012d7c: 03e00008 jr r31
00012d80: 27bd0018 addiu r29,r29,0x0018

0x12d84 (calls 0x12d4c r4 times)

00012d84: 27bdffe8 addiu r29,r29,0xffe8
00012d88: afb00010 sw r16,0x0010(r29)
00012d8c: 00808021 addu r16,r4,r0                  ;r16 = r4
00012d90: afbf0014 sw r31,0x0014(r29)
00012d94: 0c004b53 jal 0x00012d4c                  ;Jump to 0x00012d4c and link
00012d98: 2610ffff addiu r16,r16,0xffff            ;r16--
00012d9c: 1600fffd bne r16,r0,0x00012d94           ;if(r16 ≠ 0), loop to 0x00012d94
00012da0: 00000000 nop
00012da4: 8fbf0014 lw r31,0x0014(r29)
00012da8: 8fb00010 lw r16,0x0010(r29)
00012dac: 03e00008 jr r31
00012db0: 27bd0018 addiu r29,r29,0x0018

0x12db4

00012db4: 97820190 lhu r2,0x0190(r28)              ;r2 = (r28+0x190)
00012db8: 27bdffe8 addiu r29,r29,0xffe8
00012dbc: 30428000 andi r2,r2,0x8000               ;r2 &= 0x8000
00012dc0: 14400003 bne r2,r0,0x00012dd0            ;if(r2 ≠ 0), branch to 0x00012dd0
00012dc4: afbf0010 sw r31,0x0010(r29)
00012dc8: 0c01fdb3 jal 0x0007f6cc                  ;Jump to 0x0007f6cc and link
00012dcc: 00002021 addu r4,r0,r0                   ;r4 = 0
00012dd0: 938301b8 lbu r3,0x01b8(r28)              ;r3 = (r28+0x1b8)
00012dd4: 8f8201c0 lw r2,0x01c0(r28)               ;r2 = (r28+0x1c0)
00012dd8: 00000000 nop
00012ddc: 0043102a slt r2,r2,r3
00012de0: 1440fffb bne r2,r0,0x00012dd0            ;if(r2 < r3), loop to 0x00012dd0
00012de4: 00000000 nop
00012de8: 8f8201c0 lw r2,0x01c0(r28)               ;r2 = (r28+0x1c0)
00012dec: 00000000 nop
00012df0: a38201b9 sb r2,0x01b9(r28)               ;Store r2 to (r28+0x1b9)
00012df4: 304200ff andi r2,r2,0x00ff               ;r2 &= 0xFF
00012df8: 10400002 beq r2,r0,0x00012e04            ;if(r2 == 0), branch to 0x00012e04
00012dfc: 24020001 addiu r2,r0,0x0001              ;r2 = 1
00012e00: a38201b9 sb r2,0x01b9(r28)               ;Store 1 to (r28+0x1b9)
00012e04: 938201b9 lbu r2,0x01b9(r28)              ;r2 = (r28+0x1b9)
00012e08: 3c03800a lui r3,0x800a
00012e0c: 9063afa4 lbu r3,-0x505c(r3)              ;r3 = (0x8009AFA4)
00012e10: 24420001 addiu r2,r2,0x0001              ;r2++
00012e14: af8201d0 sw r2,0x01d0(r28)               ;Store r2 to (r28+0x1d0)
00012e18: 14600002 bne r3,r0,0x00012e24            ;if(r3 ≠ 0), branch to 0x00012e24
00012e1c: 24050002 addiu r5,r0,0x0002              ;r5 = 2
00012e20: 938501d0 lbu r5,0x01d0(r28)              ;r5 = (r28+0x1d0)
00012e24: 2402ffff addiu r2,r0,0xffff              ;r2 = -1
00012e28: 3c01800a lui r1,0x800a
00012e2c: a025afa3 sb r5,-0x505d(r1)               ;Store r5 to (0x8009AFA3)
00012e30: 3c01800a lui r1,0x800a
00012e34: a020afa4 sb r0,-0x505c(r1)               ;Store 0 to (0x8009AFA4)
00012e38: af8201c0 sw r2,0x01c0(r28)               ;Store r2 to (r28+0x1c0)
00012e3c: 0c01d05c jal 0x00074170                  ;Jump to 0x00074170 and link
00012e40: 00002021 addu r4,r0,r0                   ;r4 = 0
00012e44: 8f8201c4 lw r2,0x01c4(r28)               ;r2 = (r28+0x1c4)
00012e48: 8fbf0010 lw r31,0x0010(r29)
00012e4c: 24420001 addiu r2,r2,0x0001              ;r2++
00012e50: af8201c4 sw r2,0x01c4(r28)
00012e54: 03e00008 jr r31
00012e58: 27bd0018 addiu r29,r29,0x0018

0x1306c

0001306c: 27bdffe0 addiu r29,r29,0xffe0
00013070: afbf0018 sw r31,0x0018(r29)
00013074: afb10014 sw r17,0x0014(r29)
00013078: 0c005539 jal 0x000154e4                    ;Jump to 0x000154e4 and link
0001307c: afb00010 sw r16,0x0010(r29)                ;Store r16 to (r29+0x10)
00013080: 0c0104d0 jal 0x0x000154e4                  ;Jump to 0x0x000154e4 and link
00013084: 00008821 addu r17,r0,r0                    ;r17 = 0
00013088: 3c02800f lui r2,0x800f
0001308c: 24509db0 addiu r16,r2,0x9db0
00013090: 8e020000 lw r2,0x0000(r16)                 ;r2 = (0x800E6250)
00013094: 00000000 nop
00013098: 10400003 beq r2,r0,0x000130a8              ;if(r2 == 0), branch to 0x000130a8
0001309c: 00000000 nop
000130a0: 0040f809 jalr r2,r31                       ;Jump to r31 and link
000130a4: 00000000 nop
000130a8: 26310001 addiu r17,r17,0x0001              ;r17++
000130ac: 2a220004 slti r2,r17,0x0004
000130b0: 1440fff7 bne r2,r0,0x00013090              ;if(r17 < 4), loop to 0x00013090
000130b4: 26100004 addiu r16,r16,0x0004              ;r16 += 4
000130b8: 8f8201b0 lw r2,0x01b0(r28)                 ;r2 = (r28+0x1b0)
000130bc: 00000000 nop
000130c0: 10400003 beq r2,r0,0x000130d0              ;if(r2 == 0), branch to 0x000130d0
000130c4: 00000000 nop
000130c8: 0040f809 jalr r2,r31                       ;Jump to r31 and link
000130cc: 00000000 nop
000130d0: 8f8201a8 lw r2,0x01a8(r28)                 ;r2 = (r28+0x1a8)
000130d4: 8f83019c lw r3,0x019c(r28)                 ;r3 = (r28+0x19c)
000130d8: 00000000 nop
000130dc: 0043102a slt r2,r2,r3
000130e0: 1440000d bne r2,r0,0x00013118              ;if(r2 < r3), branch to 0x00013118
000130e4: 00000000 nop
000130e8: 8f8201b4 lw r2,0x01b4(r28)                 ;r2 = (r28+0x1b4)
000130ec: 8f8301cc lw r3,0x01cc(r28)                 ;r3 = (r28+0x1cc)
000130f0: 00000000 nop
000130f4: 0043102a slt r2,r2,r3
000130f8: 14400007 bne r2,r0,0x00013118              ;if(r2 < r3), branch to 0x00013118
000130fc: 00000000 nop
00013100: 8f820000 lw r2,0x0000(r28)                 ;r2 = r28
00013104: 00000000 nop
00013108: 2442ffff addiu r2,r2,0xffff                ;r2--
0001310c: af820000 sw r2,0x0000(r28)                 ;Store r2 in (r28)
00013110: 04410007 bgez r2,0x00013130                ;if(r2 ≥ 0), branch to 0x00013130
00013114: 00000000 nop
00013118: 8f82019c lw r2,0x019c(r28)                 ;r2 = (r28+0x19c)
0001311c: 8f8401cc lw r4,0x01cc(r28)                 ;r4 = (r28+0x1cc)
00013120: 2403003c addiu r3,r0,0x003c                ;r3 = 0x3C
00013124: af830000 sw r3,0x0000(r28)                 ;Store r3 to (r28)
00013128: af8201a8 sw r2,0x01a8(r28)                 ;Store r2 to (r28+0x1a8)
0001312c: af8401b4 sw r4,0x01b4(r28)                 ;Store r4 to (r28+0x1b4)
00013130: 0c005297 jal 0x00014a5c                    ;Jump to 0x00014a5c and link
00013134: 00002021 addu r4,r0,r0                     ;r4 = 0
00013138: 0c004db5 jal 0x000136d4                    ;Jump to 0x000136d4 and link
0001313c: 00000000 nop
00013140: 8fbf0018 lw r31,0x0018(r29)
00013144: 8fb10014 lw r17,0x0014(r29)
00013148: 8fb00010 lw r16,0x0010(r29)
0001314c: 03e00008 jr r31
00013150: 27bd0020 addiu r29,r29,0x0020

0x13154

00013154: 27bdffd0 addiu r29,r29,0xffd0
00013158: afb40028 sw r20,0x0028(r29)
0001315c: 0080a021 addu r20,r4,r0
00013160: 00002021 addu r4,r0,r0
00013164: afbf002c sw r31,0x002c(r29)
00013168: afb30024 sw r19,0x0024(r29)
0001316c: afb20020 sw r18,0x0020(r29)
00013170: afb1001c sw r17,0x001c(r29)
00013174: 0c01fcd4 jal 0x0007f350
00013178: afb00018 sw r16,0x0018(r29)
0001317c: 24040140 addiu r4,r0,0x0140
00013180: 240500f0 addiu r5,r0,0x00f0
00013184: 24060004 addiu r6,r0,0x0004
00013188: 24070001 addiu r7,r0,0x0001
0001318c: 0c021374 jal 0x00084dd0
00013190: afa00010 sw r0,0x0010(r29)
00013194: 00002021 addu r4,r0,r0
00013198: 00802821 addu r5,r4,r0
0001319c: 24060140 addiu r6,r0,0x0140
000131a0: 0c0215a8 jal 0x000856a0
000131a4: 00803821 addu r7,r4,r0
000131a8: 24130006 addiu r19,r0,0x0006
000131ac: 02808021 addu r16,r20,r0
000131b0: 24030001 addiu r3,r0,0x0001
000131b4: 3c028010 lui r2,0x8010
000131b8: 2442e048 addiu r2,r2,0xe048
000131bc: a38301a5 sb r3,0x01a5(r28)
000131c0: a38301c8 sb r3,0x01c8(r28)
000131c4: a38001a0 sb r0,0x01a0(r28)
000131c8: 3c01800a lui r1,0x800a
000131cc: a023b14c sb r3,-0x4eb4(r1)
000131d0: 3c01800a lui r1,0x800a
000131d4: a023b144 sb r3,-0x4ebc(r1)
000131d8: 3c01800a lui r1,0x800a
000131dc: a023b14b sb r3,-0x4eb5(r1)
000131e0: 3c01800a lui r1,0x800a
000131e4: a023b143 sb r3,-0x4ebd(r1)
000131e8: 3c01800a lui r1,0x800a
000131ec: a023b14a sb r3,-0x4eb6(r1)
000131f0: 3c01800a lui r1,0x800a
000131f4: a023b142 sb r3,-0x4ebe(r1)
000131f8: a0430018 sb r3,0x0018(r2)
000131fc: a0430016 sb r3,0x0016(r2)
00013200: a0430019 sb r3,0x0019(r2)
00013204: a043001a sb r3,0x001a(r2)
00013208: a043001b sb r3,0x001b(r2)
0001320c: 24020002 addiu r2,r0,0x0002
00013210: 02601821 addu r3,r19,r0
00013214: a3820198 sb r2,0x0198(r28)
00013218: 2402000c addiu r2,r0,0x000c
0001321c: a3830199 sb r3,0x0199(r28)
00013220: a382019a sb r2,0x019a(r28)
00013224: a383019b sb r3,0x019b(r28)
00013228: 24110003 addiu r17,r0,0x0003
0001322c: 2412514c addiu r18,r0,0x514c
00013230: 24020002 addiu r2,r0,0x0002
00013234: ae025110 sw r2,0x5110(r16)
00013238: 26020010 addiu r2,r16,0x0010
0001323c: ae025128 sw r2,0x5128(r16)
00013240: 2402000c addiu r2,r0,0x000c
00013244: ae025138 sw r2,0x5138(r16)
00013248: 26020110 addiu r2,r16,0x0110
0001324c: ae02513c sw r2,0x513c(r16)
00013250: 26024110 addiu r2,r16,0x4110
00013254: ae105114 sw r16,0x5114(r16)
00013258: ae135124 sw r19,0x5124(r16)
0001325c: ae13514c sw r19,0x514c(r16)
00013260: ae025150 sw r2,0x5150(r16)
00013264: 00002021 addu r4,r0,r0
00013268: 3225ffff andi r5,r17,0xffff
0001326c: 0c02176c jal 0x00085db0
00013270: 02123021 addu r6,r16,r18
00013274: 2631ffff addiu r17,r17,0xffff
00013278: 0621fffa bgez r17,0x00013264
0001327c: 2652ffec addiu r18,r18,0xffec
00013280: 26105160 addiu r16,r16,0x5160
00013284: 3402a2c0 ori r2,r0,0xa2c0
00013288: 02821021 addu r2,r20,r2
0001328c: 0202102a slt r2,r16,r2
00013290: 1440ffe6 bne r2,r0,0x0001322c
00013294: 24110003 addiu r17,r0,0x0003
00013298: 3c03800f lui r3,0x800f
0001329c: 3c028010 lui r2,0x8010
000132a0: 244be0a8 addiu r11,r2,0xe0a8
000132a4: 246a9d28 addiu r10,r3,0x9d28
000132a8: 89680003 lwl r8,0x0003(r11)
000132ac: 99680000 lwr r8,0x0000(r11)
000132b0: 89690007 lwl r9,0x0007(r11)
000132b4: 99690004 lwr r9,0x0004(r11)
000132b8: a9480003 swl r8,0x0003(r10)
000132bc: b9480000 swr r8,0x0000(r10)
000132c0: a9490007 swl r9,0x0007(r10)
000132c4: b9490004 swr r9,0x0004(r10)
000132c8: 8968000b lwl r8,0x000b(r11)
000132cc: 99680008 lwr r8,0x0008(r11)
000132d0: 8969000f lwl r9,0x000f(r11)
000132d4: 9969000c lwr r9,0x000c(r11)
000132d8: a948000b swl r8,0x000b(r10)
000132dc: b9480008 swr r8,0x0008(r10)
000132e0: a949000f swl r9,0x000f(r10)
000132e4: b949000c swr r9,0x000c(r10)
000132e8: 89680013 lwl r8,0x0013(r11)
000132ec: 99680010 lwr r8,0x0010(r11)
000132f0: 00000000 nop
000132f4: a9480013 swl r8,0x0013(r10)
000132f8: b9480010 swr r8,0x0010(r10)
000132fc: 0c021b72 jal 0x00086dc8
00013300: 00000000 nop
00013304: 0c0215d0 jal 0x00085740
00013308: 00000000 nop
0001330c: 00002021 addu r4,r0,r0
00013310: 0c02156c jal 0x000855b0
00013314: 00802821 addu r5,r4,r0
00013318: 0c021e34 jal 0x000878d0
0001331c: 2404012c addiu r4,r0,0x012c
00013320: 0c00f2fa jal 0x0003cbe8
00013324: 00000000 nop
00013328: 0c022dec jal 0x0008b7b0
0001332c: 24040001 addiu r4,r0,0x0001
00013330: 0c004db9 jal 0x000136e4
00013334: 00000000 nop
00013338: 0c023970 jal 0x0008e5c0                   ;PRNG seed update
0001333c: 24040056 addiu r4,r0,0x0056               ;r4 = 0x56
00013340: 8fbf002c lw r31,0x002c(r29)
00013344: 8fb40028 lw r20,0x0028(r29)
00013348: 8fb30024 lw r19,0x0024(r29)
0001334c: 8fb20020 lw r18,0x0020(r29)
00013350: 8fb1001c lw r17,0x001c(r29)
00013354: 8fb00018 lw r16,0x0018(r29)
00013358: 03e00008 jr r31
0001335c: 27bd0030 addiu r29,r29,0x0030

0x1352c

0001352c: 27bdffd8 addiu r29,r29,0xffd8
00013530: 3c02800f lui r2,0x800f
00013534: afb20018 sw r18,0x0018(r29)
00013538: 24522848 addiu r18,r2,0x2848
0001353c: 84422848 lh r2,0x2848(r2)
00013540: afbf0020 sw r31,0x0020(r29)
00013544: afb3001c sw r19,0x001c(r29)
00013548: afb10014 sw r17,0x0014(r29)
0001354c: afb00010 sw r16,0x0010(r29)
00013550: 86440004 lh r4,0x0004(r18)
00013554: 0c0219dc jal 0x00086770
00013558: 00028823 subu r17,r0,r2
0001355c: 02220018 mult r17,r2
00013560: 00001012 mflo r2
00013564: 04410002 bgez r2,0x00013570
00013568: 00000000 nop
0001356c: 24420fff addiu r2,r2,0x0fff
00013570: 86440004 lh r4,0x0004(r18)
00013574: 0c0219a8 jal 0x000866a0
00013578: 00028303 sra r16,r2,0x0c
0001357c: 02220018 mult r17,r2
00013580: 00001012 mflo r2
00013584: 04410002 bgez r2,0x00013590
00013588: 00000000 nop
0001358c: 24420fff addiu r2,r2,0x0fff
00013590: 86440002 lh r4,0x0002(r18)
00013594: 0c0219a8 jal 0x000866a0
00013598: 00029b03 sra r19,r2,0x0c
0001359c: 02020018 mult r16,r2
000135a0: 00003812 mflo r7
000135a4: 04e10002 bgez r7,0x000135b0
000135a8: 00000000 nop
000135ac: 24e70fff addiu r7,r7,0x0fff
000135b0: 86440002 lh r4,0x0002(r18)
000135b4: 0c0219dc jal 0x00086770
000135b8: 00078b03 sra r17,r7,0x0c
000135bc: 02020018 mult r16,r2
000135c0: 00002812 mflo r5
000135c4: 04a10002 bgez r5,0x000135d0
000135c8: 02402021 addu r4,r18,r0
000135cc: 24a50fff addiu r5,r5,0x0fff
000135d0: 00052b03 sra r5,r5,0x0c
000135d4: 02603021 addu r6,r19,r0
000135d8: 0c004d38 jal 0x000134e0
000135dc: 02203821 addu r7,r17,r0
000135e0: 8fbf0020 lw r31,0x0020(r29)
000135e4: 8fb3001c lw r19,0x001c(r29)
000135e8: 8fb20018 lw r18,0x0018(r29)
000135ec: 8fb10014 lw r17,0x0014(r29)
000135f0: 8fb00010 lw r16,0x0010(r29)
000135f4: 03e00008 jr r31
000135f8: 27bd0028 addiu r29,r29,0x0028

0x135fc

000135fc: 27bdffd8 addiu r29,r29,0xffd8
00013600: 3c02800f lui r2,0x800f
00013604: afb20018 sw r18,0x0018(r29)
00013608: 24522848 addiu r18,r2,0x2848
0001360c: 84422848 lh r2,0x2848(r2)
00013610: afbf0020 sw r31,0x0020(r29)
00013614: afb3001c sw r19,0x001c(r29)
00013618: afb10014 sw r17,0x0014(r29)
0001361c: afb00010 sw r16,0x0010(r29)
00013620: 86440002 lh r4,0x0002(r18)
00013624: 0c0219dc jal 0x00086770
00013628: 00028823 subu r17,r0,r2
0001362c: 02220018 mult r17,r2
00013630: 00001012 mflo r2
00013634: 04410002 bgez r2,0x00013640
00013638: 00000000 nop
0001363c: 24420fff addiu r2,r2,0x0fff
00013640: 86440002 lh r4,0x0002(r18)
00013644: 0c0219a8 jal 0x000866a0
00013648: 00028303 sra r16,r2,0x0c
0001364c: 02220018 mult r17,r2
00013650: 00001012 mflo r2
00013654: 04410002 bgez r2,0x00013660
00013658: 00000000 nop
0001365c: 24420fff addiu r2,r2,0x0fff
00013660: 86440004 lh r4,0x0004(r18)
00013664: 00029b03 sra r19,r2,0x0c
00013668: 0c0219a8 jal 0x000866a0
0001366c: 24840400 addiu r4,r4,0x0400
00013670: 02020018 mult r16,r2
00013674: 00003012 mflo r6
00013678: 04c10002 bgez r6,0x00013684
0001367c: 00000000 nop
00013680: 24c60fff addiu r6,r6,0x0fff
00013684: 86440004 lh r4,0x0004(r18)
00013688: 00068b03 sra r17,r6,0x0c
0001368c: 0c0219dc jal 0x00086770
00013690: 24840400 addiu r4,r4,0x0400
00013694: 02020018 mult r16,r2
00013698: 00002812 mflo r5
0001369c: 04a10002 bgez r5,0x000136a8
000136a0: 02402021 addu r4,r18,r0
000136a4: 24a50fff addiu r5,r5,0x0fff
000136a8: 00052b03 sra r5,r5,0x0c
000136ac: 02203021 addu r6,r17,r0
000136b0: 0c004d38 jal 0x000134e0
000136b4: 02603821 addu r7,r19,r0
000136b8: 8fbf0020 lw r31,0x0020(r29)
000136bc: 8fb3001c lw r19,0x001c(r29)
000136c0: 8fb20018 lw r18,0x0018(r29)
000136c4: 8fb10014 lw r17,0x0014(r29)
000136c8: 8fb00010 lw r16,0x0010(r29)
000136cc: 03e00008 jr r31
000136d0: 27bd0028 addiu r29,r29,0x0028
000136d4: 27bdfff0 addiu r29,r29,0xfff0
000136d8: 27bd0010 addiu r29,r29,0x0010
000136dc: 03e00008 jr r31
000136e0: 00000000 nop

0x136e4

000136e4: 27bdffd8 addiu r29,r29,0xffd8
000136e8: 3c04801e lui r4,0x801e
000136ec: 2484c000 addiu r4,r4,0xc000
000136f0: afbf0020 sw r31,0x0020(r29)
000136f4: afb3001c sw r19,0x001c(r29)
000136f8: afb20018 sw r18,0x0018(r29)
000136fc: afb10014 sw r17,0x0014(r29)
00013700: 0c004e26 jal 0x00013898
00013704: afb00010 sw r16,0x0010(r29)
00013708: 3c050080 lui r5,0x0080
0001370c: 34a58080 ori r5,r5,0x8080
00013710: 3c070018 lui r7,0x0018
00013714: 34e70018 ori r7,r7,0x0018
00013718: 3c0600fc lui r6,0x00fc
0001371c: 34c60230 ori r6,r6,0x0230
00013720: 00009821 addu r19,r0,r0
00013724: 3c02800f lui r2,0x800f
00013728: 24519ea8 addiu r17,r2,0x9ea8
0001372c: 3c028009 lui r2,0x8009
00013730: 2452078c addiu r18,r2,0x078c
00013734: 3c028001 lui r2,0x8001
00013738: 244237e4 addiu r2,r2,0x37e4
0001373c: 3c04800f lui r4,0x800f
00013740: 24839df0 addiu r3,r4,0x9df0
00013744: 3c01800a lui r1,0x800a
00013748: ac22b10c sw r2,-0x4ef4(r1)
0001374c: 24020120 addiu r2,r0,0x0120
00013750: a4620004 sh r2,0x0004(r3)
00013754: 240200d0 addiu r2,r0,0x00d0
00013758: a4620006 sh r2,0x0006(r3)
0001375c: 2402000b addiu r2,r0,0x000b
00013760: a462000c sh r2,0x000c(r3)
00013764: 3c020800 lui r2,0x0800
00013768: ac829df0 sw r2,-0x6210(r4)
0001376c: 3402a000 ori r2,r0,0xa000
00013770: a38001d8 sb r0,0x01d8(r28)
00013774: ac650014 sw r5,0x0014(r3)
00013778: a462000e sh r2,0x000e(r3)
0001377c: ac670008 sw r7,0x0008(r3)
00013780: ac660010 sw r6,0x0010(r3)
00013784: 8e500000 lw r16,0x0000(r18)
00013788: 00000000 nop
0001378c: 1200000e beq r16,r0,0x000137c8
00013790: 02202021 addu r4,r17,r0
00013794: 0c004e3d jal 0x000138f4
00013798: 02002821 addu r5,r16,r0
0001379c: 3c048001 lui r4,0x8001
000137a0: 24840038 addiu r4,r4,0x0038
000137a4: 02002821 addu r5,r16,r0
000137a8: 8e260000 lw r6,0x0000(r17)
000137ac: 26310004 addiu r17,r17,0x0004
000137b0: 26520004 addiu r18,r18,0x0004
000137b4: 0c023a1c jal 0x0008e870
000137b8: 26730001 addiu r19,r19,0x0001
000137bc: 2a620007 slti r2,r19,0x0007
000137c0: 1440fff0 bne r2,r0,0x00013784
000137c4: 00000000 nop
000137c8: 8fbf0020 lw r31,0x0020(r29)
000137cc: 8fb3001c lw r19,0x001c(r29)
000137d0: 8fb20018 lw r18,0x0018(r29)
000137d4: 8fb10014 lw r17,0x0014(r29)
000137d8: 8fb00010 lw r16,0x0010(r29)
000137dc: 03e00008 jr r31
000137e0: 27bd0028 addiu r29,r29,0x0028

Fusion checking routine

Used to check the result of a fusion. r4 and r5 are the first and second card IDs of the fusees. The game stores the table of fusions in order of first card, then second card. The first part of the table are offsets to tell the code where to start looking (0 signifies no fusions so immediate return). Now, the natural way to store this would be (2 bytes for second material) (2 bytes for result). However, the more significant byte will always be 00, 01, or 02. This wastes 6 out of 8 bits, so what the game does is take these 2 bits for both cards, as well as for both cards for the next fusions, and puts them together into one byte. Decoding this is where all the bit shifts and & 0x0300 come from.

The issue is that this means the code traverses the fusions in twos, so if there are an odd number of fusions then the code checks an "extra fusion". The table isn't padded and the code doesn't check for this, so sometimes the result is an extra glitch fusion (of which there are 15 in total).

00019a60: 3c028018 lui r2,0x8018
00019a64: 2443c2d8 addiu r3,r2,0xc2d8
00019a68: 00a4102a slt r2,r5,r4
00019a6c: 10400003 beq r2,r0,0x00019a7c             ;if r5 < r4, swap them so the lower card is first
00019a70: 00a01021 addu r2,r5,r0
00019a74: 00802821 addu r5,r4,r0
00019a78: 00402021 addu r4,r2,r0
00019a7c: 00041040 sll r2,r4,0x01
00019a80: 00431021 addu r2,r2,r3
00019a84: 94420000 lhu r2,0x0000(r2)                ;r2 = offset to find the fusions of the first card
00019a88: 00000000 nop
00019a8c: 14400007 bne r2,r0,0x00019aac             ;0 signifies no fusions, so if r2 is 0 then exit
00019a90: 00432021 addu r4,r2,r3
00019a94: 03e00008 jr r31
00019a98: 00001021 addu r2,r0,r0
00019a9c: 90830002 lbu r3,0x0002(r4)
00019aa0: 30420300 andi r2,r2,0x0300
00019aa4: 03e00008 jr r31
00019aa8: 00431025 or r2,r2,r3
00019aac: 90880000 lbu r8,0x0000(r4)                ;r8 = number of fusions with first card (if under 256)
00019ab0: 00000000 nop
00019ab4: 15000004 bne r8,r0,0x00019ac8             ;if r8 is 0, then the next byte x gives us the number of fusions as 511 - x
00019ab8: 240201ff addiu r2,r0,0x01ff
00019abc: 90830001 lbu r3,0x0001(r4)
00019ac0: 24840001 addiu r4,r4,0x0001
00019ac4: 00434023 subu r8,r2,r3
00019ac8: 24840001 addiu r4,r4,0x0001
00019acc: 24870003 addiu r7,r4,0x0003
00019ad0: 90860000 lbu r6,0x0000(r4)                ;byte that we need to unpack with shifts and & 0x0300
00019ad4: 90e3fffe lbu r3,-0x0002(r7)
00019ad8: 00061200 sll r2,r6,0x08
00019adc: 30420300 andi r2,r2,0x0300
00019ae0: 00431025 or r2,r2,r3
00019ae4: 1045ffed beq r2,r5,0x00019a9c
00019ae8: 00061180 sll r2,r6,0x06
00019aec: 00061100 sll r2,r6,0x04
00019af0: 90e30000 lbu r3,0x0000(r7)
00019af4: 30420300 andi r2,r2,0x0300
00019af8: 00431025 or r2,r2,r3
00019afc: 10450006 beq r2,r5,0x00019b18
00019b00: 24e70005 addiu r7,r7,0x0005
00019b04: 2508fffe addiu r8,r8,0xfffe               ;r8 -= 2
00019b08: 1d00fff1 bgtz r8,0x00019ad0
00019b0c: 24840005 addiu r4,r4,0x0005
00019b10: 03e00008 jr r31
00019b14: 00001021 addu r2,r0,r0
00019b18: 00061080 sll r2,r6,0x02
00019b1c: 90830004 lbu r3,0x0004(r4)
00019b20: 30420300 andi r2,r2,0x0300
00019b24: 03e00008 jr r31
00019b28: 00431025 or r2,r2,r3

YOU WIN PRNG

  • Only run before the animation starts, so no matter when you stop the animation, the card drop will always be the same.
000211d4: 9382025d lbu r2,0x025d(r28)
000211d8: 00000000 nop
000211dc: 000218c0 sll r3,r2,0x03             ;r3 = r2 << 3
000211e0: 00621823 subu r3,r3,r2              ;r3 -= r2
000211e4: 00031880 sll r3,r3,0x02             ;r3 << 2
000211e8: 3c028009 lui r2,0x8009
000211ec: 24420960 addiu r2,r2,0x0960         ;r2 = 0x80090960
000211f0: 02621021 addu r2,r19,r2             ;r2 += r19
000211f4: 00628821 addu r17,r3,r2             ;r17 = r3 + r2
000211f8: ae800000 sw r0,0x0000(r20)
000211fc: 92220002 lbu r2,0x0002(r17)         ;r2 = (r17+0x2)
00021200: 00000000 nop
00021204: 1040003c beq r2,r0,0x000212f8       ;if no letter to load, branch at the end of the function
00021208: 00000000 nop
0002120c: 0c01000b jal 0x0004002c
00021210: 00000000 nop
00021214: 00402021 addu r4,r2,r0              ;r4 = r2 + r0
00021218: 0c01002b jal 0x000400ac
0002121c: 24050002 addiu r5,r0,0x0002         ;r5 = r0 + 0x2
00021220: 00408021 addu r16,r2,r0             ;r16 = r2 + r0
00021224: 02002021 addu r4,r16,r0
00021228: 92250000 lbu r5,0x0000(r17)
0002122c: 92260001 lbu r6,0x0001(r17)
00021230: 9382025d lbu r2,0x025d(r28)
00021234: 00003821 addu r7,r0,r0
00021238: afa20010 sw r2,0x0010(r29)
0002123c: 92230002 lbu r3,0x0002(r17)
00021240: 24020011 addiu r2,r0,0x0011
00021244: afa20018 sw r2,0x0018(r29)
00021248: 24020009 addiu r2,r0,0x0009
0002124c: afa2001c sw r2,0x001c(r29)
00021250: 3c02801b lui r2,0x801b
00021254: 2442f000 addiu r2,r2,0xf000
00021258: afa20020 sw r2,0x0020(r29)
0002125c: 0c010a2a jal 0x000428a8              ;Loads YOU WIN letters
00021260: afa30014 sw r3,0x0014(r29)
00021264: 92020069 lbu r2,0x0069(r16)
00021268: 00000000 nop
0002126c: 2c42001a sltiu r2,r2,0x001a
00021270: 14400005 bne r2,r0,0x00021288
00021274: 00000000 nop
00021278: 96020040 lhu r2,0x0040(r16)
0002127c: 00000000 nop
00021280: 24420010 addiu r2,r2,0x0010
00021284: a6020040 sh r2,0x0040(r16)
00021288: 96020008 lhu r2,0x0008(r16)
0002128c: 02002021 addu r4,r16,r0
00021290: 34420028 ori r2,r2,0x0028
00021294: a6020008 sh r2,0x0008(r16)
00021298: 8e020004 lw r2,0x0004(r16)
0002129c: 3c035000 lui r3,0x5000
000212a0: 00431025 or r2,r2,r3
000212a4: ae020004 sw r2,0x0004(r16)
000212a8: 92230003 lbu r3,0x0003(r17)
000212ac: 24020018 addiu r2,r0,0x0018          ;r2 = r0 + 0x18
000212b0: a602004a sh r2,0x004a(r16)
000212b4: 0c010a46 jal 0x00042918
000212b8: a6030048 sh r3,0x0048(r16)
000212bc: 8e020030 lw r2,0x0030(r16)
000212c0: 0c023964 jal 0x0008e590              ;PRNG advance
000212c4: ae02002c sw r2,0x002c(r16)
000212c8: 24041000 addiu r4,r0,0x1000          ;r4 = r0 + 0x1000
000212cc: 3042003f andi r2,r2,0x003f           ;r2 &= 0x3F
000212d0: 24420140 addiu r2,r2,0x0140          ;r2 += 0x140
000212d4: 0c00d63f jal 0x000358fc              ;Return a PRN in r2
000212d8: a6020028 sh r2,0x0028(r16)
000212dc: a602002a sh r2,0x002a(r16)
000212e0: 24020001 addiu r2,r0,0x0001          ;r2 = r0 + 1
000212e4: a202006c sb r2,0x006c(r16)
000212e8: 3c028002 lui r2,0x8002
000212ec: 24420d4c addiu r2,r2,0x0d4c           ;r2 += 0xD4C
000212f0: ae020024 sw r2,0x0024(r16)
000212f4: ae900000 sw r16,0x0000(r20)
000212f8: 2694000c addiu r20,r20,0x000c
000212fc: 26520001 addiu r18,r18,0x0001
00021300: 2a420007 slti r2,r18,0x0007
00021304: 1440ffa7 bne r2,r0,0x000211a4         ;Loop 7 times
00021308: 26730004 addiu r19,r19,0x0004
0002130c: 08008517 j 0x0002145c
00021310: 00000000 nop

0x21430 - Card drop related

00021430: 14400004 bne r2,r0,0x00021444
00021434: 3c02800f lui r2,0x800f
00021438: 34a20080 ori r2,r5,0x0080
0002143c: a382026c sb r2,0x026c(r28)
00021440: 3c02800f lui r2,0x800f
00021444: 90429ece lbu r2,-0x6132(r2)
00021448: 00000000 nop
0002144c: 30420080 andi r2,r2,0x0080
00021450: 14400002 bne r2,r0,0x0002145c
00021454: 2402000d addiu r2,r0,0x000d
00021458: a7820332 sh r2,0x0332(r28)
0002145c: 8fbf0040 lw r31,0x0040(r29)
00021460: 8fb5003c lw r21,0x003c(r29)
00021464: 8fb40038 lw r20,0x0038(r29)
00021468: 8fb30034 lw r19,0x0034(r29)
0002146c: 8fb20030 lw r18,0x0030(r29)
00021470: 8fb1002c lw r17,0x002c(r29)
00021474: 8fb00028 lw r16,0x0028(r29)
00021478: 03e00008 jr r31
0002147c: 27bd0048 addiu r29,r29,0x0048

0x21558 (Calculates the change to rank score based on a statistic)

00021558: 00041880 sll r3,r4,0x02            ;...
0002155c: 00641821 addu r3,r3,r4             ;...
00021560: 00031880 sll r3,r3,0x02            ;r3 = r4 × 20
00021564: 3c028018 lui r2,0x8018
00021568: 244298a8 addiu r2,r2,0x98a8        ;r2 = 0x801798a8
0002156c: 00621821 addu r3,r3,r2             ;r3 += r2
00021570: 84620000 lh r2,0x0000(r3)          ;r2 = (r3)
00021574: 00000000 nop
00021578: 00a2102a slt r2,r5,r2
0002157c: 14400003 bne r2,r0,0x0002158c      ;if(r5 ≥ r2), branch to 0x2158c
00021580: 00000000 nop
00021584: 0800855c j 0x00021570              ;while(r5 < r2), loop to 0x21570
00021588: 24630004 addiu r3,r3,0x0004        ;r3 += 4
0002158c: 84620002 lh r2,0x0002(r3)          ;r2 = (r3+0x2)
00021590: 03e00008 jr r31
00021594: 00000000 nop

0x21598 (Calculates rank scores)

00021598: 27bdffd0 addiu r29,r29,0xffd0
0002159c: 3c02800f lui r2,0x800f
000215a0: afb3001c sw r19,0x001c(r29)
000215a4: 24539ff0 addiu r19,r2,0x9ff0
000215a8: 24020044 addiu r2,r0,0x0044
000215ac: 8f8402e0 lw r4,0x02e0(r28)
000215b0: 3c03801d lui r3,0x801d
000215b4: afbf0028 sw r31,0x0028(r29)
000215b8: afb50024 sw r21,0x0024(r29)
000215bc: afb40020 sw r20,0x0020(r29)
000215c0: afb20018 sw r18,0x0018(r29)
000215c4: afb10014 sw r17,0x0014(r29)
000215c8: afb00010 sw r16,0x0010(r29)
000215cc: a0820034 sb r2,0x0034(r4)
000215d0: 24020040 addiu r2,r0,0x0040              ;r2 = 0x40
000215d4: a0820035 sb r2,0x0035(r4)
000215d8: 24020045 addiu r2,r0,0x0045              ;r2 = 0x45
000215dc: a0820036 sb r2,0x0036(r4)
000215e0: 9382025d lbu r2,0x025d(r28)
000215e4: 24745608 addiu r20,r3,0x5608             ;r20 = 0x801d5608
000215e8: 00021140 sll r2,r2,0x05                  ;r2 << 5
000215ec: 00531021 addu r2,r2,r19                  ;r2 += r19
000215f0: 80430000 lb r3,0x0000(r2)                ;r3 = (r2)
000215f4: 24020028 addiu r2,r0,0x0028              ;r2 = 40
000215f8: 14620002 bne r3,r2,0x00021604            ;if(r3 ≠ r2), branch to 0x21604
000215fc: 24020042 addiu r2,r0,0x0042              ;r2 = 0x42
00021600: a0820035 sb r2,0x0035(r4)
00021604: 9382025d lbu r2,0x025d(r28)              ;r2 = (r28+0x25d)
00021608: 00000000 nop
0002160c: 00021140 sll r2,r2,0x05                  ;r2 << 5
00021610: 00531021 addu r2,r2,r19                  ;r2 += r19
00021614: 80430000 lb r3,0x0000(r2)                ;r3 = (r2)
00021618: 2402ffd8 addiu r2,r0,0xffd8              ;r2 = -40
0002161c: 14620003 bne r3,r2,0x0002162c            ;if(r3 ≠ r2), branch to 0x2162C
00021620: 0000a821 addu r21,r0,r0                  ;r21 = 0
00021624: 24020041 addiu r2,r0,0x0041              ;r2 = 0x41
00021628: a0820035 sb r2,0x0035(r4)
0002162c: 26920078 addiu r18,r20,0x0078            ;r18 = r20 + 0x78
00021630: 26710001 addiu r17,r19,0x0001            ;r17 = r19 + 1
00021634: 00808021 addu r16,r4,r0                  ;r16 = r4
00021638: 24020032 addiu r2,r0,0x0032              ;r2 = 50
0002163c: ae020030 sw r2,0x0030(r16)
00021640: ae02002c sw r2,0x002c(r16)
00021644: 82630000 lb r3,0x0000(r19)               ;r3 = (r19)
00021648: 8e02002c lw r2,0x002c(r16)               ;r2 = (r16+0x2c)
0002164c: 00000000 nop
00021650: 00431021 addu r2,r2,r3                   ;r2 += r3
00021654: ae02002c sw r2,0x002c(r16)
00021658: 82250017 lb r5,0x0017(r17)               ;r5 = (r17+0x17)
0002165c: 24040006 addiu r4,r0,0x0006              ;r4 = 6
00021660: 0c008556 jal 0x00021558                  ;jump to 0x21558 and link
00021664: ae850000 sw r5,0x0000(r20)
00021668: 8e03002c lw r3,0x002c(r16)               ;r3 = (r16+0x2c)
0002166c: 00000000 nop
00021670: 00621821 addu r3,r3,r2                   ;r3 += r2
00021674: ae03002c sw r3,0x002c(r16)
00021678: 86250013 lh r5,0x0013(r17)
0002167c: 24040007 addiu r4,r0,0x0007              ;r4 = 7
00021680: 0c008556 jal 0x00021558                  ;jump to 0x21558 and link
00021684: ae45ff90 sw r5,-0x0070(r18)
00021688: 8e03002c lw r3,0x002c(r16)
0002168c: 00000000 nop
00021690: 00621821 addu r3,r3,r2
00021694: ae03002c sw r3,0x002c(r16)
00021698: 8622000d lh r2,0x000d(r17)
0002169c: 00000000 nop
000216a0: ae42ff98 sw r2,-0x0068(r18)
000216a4: 9222000a lbu r2,0x000a(r17)
000216a8: 00000000 nop
000216ac: ae42ffa0 sw r2,-0x0060(r18)
000216b0: 92250001 lbu r5,0x0001(r17)
000216b4: 24040001 addiu r4,r0,0x0001              ;r4 = 1
000216b8: 0c008556 jal 0x00021558                  ;jump to 0x21558 and link
000216bc: ae45ffa8 sw r5,-0x0058(r18)
000216c0: 8e03002c lw r3,0x002c(r16)
000216c4: 00000000 nop
000216c8: 00621821 addu r3,r3,r2
000216cc: ae03002c sw r3,0x002c(r16)
000216d0: 8622000f lh r2,0x000f(r17)
000216d4: 00000000 nop
000216d8: ae42ffb0 sw r2,-0x0050(r18)
000216dc: 9222000b lbu r2,0x000b(r17)
000216e0: 00000000 nop
000216e4: ae42ffb8 sw r2,-0x0048(r18)
000216e8: 92250002 lbu r5,0x0002(r17)
000216ec: 24040002 addiu r4,r0,0x0002              ;r4 = 2
000216f0: 0c008556 jal 0x00021558                  ;jump to 0x21558 and link
000216f4: ae45ffc0 sw r5,-0x0040(r18)
000216f8: 8e03002c lw r3,0x002c(r16)
000216fc: 00000000 nop
00021700: 00621821 addu r3,r3,r2
00021704: ae03002c sw r3,0x002c(r16)
00021708: 92220006 lbu r2,0x0006(r17)
0002170c: 00000000 nop
00021710: ae42ffc8 sw r2,-0x0038(r18)
00021714: 92250003 lbu r5,0x0003(r17)
00021718: 24040003 addiu r4,r0,0x0003              ;r4 = 3
0002171c: 0c008556 jal 0x00021558                  ;jump to 0x21558 and link
00021720: ae45ffd0 sw r5,-0x0030(r18)
00021724: 8e03002c lw r3,0x002c(r16)
00021728: 00000000 nop
0002172c: 00621821 addu r3,r3,r2
00021730: ae03002c sw r3,0x002c(r16)
00021734: 92250007 lbu r5,0x0007(r17)
00021738: 24040008 addiu r4,r0,0x0008              ;r4 = 8
0002173c: 0c008556 jal 0x00021558                  ;jump to 0x21558 and link
00021740: ae45ffd8 sw r5,-0x0028(r18)
00021744: 8e03002c lw r3,0x002c(r16)
00021748: 00000000 nop
0002174c: 00621821 addu r3,r3,r2
00021750: ae03002c sw r3,0x002c(r16)
00021754: 92250008 lbu r5,0x0008(r17)
00021758: 24040009 addiu r4,r0,0x0009              ;r4 = 9
0002175c: 0c008556 jal 0x00021558                  ;jump to 0x21558 and link
00021760: ae45ffe0 sw r5,-0x0020(r18)
00021764: 8e03002c lw r3,0x002c(r16)
00021768: 26b50001 addiu r21,r21,0x0001
0002176c: 00621821 addu r3,r3,r2
00021770: ae03002c sw r3,0x002c(r16)
00021774: 92220009 lbu r2,0x0009(r17)
00021778: 26730020 addiu r19,r19,0x0020
0002177c: ae42ffe8 sw r2,-0x0018(r18)
00021780: 92250004 lbu r5,0x0004(r17)
00021784: 24040004 addiu r4,r0,0x0004              ;r4 = 4
00021788: 0c008556 jal 0x00021558                  ;jump to 0x21558 and link
0002178c: ae45fff0 sw r5,-0x0010(r18)
00021790: 8e03002c lw r3,0x002c(r16)
00021794: 26940004 addiu r20,r20,0x0004
00021798: 00621821 addu r3,r3,r2
0002179c: ae03002c sw r3,0x002c(r16)
000217a0: 92250005 lbu r5,0x0005(r17)
000217a4: 24040005 addiu r4,r0,0x0005              ;r4 = 5
000217a8: 0c008556 jal 0x00021558                  ;jump to 0x21558 and link
000217ac: ae45fff8 sw r5,-0x0008(r18)
000217b0: 8e03002c lw r3,0x002c(r16)               ;r3 = (r16+0x2c)
000217b4: 00002021 addu r4,r0,r0                   ;r4 = 0
000217b8: 00621821 addu r3,r3,r2                   ;r3 += r2
000217bc: ae03002c sw r3,0x002c(r16)
000217c0: 92250000 lbu r5,0x0000(r17)              ;r5 = (r17)
000217c4: 26310020 addiu r17,r17,0x0020            ;r17 += 0x20
000217c8: 0c008556 jal 0x00021558                  ;jump to 0x21558 and link
000217cc: ae450000 sw r5,0x0000(r18)
000217d0: 8e03002c lw r3,0x002c(r16)               ;r3 = (r16+0x2c)
000217d4: 26520004 addiu r18,r18,0x0004            ;r18 += 4
000217d8: 00621821 addu r3,r3,r2                   ;r3 += r2
000217dc: ae03002c sw r3,0x002c(r16)
000217e0: 2aa20002 slti r2,r21,0x0002
000217e4: 1440ff97 bne r2,r0,0x00021644            ;if(r21<2), loop to 0x21644
000217e8: 26100004 addiu r16,r16,0x0004            ;r16 += 4
000217ec: 8fbf0028 lw r31,0x0028(r29)
000217f0: 8fb50024 lw r21,0x0024(r29)
000217f4: 8fb40020 lw r20,0x0020(r29)
000217f8: 8fb3001c lw r19,0x001c(r29)
000217fc: 8fb20018 lw r18,0x0018(r29)
00021800: 8fb10014 lw r17,0x0014(r29)
00021804: 8fb00010 lw r16,0x0010(r29)
00021808: 03e00008 jr r31
0002180c: 27bd0030 addiu r29,r29,0x0030

Duel End routine

000218f0: 27bdffc0 addiu r29,r29,0xffc0
000218f4: 3c02800f lui r2,0x800f
000218f8: 24422848 addiu r2,r2,0x2848
000218fc: afbf0038 sw r31,0x0038(r29)
00021900: afb30034 sw r19,0x0034(r29)
00021904: afb20030 sw r18,0x0030(r29)
00021908: afb1002c sw r17,0x002c(r29)
0002190c: afb00028 sw r16,0x0028(r29)
00021910: 94430002 lhu r3,0x0002(r2)
00021914: 00000000 nop
00021918: 24630002 addiu r3,r3,0x0002
0002191c: 0c004d4b jal 0x0001352c              ;
00021920: a4430002 sh r3,0x0002(r2)
00021924: 97830332 lhu r3,0x0332(r28)
00021928: 00000000 nop
0002192c: 30628000 andi r2,r3,0x8000
00021930: 1440013f bne r2,r0,0x00021e30
00021934: 30624000 andi r2,r3,0x4000
00021938: 34628000 ori r2,r3,0x8000
0002193c: a7820332 sh r2,0x0332(r28)
00021940: 0c005721 jal 0x00015c84              ;
00021944: 00000000 nop
00021948: 24040080 addiu r4,r0,0x0080
0002194c: 0c0056f6 jal 0x00015bd8              ;
00021950: 24050002 addiu r5,r0,0x0002
00021954: 3c028018 lui r2,0x8018
00021958: 244299d8 addiu r2,r2,0x99d8
0002195c: af8202e0 sw r2,0x02e0(r28)
00021960: 3c02801d lui r2,0x801d
00021964: 9383025d lbu r3,0x025d(r28)
00021968: 24040004 addiu r4,r0,0x0004
0002196c: a0445708 sb r4,0x5708(r2)
00021970: 24425708 addiu r2,r2,0x5708
00021974: 3c01800a lui r1,0x800a
00021978: a420b148 sh r0,-0x4eb8(r1)
0002197c: 3c01800a lui r1,0x800a
00021980: a420b146 sh r0,-0x4eba(r1)
00021984: 3c01800a lui r1,0x800a
00021988: a020b34e sb r0,-0x4cb2(r1)
0002198c: 3c01800a lui r1,0x800a
00021990: a020b355 sb r0,-0x4cab(r1)
00021994: a0440001 sb r4,0x0001(r2)
00021998: 00621821 addu r3,r3,r2
0002199c: a0600000 sb r0,0x0000(r3)
000219a0: 9382025d lbu r2,0x025d(r28)
000219a4: 00000000 nop
000219a8: 1040000c beq r2,r0,0x000219dc
000219ac: 240472e1 addiu r4,r0,0x72e1
000219b0: 240472f1 addiu r4,r0,0x72f1
000219b4: 3c02800a lui r2,0x800a
000219b8: 9042b361 lbu r2,-0x4c9f(r2)
000219bc: 24030001 addiu r3,r0,0x0001
000219c0: 3c01800a lui r1,0x800a
000219c4: a023b355 sb r3,-0x4cab(r1)
000219c8: 00021600 sll r2,r2,0x18
000219cc: 00021603 sra r2,r2,0x18
000219d0: 24428328 addiu r2,r2,0x8328
000219d4: 3c01800a lui r1,0x800a
000219d8: a422b32e sh r2,-0x4cd2(r1)
000219dc: 0c00ffc2 jal 0x0003ff08              ;
000219e0: 00000000 nop
000219e4: 3c02800a lui r2,0x800a
000219e8: 8042b360 lb r2,-0x4ca0(r2)
000219ec: 00000000 nop
000219f0: 0441000d bgez r2,0x00021a28
000219f4: 00000000 nop
000219f8: 3c02800a lui r2,0x800a
000219fc: 8042b361 lb r2,-0x4c9f(r2)
00021a00: 00000000 nop
00021a04: 04410008 bgez r2,0x00021a28
00021a08: 24030001 addiu r3,r0,0x0001
00021a0c: 3c02800a lui r2,0x800a
00021a10: 9042b355 lbu r2,-0x4cab(r2)
00021a14: 3c01800a lui r1,0x800a
00021a18: a023b34e sb r3,-0x4cb2(r1)
00021a1c: 24420002 addiu r2,r2,0x0002
00021a20: 3c01800a lui r1,0x800a
00021a24: a022b355 sb r2,-0x4cab(r1)
00021a28: 8f8202e0 lw r2,0x02e0(r28)
00021a2c: 0c008566 jal 0x00021598              ;
00021a30: a0400039 sb r0,0x0039(r2)
00021a34: 9382025d lbu r2,0x025d(r28)
00021a38: 8f8302e0 lw r3,0x02e0(r28)
00021a3c: 00021080 sll r2,r2,0x02
00021a40: 00621021 addu r2,r3,r2
00021a44: 8c44002c lw r4,0x002c(r2)
00021a48: 00000000 nop
00021a4c: 28820032 slti r2,r4,0x0032
00021a50: 10400006 beq r2,r0,0x00021a6c
00021a54: 24020001 addiu r2,r0,0x0001
00021a58: 04810002 bgez r4,0x00021a64
00021a5c: a0620039 sb r2,0x0039(r3)
00021a60: 00002021 addu r4,r0,r0
00021a64: 24020063 addiu r2,r0,0x0063
00021a68: 00442023 subu r4,r2,r4
00021a6c: 28820064 slti r2,r4,0x0064
00021a70: 14400002 bne r2,r0,0x00021a7c
00021a74: 00000000 nop
00021a78: 24040063 addiu r4,r0,0x0063
00021a7c: 2484ffce addiu r4,r4,0xffce
00021a80: 3c026666 lui r2,0x6666
00021a84: 34426667 ori r2,r2,0x6667
00021a88: 00820018 mult r4,r2
00021a8c: 00041fc3 sra r3,r4,0x1f
00021a90: 8f8402e0 lw r4,0x02e0(r28)
00021a94: 00004010 mfhi r8
00021a98: 00081083 sra r2,r8,0x02
00021a9c: 00431023 subu r2,r2,r3
00021aa0: a0820038 sb r2,0x0038(r4)
00021aa4: 8f8202e0 lw r2,0x02e0(r28)
00021aa8: 0c01000b jal 0x0004002c              ;
00021aac: a0400037 sb r0,0x0037(r2)
00021ab0: 00402021 addu r4,r2,r0
00021ab4: 0c01002b jal 0x000400ac              ;(related to YOU WIN animation)
00021ab8: 24050002 addiu r5,r0,0x0002
00021abc: 00409821 addu r19,r2,r0
00021ac0: 02602021 addu r4,r19,r0
00021ac4: 24050020 addiu r5,r0,0x0020
00021ac8: 24060010 addiu r6,r0,0x0010
00021acc: 24070003 addiu r7,r0,0x0003
00021ad0: 24120001 addiu r18,r0,0x0001
00021ad4: 24020002 addiu r2,r0,0x0002
00021ad8: 2411000b addiu r17,r0,0x000b
00021adc: 2410020c addiu r16,r0,0x020c
00021ae0: afb20010 sw r18,0x0010(r29)
00021ae4: afa20014 sw r2,0x0014(r29)
00021ae8: afb10018 sw r17,0x0018(r29)
00021aec: 0c010133 jal 0x000404cc              ;
00021af0: afb0001c sw r16,0x001c(r29)
00021af4: 0c010a46 jal 0x00042918              ;
00021af8: 02602021 addu r4,r19,r0
00021afc: 96620008 lhu r2,0x0008(r19)
00021b00: 00000000 nop
00021b04: 34420028 ori r2,r2,0x0028
00021b08: 0c01000b jal 0x0004002c              ;
00021b0c: a6620008 sh r2,0x0008(r19)
00021b10: 00402021 addu r4,r2,r0
00021b14: 0c01002b jal 0x000400ac              ;(related to YOU WIN animation)
00021b18: 24050002 addiu r5,r0,0x0002
00021b1c: 00409821 addu r19,r2,r0
00021b20: 02602021 addu r4,r19,r0
00021b24: 24050120 addiu r5,r0,0x0120
00021b28: 24060010 addiu r6,r0,0x0010
00021b2c: 24070003 addiu r7,r0,0x0003
00021b30: afb20010 sw r18,0x0010(r29)
00021b34: afa00014 sw r0,0x0014(r29)
00021b38: afb10018 sw r17,0x0018(r29)
00021b3c: 0c010133 jal 0x000404cc              ;(related to YOU WIN animation)
00021b40: afb0001c sw r16,0x001c(r29)
00021b44: 0c010a46 jal 0x00042918              ;
00021b48: 02602021 addu r4,r19,r0
00021b4c: 96620008 lhu r2,0x0008(r19)
00021b50: 24100009 addiu r16,r0,0x0009
00021b54: 34420028 ori r2,r2,0x0028
00021b58: 0c01000b jal 0x0004002c              ;
00021b5c: a6620008 sh r2,0x0008(r19)
00021b60: 00402021 addu r4,r2,r0
00021b64: 0c01002b jal 0x000400ac              ;(related to YOU WIN animation)
00021b68: 24050002 addiu r5,r0,0x0002
00021b6c: 00409821 addu r19,r2,r0
00021b70: 02602021 addu r4,r19,r0
00021b74: 00002821 addu r5,r0,r0
00021b78: 24060008 addiu r6,r0,0x0008
00021b7c: 00a03821 addu r7,r5,r0
00021b80: 24020004 addiu r2,r0,0x0004
00021b84: afa20010 sw r2,0x0010(r29)
00021b88: 24020010 addiu r2,r0,0x0010
00021b8c: afa20018 sw r2,0x0018(r29)
00021b90: 00c01021 addu r2,r6,r0
00021b94: afa2001c sw r2,0x001c(r29)
00021b98: 3c02801b lui r2,0x801b
00021b9c: 2442f000 addiu r2,r2,0xf000          ;r2 = 0x801a1000
00021ba0: afa00014 sw r0,0x0014(r29)
00021ba4: 0c010a2a jal 0x000428a8              ;jump to 0x428a8 and link
00021ba8: afa20020 sw r2,0x0020(r29)
00021bac: 0c010a46 jal 0x00042918              ;(related to YOU WIN animation)
00021bb0: 02602021 addu r4,r19,r0              ;...
00021bb4: 02602021 addu r4,r19,r0              ;r4 = r19
00021bb8: 0c010a3b jal 0x000428ec              ;
00021bbc: 2405ffff addiu r5,r0,0xffff          ;r5 = -1
00021bc0: 8f8302e0 lw r3,0x02e0(r28)           ;r3 = (r28+0x2e0)
00021bc4: 96620008 lhu r2,0x0008(r19)          ;r2 = (r19+0x8)
00021bc8: 24640024 addiu r4,r3,0x0024          ;r4 = r3 + 0x24
00021bcc: 34420020 ori r2,r2,0x0020            ;r2 |= 0x20
00021bd0: a6620008 sh r2,0x0008(r19)
00021bd4: ac730000 sw r19,0x0000(r3)
00021bd8: ac800004 sw r0,0x0004(r4)            ;store 0 to (r4+0x4)
00021bdc: 2610ffff addiu r16,r16,0xffff        ;r16--
00021be0: 0601fffd bgez r16,0x00021bd8         ;while(r16 ≥ 0), loop to 0x21bd8
00021be4: 2484fffc addiu r4,r4,0xfffc          ;r4 -= 4
00021be8: 3c02800a lui r2,0x800a
00021bec: 8042b360 lb r2,-0x4ca0(r2)           ;r2 = (0x8009b360)
00021bf0: 3c01800a lui r1,0x800a
00021bf4: a420b338 sh r0,-0x4cc8(r1)
00021bf8: 04410048 bgez r2,0x00021d1c          ;if(r2 ≥ 0), branch to 0x21d1c (defeat ?)
00021bfc: 00000000 nop
00021c00: 3c02800a lui r2,0x800a
00021c04: 8042b361 lb r2,-0x4c9f(r2)           ;r2 = (0x8009b361)
00021c08: 00000000 nop
00021c0c: 04400043 bltz r2,0x00021d1c          ;if(r2 < 0), branch to 0x21d1c (defeat ?)
00021c10: 00000000 nop
00021c14: 9382025d lbu r2,0x025d(r28)          ;r2 = (r28+0x25d)
00021c18: 00000000 nop
00021c1c: 14400040 bne r2,r0,0x00021d20        ;if(r2 ≠ 0), branch to 0x21d20 (defeat ?)
00021c20: 00000000 nop
00021c24: 8f8302e0 lw r3,0x02e0(r28)
00021c28: 00000000 nop
00021c2c: 90620038 lbu r2,0x0038(r3)
00021c30: 00000000 nop
00021c34: 24420001 addiu r2,r2,0x0001
00021c38: a062003a sb r2,0x003a(r3)
00021c3c: 8f8302e0 lw r3,0x02e0(r28)           ;r3 = pointer to Duel Rank ?
00021c40: 00000000 nop
00021c44: 90620039 lbu r2,0x0039(r3)           ;r2 = (r3+00x39)
00021c48: 90630038 lbu r3,0x0038(r3)           ;r3 = (r3+00x38)
00021c4c: 0002102b sltu r2,r0,r2               ;if(r2 > 0), r2 = 1
00021c50: 2c630003 sltiu r3,r3,0x0003          ;if(r3 < 3), r3 = 1
00021c54: 10600002 beq r3,r0,0x00021c60        ;if(r3 == 0), branch to 0x21c60
00021c58: 00022040 sll r4,r2,0x01              ;duel_rank = r2 << 1
00021c5c: 24040001 addiu r4,r0,0x0001          ;duel_rank ++
00021c60: 0c008604 jal 0x00021810              ;Card drop PRNG routine
00021c64: 00008021 addu r16,r0,r0
00021c68: 8f8402e0 lw r4,0x02e0(r28)
00021c6c: 3c03801d lui r3,0x801d
00021c70: 3c01800a lui r1,0x800a
00021c74: a422b338 sh r2,-0x4cc8(r1)
00021c78: a482003c sh r2,0x003c(r4)
00021c7c: 00021400 sll r2,r2,0x10
00021c80: 00021403 sra r2,r2,0x10
00021c84: ac6256a8 sw r2,0x56a8(r3)
00021c88: 9082003a lbu r2,0x003a(r4)
00021c8c: 00000000 nop
00021c90: 10400022 beq r2,r0,0x00021d1c
00021c94: 24120008 addiu r18,r0,0x0008
00021c98: 241100a0 addiu r17,r0,0x00a0
00021c9c: 0c01000b jal 0x0004002c              ;
00021ca0: 26100001 addiu r16,r16,0x0001
00021ca4: 00402021 addu r4,r2,r0
00021ca8: 0c01002b jal 0x000400ac              ;
00021cac: 24050002 addiu r5,r0,0x0002
00021cb0: 00409821 addu r19,r2,r0
00021cb4: 02602021 addu r4,r19,r0
00021cb8: 02202821 addu r5,r17,r0
00021cbc: 240600c0 addiu r6,r0,0x00c0
00021cc0: 24070003 addiu r7,r0,0x0003
00021cc4: 24020004 addiu r2,r0,0x0004
00021cc8: afa20010 sw r2,0x0010(r29)
00021ccc: 2402000b addiu r2,r0,0x000b
00021cd0: afa20018 sw r2,0x0018(r29)
00021cd4: 2402020c addiu r2,r0,0x020c
00021cd8: afa00014 sw r0,0x0014(r29)
00021cdc: 0c010133 jal 0x000404cc              ;
00021ce0: afa2001c sw r2,0x001c(r29)
00021ce4: 0c010a46 jal 0x00042918              ;
00021ce8: 02602021 addu r4,r19,r0
00021cec: 26310014 addiu r17,r17,0x0014
00021cf0: 96620008 lhu r2,0x0008(r19)
00021cf4: 8f8302e0 lw r3,0x02e0(r28)
00021cf8: 34420020 ori r2,r2,0x0020
00021cfc: a6620008 sh r2,0x0008(r19)
00021d00: 00721021 addu r2,r3,r18
00021d04: ac530004 sw r19,0x0004(r2)
00021d08: 9062003a lbu r2,0x003a(r3)
00021d0c: 00000000 nop
00021d10: 0202102a slt r2,r16,r2
00021d14: 1440ffe1 bne r2,r0,0x00021c9c
00021d18: 26520004 addiu r18,r18,0x0004
00021d1c: 9382025d lbu r2,0x025d(r28)         ;r2 = (r28+0x25d)
00021d20: 3c03800a lui r3,0x800a
00021d24: 2463b360 addiu r3,r3,0xb360         ;r3 += 0xb360
00021d28: 00431021 addu r2,r2,r3              ;r2 += r3
00021d2c: 80420000 lb r2,0x0000(r2)
00021d30: 00000000 nop
00021d34: 044100c6 bgez r2,0x00022050
00021d38: 00000000 nop
00021d3c: 0c01000b jal 0x0004002c              ;
00021d40: 24110008 addiu r17,r0,0x0008
00021d44: 00402021 addu r4,r2,r0
00021d48: 0c01002b jal 0x000400ac              ;(probably YOU LOSE animation here)
00021d4c: 24050002 addiu r5,r0,0x0002
00021d50: 00409821 addu r19,r2,r0
00021d54: 02602021 addu r4,r19,r0
00021d58: 00002821 addu r5,r0,r0
00021d5c: 24060010 addiu r6,r0,0x0010
00021d60: 00a03821 addu r7,r5,r0
00021d64: 24020005 addiu r2,r0,0x0005
00021d68: 00c09021 addu r18,r6,r0
00021d6c: 8f8302e0 lw r3,0x02e0(r28)
00021d70: 3c10801b lui r16,0x801b
00021d74: afa20010 sw r2,0x0010(r29)
00021d78: 90620039 lbu r2,0x0039(r3)
00021d7c: 2610f000 addiu r16,r16,0xf000
00021d80: afb20018 sw r18,0x0018(r29)
00021d84: afb1001c sw r17,0x001c(r29)
00021d88: afb00020 sw r16,0x0020(r29)
00021d8c: 0c010a2a jal 0x000428a8              ;
00021d90: afa20014 sw r2,0x0014(r29)
00021d94: 0c010a46 jal 0x00042918              ;
00021d98: 02602021 addu r4,r19,r0
00021d9c: 02602021 addu r4,r19,r0
00021da0: 0c010a3b jal 0x000428ec              ;
00021da4: 2405fffe addiu r5,r0,0xfffe
00021da8: 96620008 lhu r2,0x0008(r19)
00021dac: 8f8302e0 lw r3,0x02e0(r28)
00021db0: 34420020 ori r2,r2,0x0020
00021db4: a6620008 sh r2,0x0008(r19)
00021db8: 0c01000b jal 0x0004002c              ;
00021dbc: ac730004 sw r19,0x0004(r3)
00021dc0: 00402021 addu r4,r2,r0
00021dc4: 0c01002b jal 0x000400ac              ;
00021dc8: 24050002 addiu r5,r0,0x0002
00021dcc: 00409821 addu r19,r2,r0
00021dd0: 02602021 addu r4,r19,r0
00021dd4: 00002821 addu r5,r0,r0
00021dd8: 24060010 addiu r6,r0,0x0010
00021ddc: 8f8302e0 lw r3,0x02e0(r28)
00021de0: 24020006 addiu r2,r0,0x0006
00021de4: afa20010 sw r2,0x0010(r29)
00021de8: 90620038 lbu r2,0x0038(r3)
00021dec: 00a03821 addu r7,r5,r0
00021df0: afb20018 sw r18,0x0018(r29)
00021df4: afb1001c sw r17,0x001c(r29)
00021df8: afb00020 sw r16,0x0020(r29)
00021dfc: 0c010a2a jal 0x000428a8              ;
00021e00: afa20014 sw r2,0x0014(r29)
00021e04: 0c010a46 jal 0x00042918              ;
00021e08: 02602021 addu r4,r19,r0
00021e0c: 02602021 addu r4,r19,r0
00021e10: 0c010a3b jal 0x000428ec              ;
00021e14: 2405ffff addiu r5,r0,0xffff
00021e18: 96620008 lhu r2,0x0008(r19)
00021e1c: 8f8302e0 lw r3,0x02e0(r28)
00021e20: 34420020 ori r2,r2,0x0020
00021e24: a6620008 sh r2,0x0008(r19)
00021e28: 08008814 j 0x00022050
00021e2c: ac730008 sw r19,0x0008(r3)

Card drop PRNG routine

00021810: 27bdffe8 addiu r29,r29,0xffe8
00021814: afb00010 sw r16,0x0010(r29)
00021818: 000480c0 sll r16,r4,0x03             ;...
0002181c: 02048021 addu r16,r16,r4             ;...
00021820: 001080c0 sll r16,r16,0x03            ;...
00021824: 02048021 addu r16,r16,r4             ;...
00021828: 00101080 sll r2,r16,0x02             ;...
0002182c: 02028021 addu r16,r16,r2             ;...
00021830: 00108080 sll r16,r16,0x02            ;r16 = rank_ID × 1460
00021834: 3c028018 lui r2,0x8018
00021838: 2442878c addiu r2,r2,0x878c          ;r2 = 0x8017878C
0002183c: afbf0014 sw r31,0x0014(r29)
00021840: 0c023964 jal 0x0008e590              ;PRNG advance
00021844: 02028021 addu r16,r16,r2             ;r16 += 0x8017878C
00021848: 304207ff andi r2,r2,0x07ff           ;PRN &= 2047
0002184c: 24450001 addiu r5,r2,0x0001          ;r5 = PRN + 1
00021850: 00002021 addu r4,r0,r0               ;r3 = r0
00021854: 00801821 addu r3,r4,r0               ;r3 = r4
00021858: 96020000 lhu r2,0x0000(r16)          ;r2 = card_proba
0002185c: 00000000 nop
00021860: 00822021 addu r4,r4,r2               ;r4 += card_proba
00021864: 0085102a slt r2,r4,r5
00021868: 10400006 beq r2,r0,0x00021884        ;if(r4 > PRN), exit this function
0002186c: 24620001 addiu r2,r3,0x0001          ;card_id = r3 + 1
00021870: 24630001 addiu r3,r3,0x0001          ;r3++
00021874: 286202d2 slti r2,r3,0x02d2
00021878: 1440fff7 bne r2,r0,0x00021858        ;if the 722 cards have not been checked, loop to 0x21858
0002187c: 26100002 addiu r16,r16,0x0002        ;r16 += 2 (next card_proba)
00021880: 00001021 addu r2,r0,r0               ;card_id = 0
00021884: 8fbf0014 lw r31,0x0014(r29)
00021888: 8fb00010 lw r16,0x0010(r29)
0002188c: 03e00008 jr r31
00021890: 27bd0018 addiu r29,r29,0x0018

Duel End Routine - Campaign

000218f0: 27bdffc0 addiu r29,r29,0xffc0
000218f4: 3c02800f lui r2,0x800f
000218f8: 24422848 addiu r2,r2,0x2848
000218fc: afbf0038 sw r31,0x0038(r29)
00021900: afb30034 sw r19,0x0034(r29)
00021904: afb20030 sw r18,0x0030(r29)
00021908: afb1002c sw r17,0x002c(r29)
0002190c: afb00028 sw r16,0x0028(r29)
00021910: 94430002 lhu r3,0x0002(r2)
00021914: 00000000 nop
00021918: 24630002 addiu r3,r3,0x0002
0002191c: 0c004d4b jal 0x0001352c
00021920: a4430002 sh r3,0x0002(r2)
00021924: 97830332 lhu r3,0x0332(r28)
00021928: 00000000 nop
0002192c: 30628000 andi r2,r3,0x8000          ;r2 = r3 & 0x8000
00021930: 1440013f bne r2,r0,0x00021e30       ;if(r2 ≠ 0), branch to 0x21e30
00021934: 30624000 andi r2,r3,0x4000
00021938: 34628000 ori r2,r3,0x8000
0002193c: a7820332 sh r2,0x0332(r28)
00021940: 0c005721 jal 0x00015c84
00021944: 00000000 nop
00021948: 24040080 addiu r4,r0,0x0080
0002194c: 0c0056f6 jal 0x00015bd8
00021950: 24050002 addiu r5,r0,0x0002
00021954: 3c028018 lui r2,0x8018
00021958: 244299d8 addiu r2,r2,0x99d8
0002195c: af8202e0 sw r2,0x02e0(r28)
00021960: 3c02801d lui r2,0x801d
00021964: 9383025d lbu r3,0x025d(r28)
00021968: 24040004 addiu r4,r0,0x0004
0002196c: a0445708 sb r4,0x5708(r2)
00021970: 24425708 addiu r2,r2,0x5708
00021974: 3c01800a lui r1,0x800a
00021978: a420b148 sh r0,-0x4eb8(r1)
0002197c: 3c01800a lui r1,0x800a
00021980: a420b146 sh r0,-0x4eba(r1)
00021984: 3c01800a lui r1,0x800a
00021988: a020b34e sb r0,-0x4cb2(r1)
0002198c: 3c01800a lui r1,0x800a
00021990: a020b355 sb r0,-0x4cab(r1)
00021994: a0440001 sb r4,0x0001(r2)
00021998: 00621821 addu r3,r3,r2
0002199c: a0600000 sb r0,0x0000(r3)
000219a0: 9382025d lbu r2,0x025d(r28)
000219a4: 00000000 nop
000219a8: 1040000c beq r2,r0,0x000219dc
000219ac: 240472e1 addiu r4,r0,0x72e1
000219b0: 240472f1 addiu r4,r0,0x72f1
000219b4: 3c02800a lui r2,0x800a
000219b8: 9042b361 lbu r2,-0x4c9f(r2)
000219bc: 24030001 addiu r3,r0,0x0001
000219c0: 3c01800a lui r1,0x800a
000219c4: a023b355 sb r3,-0x4cab(r1)
000219c8: 00021600 sll r2,r2,0x18
000219cc: 00021603 sra r2,r2,0x18
000219d0: 24428328 addiu r2,r2,0x8328
000219d4: 3c01800a lui r1,0x800a
000219d8: a422b32e sh r2,-0x4cd2(r1)
000219dc: 0c00ffc2 jal 0x0003ff08
000219e0: 00000000 nop
000219e4: 3c02800a lui r2,0x800a
000219e8: 8042b360 lb r2,-0x4ca0(r2)
000219ec: 00000000 nop
000219f0: 0441000d bgez r2,0x00021a28
000219f4: 00000000 nop
000219f8: 3c02800a lui r2,0x800a
000219fc: 8042b361 lb r2,-0x4c9f(r2)
00021a00: 00000000 nop
00021a04: 04410008 bgez r2,0x00021a28
00021a08: 24030001 addiu r3,r0,0x0001
00021a0c: 3c02800a lui r2,0x800a
00021a10: 9042b355 lbu r2,-0x4cab(r2)
00021a14: 3c01800a lui r1,0x800a
00021a18: a023b34e sb r3,-0x4cb2(r1)
00021a1c: 24420002 addiu r2,r2,0x0002
00021a20: 3c01800a lui r1,0x800a
00021a24: a022b355 sb r2,-0x4cab(r1)
00021a28: 8f8202e0 lw r2,0x02e0(r28)
00021a2c: 0c008566 jal 0x00021598
00021a30: a0400039 sb r0,0x0039(r2)
00021a34: 9382025d lbu r2,0x025d(r28)
00021a38: 8f8302e0 lw r3,0x02e0(r28)
00021a3c: 00021080 sll r2,r2,0x02
00021a40: 00621021 addu r2,r3,r2
00021a44: 8c44002c lw r4,0x002c(r2)
00021a48: 00000000 nop
00021a4c: 28820032 slti r2,r4,0x0032
00021a50: 10400006 beq r2,r0,0x00021a6c
00021a54: 24020001 addiu r2,r0,0x0001
00021a58: 04810002 bgez r4,0x00021a64
00021a5c: a0620039 sb r2,0x0039(r3)
00021a60: 00002021 addu r4,r0,r0
00021a64: 24020063 addiu r2,r0,0x0063
00021a68: 00442023 subu r4,r2,r4
00021a6c: 28820064 slti r2,r4,0x0064
00021a70: 14400002 bne r2,r0,0x00021a7c
00021a74: 00000000 nop
00021a78: 24040063 addiu r4,r0,0x0063
00021a7c: 2484ffce addiu r4,r4,0xffce
00021a80: 3c026666 lui r2,0x6666
00021a84: 34426667 ori r2,r2,0x6667
00021a88: 00820018 mult r4,r2
00021a8c: 00041fc3 sra r3,r4,0x1f
00021a90: 8f8402e0 lw r4,0x02e0(r28)
00021a94: 00004010 mfhi r8
00021a98: 00081083 sra r2,r8,0x02
00021a9c: 00431023 subu r2,r2,r3
00021aa0: a0820038 sb r2,0x0038(r4)
00021aa4: 8f8202e0 lw r2,0x02e0(r28)
00021aa8: 0c01000b jal 0x0004002c
00021aac: a0400037 sb r0,0x0037(r2)
00021ab0: 00402021 addu r4,r2,r0
00021ab4: 0c01002b jal 0x000400ac
00021ab8: 24050002 addiu r5,r0,0x0002
00021abc: 00409821 addu r19,r2,r0
00021ac0: 02602021 addu r4,r19,r0
00021ac4: 24050020 addiu r5,r0,0x0020
00021ac8: 24060010 addiu r6,r0,0x0010
00021acc: 24070003 addiu r7,r0,0x0003
00021ad0: 24120001 addiu r18,r0,0x0001
00021ad4: 24020002 addiu r2,r0,0x0002
00021ad8: 2411000b addiu r17,r0,0x000b
00021adc: 2410020c addiu r16,r0,0x020c
00021ae0: afb20010 sw r18,0x0010(r29)
00021ae4: afa20014 sw r2,0x0014(r29)
00021ae8: afb10018 sw r17,0x0018(r29)
00021aec: 0c010133 jal 0x000404cc
00021af0: afb0001c sw r16,0x001c(r29)
00021af4: 0c010a46 jal 0x00042918
00021af8: 02602021 addu r4,r19,r0
00021afc: 96620008 lhu r2,0x0008(r19)
00021b00: 00000000 nop
00021b04: 34420028 ori r2,r2,0x0028
00021b08: 0c01000b jal 0x0004002c
00021b0c: a6620008 sh r2,0x0008(r19)
00021b10: 00402021 addu r4,r2,r0
00021b14: 0c01002b jal 0x000400ac
00021b18: 24050002 addiu r5,r0,0x0002
00021b1c: 00409821 addu r19,r2,r0
00021b20: 02602021 addu r4,r19,r0
00021b24: 24050120 addiu r5,r0,0x0120
00021b28: 24060010 addiu r6,r0,0x0010
00021b2c: 24070003 addiu r7,r0,0x0003
00021b30: afb20010 sw r18,0x0010(r29)
00021b34: afa00014 sw r0,0x0014(r29)
00021b38: afb10018 sw r17,0x0018(r29)
00021b3c: 0c010133 jal 0x000404cc
00021b40: afb0001c sw r16,0x001c(r29)
00021b44: 0c010a46 jal 0x00042918
00021b48: 02602021 addu r4,r19,r0
00021b4c: 96620008 lhu r2,0x0008(r19)
00021b50: 24100009 addiu r16,r0,0x0009
00021b54: 34420028 ori r2,r2,0x0028
00021b58: 0c01000b jal 0x0004002c
00021b5c: a6620008 sh r2,0x0008(r19)
00021b60: 00402021 addu r4,r2,r0
00021b64: 0c01002b jal 0x000400ac
00021b68: 24050002 addiu r5,r0,0x0002
00021b6c: 00409821 addu r19,r2,r0
00021b70: 02602021 addu r4,r19,r0
00021b74: 00002821 addu r5,r0,r0
00021b78: 24060008 addiu r6,r0,0x0008
00021b7c: 00a03821 addu r7,r5,r0
00021b80: 24020004 addiu r2,r0,0x0004
00021b84: afa20010 sw r2,0x0010(r29)
00021b88: 24020010 addiu r2,r0,0x0010
00021b8c: afa20018 sw r2,0x0018(r29)
00021b90: 00c01021 addu r2,r6,r0
00021b94: afa2001c sw r2,0x001c(r29)
00021b98: 3c02801b lui r2,0x801b
00021b9c: 2442f000 addiu r2,r2,0xf000
00021ba0: afa00014 sw r0,0x0014(r29)
00021ba4: 0c010a2a jal 0x000428a8
00021ba8: afa20020 sw r2,0x0020(r29)
00021bac: 0c010a46 jal 0x00042918
00021bb0: 02602021 addu r4,r19,r0
00021bb4: 02602021 addu r4,r19,r0
00021bb8: 0c010a3b jal 0x000428ec
00021bbc: 2405ffff addiu r5,r0,0xffff
00021bc0: 8f8302e0 lw r3,0x02e0(r28)
00021bc4: 96620008 lhu r2,0x0008(r19)
00021bc8: 24640024 addiu r4,r3,0x0024
00021bcc: 34420020 ori r2,r2,0x0020
00021bd0: a6620008 sh r2,0x0008(r19)
00021bd4: ac730000 sw r19,0x0000(r3)
00021bd8: ac800004 sw r0,0x0004(r4)
00021bdc: 2610ffff addiu r16,r16,0xffff
00021be0: 0601fffd bgez r16,0x00021bd8
00021be4: 2484fffc addiu r4,r4,0xfffc
00021be8: 3c02800a lui r2,0x800a
00021bec: 8042b360 lb r2,-0x4ca0(r2)
00021bf0: 3c01800a lui r1,0x800a
00021bf4: a420b338 sh r0,-0x4cc8(r1)
00021bf8: 04410048 bgez r2,0x00021d1c
00021bfc: 00000000 nop
00021c00: 3c02800a lui r2,0x800a
00021c04: 8042b361 lb r2,-0x4c9f(r2)
00021c08: 00000000 nop
00021c0c: 04400043 bltz r2,0x00021d1c
00021c10: 00000000 nop
00021c14: 9382025d lbu r2,0x025d(r28)          ;r2 = (r28+0x25d)
00021c18: 00000000 nop
00021c1c: 14400040 bne r2,r0,0x00021d20        ;if(r2 == 0), branch to 0x21d20
00021c20: 00000000 nop
00021c24: 8f8302e0 lw r3,0x02e0(r28)
00021c28: 00000000 nop
00021c2c: 90620038 lbu r2,0x0038(r3)
00021c30: 00000000 nop
00021c34: 24420001 addiu r2,r2,0x0001
00021c38: a062003a sb r2,0x003a(r3)            ;store Starchips in (r3+0x3a)
00021c3c: 8f8302e0 lw r3,0x02e0(r28)
00021c40: 00000000 nop
00021c44: 90620039 lbu r2,0x0039(r3)
00021c48: 90630038 lbu r3,0x0038(r3)
00021c4c: 0002102b sltu r2,r0,r2
00021c50: 2c630003 sltiu r3,r3,0x0003
00021c54: 10600002 beq r3,r0,0x00021c60        ;if(r3 < 3), branch to 0x21c60
00021c58: 00022040 sll r4,r2,0x01              ;r4 = r2 << 1
00021c5c: 24040001 addiu r4,r0,0x0001          ;r4 = 1
00021c60: 0c008604 jal 0x00021810              ;Card drop PRNG routine
00021c64: 00008021 addu r16,r0,r0              ;r16 = 0
00021c68: 8f8402e0 lw r4,0x02e0(r28)
00021c6c: 3c03801d lui r3,0x801d
00021c70: 3c01800a lui r1,0x800a
00021c74: a422b338 sh r2,-0x4cc8(r1)           ;...
00021c78: a482003c sh r2,0x003c(r4)            ;store card_drop_id in (0x8009B338) and in (r4+0x3c)
00021c7c: 00021400 sll r2,r2,0x10
00021c80: 00021403 sra r2,r2,0x10              ;remove higher 16 bits from r2
00021c84: ac6256a8 sw r2,0x56a8(r3)            ;store card_drop_id in (0x801d56a8)
00021c88: 9082003a lbu r2,0x003a(r4)           ;r2 = Starchips
00021c8c: 00000000 nop
00021c90: 10400022 beq r2,r0,0x00021d1c        ;if(starchips == 0), branch to 0x21d1c
00021c94: 24120008 addiu r18,r0,0x0008         ;r18 += 8
00021c98: 241100a0 addiu r17,r0,0x00a0         ;r17 += 0xa0
00021c9c: 0c01000b jal 0x0004002c
00021ca0: 26100001 addiu r16,r16,0x0001        ;r16++
00021ca4: 00402021 addu r4,r2,r0               ;r4 = r2
00021ca8: 0c01002b jal 0x000400ac
00021cac: 24050002 addiu r5,r0,0x0002
00021cb0: 00409821 addu r19,r2,r0
00021cb4: 02602021 addu r4,r19,r0
00021cb8: 02202821 addu r5,r17,r0
00021cbc: 240600c0 addiu r6,r0,0x00c0
00021cc0: 24070003 addiu r7,r0,0x0003
00021cc4: 24020004 addiu r2,r0,0x0004
00021cc8: afa20010 sw r2,0x0010(r29)
00021ccc: 2402000b addiu r2,r0,0x000b
00021cd0: afa20018 sw r2,0x0018(r29)
00021cd4: 2402020c addiu r2,r0,0x020c
00021cd8: afa00014 sw r0,0x0014(r29)
00021cdc: 0c010133 jal 0x000404cc
00021ce0: afa2001c sw r2,0x001c(r29)
00021ce4: 0c010a46 jal 0x00042918
00021ce8: 02602021 addu r4,r19,r0
00021cec: 26310014 addiu r17,r17,0x0014
00021cf0: 96620008 lhu r2,0x0008(r19)
00021cf4: 8f8302e0 lw r3,0x02e0(r28)
00021cf8: 34420020 ori r2,r2,0x0020
00021cfc: a6620008 sh r2,0x0008(r19)
00021d00: 00721021 addu r2,r3,r18
00021d04: ac530004 sw r19,0x0004(r2)
00021d08: 9062003a lbu r2,0x003a(r3)
00021d0c: 00000000 nop
00021d10: 0202102a slt r2,r16,r2
00021d14: 1440ffe1 bne r2,r0,0x00021c9c
00021d18: 26520004 addiu r18,r18,0x0004
00021d1c: 9382025d lbu r2,0x025d(r28)          ;r2 = (r28+0x25d)
00021d20: 3c03800a lui r3,0x800a
00021d24: 2463b360 addiu r3,r3,0xb360          ;r3 = 8009b360
00021d28: 00431021 addu r2,r2,r3               ;r2 += r3
00021d2c: 80420000 lb r2,0x0000(r2)            ;r2 = (r2)
00021d30: 00000000 nop
00021d34: 044100c6 bgez r2,0x00022050          ;if(r2 ≥ 0), branch to 0x22050
00021d38: 00000000 nop
00021d3c: 0c01000b jal 0x0004002c
00021d40: 24110008 addiu r17,r0,0x0008         ;r17 = 8
00021d44: 00402021 addu r4,r2,r0               ;r4 = r2
00021d48: 0c01002b jal 0x000400ac
00021d4c: 24050002 addiu r5,r0,0x0002          ;r5 = 2
00021d50: 00409821 addu r19,r2,r0
00021d54: 02602021 addu r4,r19,r0
00021d58: 00002821 addu r5,r0,r0
00021d5c: 24060010 addiu r6,r0,0x0010
00021d60: 00a03821 addu r7,r5,r0
00021d64: 24020005 addiu r2,r0,0x0005
00021d68: 00c09021 addu r18,r6,r0
00021d6c: 8f8302e0 lw r3,0x02e0(r28)
00021d70: 3c10801b lui r16,0x801b
00021d74: afa20010 sw r2,0x0010(r29)
00021d78: 90620039 lbu r2,0x0039(r3)
00021d7c: 2610f000 addiu r16,r16,0xf000
00021d80: afb20018 sw r18,0x0018(r29)
00021d84: afb1001c sw r17,0x001c(r29)
00021d88: afb00020 sw r16,0x0020(r29)
00021d8c: 0c010a2a jal 0x000428a8
00021d90: afa20014 sw r2,0x0014(r29)
00021d94: 0c010a46 jal 0x00042918
00021d98: 02602021 addu r4,r19,r0
00021d9c: 02602021 addu r4,r19,r0
00021da0: 0c010a3b jal 0x000428ec
00021da4: 2405fffe addiu r5,r0,0xfffe
00021da8: 96620008 lhu r2,0x0008(r19)
00021dac: 8f8302e0 lw r3,0x02e0(r28)
00021db0: 34420020 ori r2,r2,0x0020
00021db4: a6620008 sh r2,0x0008(r19)
00021db8: 0c01000b jal 0x0004002c
00021dbc: ac730004 sw r19,0x0004(r3)
00021dc0: 00402021 addu r4,r2,r0
00021dc4: 0c01002b jal 0x000400ac
00021dc8: 24050002 addiu r5,r0,0x0002
00021dcc: 00409821 addu r19,r2,r0
00021dd0: 02602021 addu r4,r19,r0
00021dd4: 00002821 addu r5,r0,r0
00021dd8: 24060010 addiu r6,r0,0x0010
00021ddc: 8f8302e0 lw r3,0x02e0(r28)
00021de0: 24020006 addiu r2,r0,0x0006
00021de4: afa20010 sw r2,0x0010(r29)
00021de8: 90620038 lbu r2,0x0038(r3)
00021dec: 00a03821 addu r7,r5,r0
00021df0: afb20018 sw r18,0x0018(r29)
00021df4: afb1001c sw r17,0x001c(r29)
00021df8: afb00020 sw r16,0x0020(r29)
00021dfc: 0c010a2a jal 0x000428a8
00021e00: afa20014 sw r2,0x0014(r29)
00021e04: 0c010a46 jal 0x00042918
00021e08: 02602021 addu r4,r19,r0
00021e0c: 02602021 addu r4,r19,r0
00021e10: 0c010a3b jal 0x000428ec
00021e14: 2405ffff addiu r5,r0,0xffff
00021e18: 96620008 lhu r2,0x0008(r19)
00021e1c: 8f8302e0 lw r3,0x02e0(r28)
00021e20: 34420020 ori r2,r2,0x0020
00021e24: a6620008 sh r2,0x0008(r19)
00021e28: 08008814 j 0x00022050
00021e2c: ac730008 sw r19,0x0008(r3)

0x21e30

00021e30: 1040005f beq r2,r0,0x00021fb0
00021e34: 3c02800f lui r2,0x800f
00021e38: 24509ec8 addiu r16,r2,0x9ec8
00021e3c: 92020006 lbu r2,0x0006(r16)
00021e40: 00000000 nop
00021e44: 30420080 andi r2,r2,0x0080
00021e48: 14400094 bne r2,r0,0x0002209c
00021e4c: 30622000 andi r2,r3,0x2000
00021e50: 1440000a bne r2,r0,0x00021e7c
00021e54: 34622000 ori r2,r3,0x2000
00021e58: a7820332 sh r2,0x0332(r28)
00021e5c: 0c005641 jal 0x00015904
00021e60: 00000000 nop
00021e64: 240400ff addiu r4,r0,0x00ff
00021e68: 00801021 addu r2,r4,r0
00021e6c: 0c0055ae jal 0x000156b8
00021e70: a2020004 sb r2,0x0004(r16)
00021e74: 08008827 j 0x0002209c
00021e78: 00000000 nop

0x24388

00024388: 27bdffe8 addiu r29,r29,0xffe8
0002438c: 3c02800a lui r2,0x800a
00024390: 8042b361 lb r2,-0x4c9f(r2)
00024394: 00001821 addu r3,r0,r0
00024398: 04410006 bgez r2,0x000243b4
0002439c: afbf0010 sw r31,0x0010(r29)
000243a0: 83820330 lb r2,0x0330(r28)
000243a4: 938302cd lbu r3,0x02cd(r28)
000243a8: 04400002 bltz r2,0x000243b4
000243ac: 00000000 nop
000243b0: 00401821 addu r3,r2,r0
000243b4: 10600009 beq r3,r0,0x000243dc
000243b8: 00000000 nop
000243bc: 0c00f37e jal 0x0003cdf8
000243c0: 00000000 nop
000243c4: 0c009080 jal 0x00024200
000243c8: 00000000 nop
000243cc: 0c00f392 jal 0x0003ce48
000243d0: 00000000 nop
000243d4: 080090f9 j 0x000243e4
000243d8: 00000000 nop

0x243dc

000243dc: 0c009080 jal 0x00024200           ;jump to 0x24200, and link
000243e0: 00000000 nop
000243e4: 8fbf0010 lw r31,0x0010(r29)       ;r31 = (r29+0x10)
000243e8: 00000000 nop
000243ec: 03e00008 jr r31
000243f0: 27bd0018 addiu r29,r29,0x0018       ;r29 += 0x18

Shuffle Player's deck

000244ec: 00008821 addu r17,r0,r0             ;r17 = 0
000244f0: 94820000 lhu r2,0x0000(r4)
000244f4: 24840002 addiu r4,r4,0x0002
000244f8: a6020000 sh r2,0x0000(r16)          ;store card_id in (shuffled_deck_pointer)
000244fc: a2510000 sb r17,0x0000(r18)         ;store card_order in (shuffle_order_pointer)
00024500: 26520001 addiu r18,r18,0x0001       ;shuffle_order_pointer++
00024504: 26310001 addiu r17,r17,0x0001       ;r17++
00024508: 2a220028 slti r2,r17,0x0028
0002450c: 1440fff8 bne r2,r0,0x000244f0       ;While the whole deck is not copied, loop to 0x244f0
00024510: 26100002 addiu r16,r16,0x0002       ;shuffled_deck_pointer += 2
00024514: 00008821 addu r17,r0,r0             ;r17 = 0
00024518: 0c00d63f jal 0x000358fc             ;PRN % (r16+r4)
0002451c: 24040028 addiu r4,r0,0x0028         ;r4 = 40
00024520: 24040028 addiu r4,r0,0x0028         ;r4 = 40
00024524: 0c00d63f jal 0x000358fc             ;PRN % (r16+r4)
00024528: 00408021 addu r16,r2,r0             ;r16 = r2
0002452c: 00102840 sll r5,r16,0x01            ;r5 = r16 << 1
00024530: 00b62821 addu r5,r5,r22             ;r5 += r22
00024534: 00022040 sll r4,r2,0x01             ;r4 = r2 << 1
00024538: 00962021 addu r4,r4,r22             ;r4 += r22
0002453c: 02b08021 addu r16,r21,r16           ;r16 += r21
00024540: 94a60000 lhu r6,0x0000(r5)          ;r6 = (r5)
00024544: 94830000 lhu r3,0x0000(r4)          ;r3 = (r4)
00024548: 02a21021 addu r2,r21,r2             ;r2 += r21
0002454c: a4a30000 sh r3,0x0000(r5)           ;store r3 in (r5)
00024550: a4860000 sh r6,0x0000(r4)           ;store r6 in (r4)
00024554: 92060000 lbu r6,0x0000(r16)         ;r6 = (r16)
00024558: 90430000 lbu r3,0x0000(r2)          ;r3 = (r2)
0002455c: 26310001 addiu r17,r17,0x0001       ;r17++
00024560: a2030000 sb r3,0x0000(r16)          ;store r3 in (r16)
00024564: a0460000 sb r6,0x0000(r2)           ;store r6 in (r2)
00024568: 2a2200a0 slti r2,r17,0x00a0
0002456c: 1440ffea bne r2,r0,0x00024518       ;if(r17 < 160), loop to 0x24518
00024570: 00000000 nop
00024574: 8fbf0308 lw r31,0x0308(r29)
00024578: 8fb70304 lw r23,0x0304(r29)
0002457c: 8fb60300 lw r22,0x0300(r29)
00024580: 8fb502fc lw r21,0x02fc(r29)
00024584: 8fb402f8 lw r20,0x02f8(r29)
00024588: 8fb302f4 lw r19,0x02f4(r29)
0002458c: 8fb202f0 lw r18,0x02f0(r29)
00024590: 8fb102ec lw r17,0x02ec(r29)
00024594: 8fb002e8 lw r16,0x02e8(r29)
00024598: 03e00008 jr r31
0002459c: 27bd0310 addiu r29,r29,0x0310

0x2cc24 (card drop related ?)

0002cc24: 3c03801d lui r3,0x801d
0002cc28: 24634244 addiu r3,r3,0x4244
0002cc2c: 2482ffff addiu r2,r4,0xffff
0002cc30: 00021080 sll r2,r2,0x02
0002cc34: 00431021 addu r2,r2,r3
0002cc38: 8c430000 lw r3,0x0000(r2)
0002cc3c: 00000000 nop
0002cc40: 306301ff andi r3,r3,0x01ff
0002cc44: 00031080 sll r2,r3,0x02
0002cc48: 00431021 addu r2,r2,r3
0002cc4c: 00028040 sll r16,r2,0x01
0002cc50: 3c02801d lui r2,0x801d
0002cc54: 24424244 addiu r2,r2,0x4244
0002cc58: 2483ffff addiu r3,r4,0xffff
0002cc5c: 00031880 sll r3,r3,0x02
0002cc60: 00621821 addu r3,r3,r2
0002cc64: 8c640000 lw r4,0x0000(r3)
0002cc68: 00000000 nop
0002cc6c: 00042683 sra r4,r4,0x1a
0002cc70: 0c00925f jal 0x0002497c
0002cc74: 3084001f andi r4,r4,0x001f
0002cc78: 02028021 addu r16,r16,r2
0002cc7c: 06000006 bltz r16,0x0002cc98
0002cc80: 00001021 addu r2,r0,r0
0002cc84: 2a022710 slti r2,r16,0x2710
0002cc88: 14400003 bne r2,r0,0x0002cc98
0002cc8c: 02001021 addu r2,r16,r0
0002cc90: 2410270f addiu r16,r0,0x270f     ;r16 = 9999
0002cc94: 02001021 addu r2,r16,r0
0002cc98: 8fbf0014 lw r31,0x0014(r29)
0002cc9c: 8fb00010 lw r16,0x0010(r29)
0002cca0: 03e00008 jr r31
0002cca4: 27bd0018 addiu r29,r29,0x0018

0x2cca8 (card drop ?)

0002cca8: 308307ff andi r3,r4,0x07ff        ;r3 = r4 & 2047
0002ccac: 000318c3 sra r3,r3,0x03
0002ccb0: 30860007 andi r6,r4,0x0007
0002ccb4: 24050080 addiu r5,r0,0x0080
0002ccb8: 3c02801d lui r2,0x801d
0002ccbc: 24420000 addiu r2,r2,0x0000
0002ccc0: 00621821 addu r3,r3,r2
0002ccc4: 90620618 lbu r2,0x0618(r3)
0002ccc8: 00c52807 srav r5,r5,r6
0002cccc: 30848000 andi r4,r4,0x8000
0002ccd0: 10800002 beq r4,r0,0x0002ccdc
0002ccd4: 00451024 and r2,r2,r5
0002ccd8: 2c420001 sltiu r2,r2,0x0001
0002ccdc: 03e00008 jr r31
0002cce0: 00000000 nop

0x2cce4 (card drop ?)

0002cce4: 308207ff andi r2,r4,0x07ff        ;r2 = r4 & 2047
0002cce8: 000230c3 sra r6,r2,0x03
0002ccec: 30828000 andi r2,r4,0x8000
0002ccf0: 1040000c beq r2,r0,0x0002cd24
0002ccf4: 30850007 andi r5,r4,0x0007
0002ccf8: 30830007 andi r3,r4,0x0007
0002ccfc: 24020080 addiu r2,r0,0x0080
0002cd00: 00622007 srav r4,r2,r3
0002cd04: 3c03801d lui r3,0x801d
0002cd08: 24630000 addiu r3,r3,0x0000
0002cd0c: 00c31821 addu r3,r6,r3
0002cd10: 90620618 lbu r2,0x0618(r3)
0002cd14: 00042027 nor r4,r0,r4
0002cd18: 00441024 and r2,r2,r4
0002cd1c: 03e00008 jr r31
0002cd20: a0620618 sb r2,0x0618(r3)


0x2d024 (card drop related ?)

0002d024: 0c0090e2 jal 0x00024388           ;jump to 0x24388, and link
0002d028: 00000000 nop
0002d02c: 3c02800a lui r2,0x800a
0002d030: 9442b16c lhu r2,-0x4e94(r2)       ;r2 = 0x8009B16C
0002d034: 00000000 nop
0002d038: 30422000 andi r2,r2,0x2000        ;r2 &= 0x2000
0002d03c: 10400023 beq r2,r0,0x0002d0cc     ;if(r2 == r0), branch to 0x2d0cc
0002d040: 24020002 addiu r2,r0,0x0002       ;r2 = r0 + 0x2
0002d044: a3820366 sb r2,0x0366(r28)        ;store r2 in
0002d048: 0800b433 j 0x0002d0cc             ;jump to 0x2d0cc
0002d04c: 00000000 nop

0x2d0cc

0002d0cc: 8fbf0018 lw r31,0x0018(r29)
0002d0d0: 8fb10014 lw r17,0x0014(r29)
0002d0d4: 8fb00010 lw r16,0x0010(r29)
0002d0d8: 03e00008 jr r31
0002d0dc: 27bd0020 addiu r29,r29,0x0020

PRN % (r16+r4)

000358fc: 27bdffe8 addiu r29,r29,0xffe8
00035900: afb00010 sw r16,0x0010(r29)
00035904: afbf0014 sw r31,0x0014(r29)
00035908: 0c023964 jal 0x0008e590              ;PRNG advance
0003590c: 00808021 addu r16,r4,r0              ;r16 += r4
00035910: 0050001a div r2,r16                  ;PRN ÷ r16
00035914: 16000002 bne r16,r0,0x00035920
00035918: 00000000 nop
0003591c: 0007000d break 0x00001c00            ;ERROR: division by zero
00035920: 2401ffff addiu r1,r0,0xffff
00035924: 16010004 bne r16,r1,0x00035938
00035928: 3c018000 lui r1,0x8000
0003592c: 14410002 bne r2,r1,0x00035938
00035930: 00000000 nop
00035934: 0006000d break 0x00001800            ;ERROR: negative
00035938: 00001010 mfhi r2                     ;r2 = PRN % r16
0003593c: 8fbf0014 lw r31,0x0014(r29)
00035940: 8fb00010 lw r16,0x0010(r29)
00035944: 03e00008 jr r31
00035948: 27bd0018 addiu r29,r29,0x0018

Return a PRN in r2

000358fc: 27bdffe8 addiu r29,r29,0xffe8
00035900: afb00010 sw r16,0x0010(r29)
00035904: afbf0014 sw r31,0x0014(r29)
00035908: 0c023964 jal 0x0008e590              ;PRNG advance
0003590c: 00808021 addu r16,r4,r0              ;r16 = r4 + r0
00035910: 0050001a div r2,r16
00035914: 16000002 bne r16,r0,0x00035920
00035918: 00000000 nop
0003591c: 0007000d break 0x00001c00            ;ERROR: division by zero
00035920: 2401ffff addiu r1,r0,0xffff          ;r1 = r0 - 1
00035924: 16010004 bne r16,r1,0x00035938
00035928: 3c018000 lui r1,0x8000
0003592c: 14410002 bne r2,r1,0x00035938
00035930: 00000000 nop
00035934: 0006000d break 0x00001800
00035938: 00001010 mfhi r2                     ;r2 = PRN ÷ r16
0003593c: 8fbf0014 lw r31,0x0014(r29)
00035940: 8fb00010 lw r16,0x0010(r29)
00035944: 03e00008 jr r31
00035948: 27bd0018 addiu r29,r29,0x0018

0x4002c (card drops shenanigans)

0004002c: 3c02800f lui r2,0x800f
00040030: 24440548 addiu r4,r2,0x0548          ;r4 = r2 + 0x548
00040034: 24030010 addiu r3,r0,0x0010          ;r3 = r0 + 0x10
00040038: 94820008 lhu r2,0x0008(r4)
0004003c: 00000000 nop
00040040: 30420080 andi r2,r2,0x0080           ;r2 &= 0x80
00040044: 10400007 beq r2,r0,0x00040064        ;if(r2 == r0), exit this function
00040048: 00601021 addu r2,r3,r0               ;r2 = r3 + r0
0004004c: 24630001 addiu r3,r3,0x0001          ;r3++
00040050: 28620060 slti r2,r3,0x0060
00040054: 1440fff8 bne r2,r0,0x00040038        ;if(r3 < 0x60), loop to 0x40038
00040058: 24840070 addiu r4,r4,0x0070          ;r4 += 0x70
0004005c: 03e00008 jr r31
00040060: 2402ffff addiu r2,r0,0xffff          ;r2 = r0- - 1
00040064: 03e00008 jr r31
00040068: 00000000 nop
0004006c: 3c02800f lui r2,0x800f
00040070: 2444fe48 addiu r4,r2,0xfe48          ;r4 = 0x800ffe48
00040074: 00001821 addu r3,r0,r0
00040078: 94820008 lhu r2,0x0008(r4)
0004007c: 00000000 nop
00040080: 30420080 andi r2,r2,0x0080
00040084: 10400007 beq r2,r0,0x000400a4
00040088: 00601021 addu r2,r3,r0
0004008c: 24630001 addiu r3,r3,0x0001
00040090: 28620060 slti r2,r3,0x0060
00040094: 1440fff8 bne r2,r0,0x00040078
00040098: 24840070 addiu r4,r4,0x0070
0004009c: 03e00008 jr r31
000400a0: 2402ffff addiu r2,r0,0xffff

0x400ac (YOU WIN blablabla)

000400ac: 00803821 addu r7,r4,r0
000400b0: 04e10003 bgez r7,0x000400c0
000400b4: 00a04821 addu r9,r5,r0
000400b8: 03e00008 jr r31
000400bc: 00001021 addu r2,r0,r0
000400c0: 000710c0 sll r2,r7,0x03
000400c4: 00471023 subu r2,r2,r7
000400c8: 00021100 sll r2,r2,0x04
000400cc: 3c03800f lui r3,0x800f
000400d0: 2468fe48 addiu r8,r3,0xfe48
000400d4: 00483021 addu r6,r2,r8
000400d8: 9782050a lhu r2,0x050a(r28)
000400dc: 94c30008 lhu r3,0x0008(r6)
000400e0: 24420001 addiu r2,r2,0x0001
000400e4: 30630080 andi r3,r3,0x0080
000400e8: a782050a sh r2,0x050a(r28)
000400ec: 14600045 bne r3,r0,0x00040204
000400f0: 3c02800f lui r2,0x800f
000400f4: 2442fe38 addiu r2,r2,0xfe38
000400f8: 00092040 sll r4,r9,0x01
000400fc: 00822821 addu r5,r4,r2
00040100: 84a30000 lh r3,0x0000(r5)
00040104: 00000000 nop
00040108: 04610009 bgez r3,0x00040130
0004010c: 00000000 nop
00040110: 3c02800f lui r2,0x800f
00040114: 24422878 addiu r2,r2,0x2878
00040118: 00821021 addu r2,r4,r2
0004011c: a4470000 sh r7,0x0000(r2)
00040120: 2402ffff addiu r2,r0,0xffff
00040124: a4c20002 sh r2,0x0002(r6)
00040128: 08010054 j 0x00040150
0004012c: a4c20000 sh r2,0x0000(r6)

0x40130 (YOU WIN shenanigans)

00040130: 000310c0 sll r2,r3,0x03
00040134: 00431023 subu r2,r2,r3
00040138: 00021100 sll r2,r2,0x04
0004013c: 00481021 addu r2,r2,r8
00040140: a4470000 sh r7,0x0000(r2)
00040144: 94a20000 lhu r2,0x0000(r5)
00040148: 00000000 nop
0004014c: a4c20002 sh r2,0x0002(r6)
00040150: 3c040080 lui r4,0x0080
00040154: 34848080 ori r4,r4,0x8080
00040158: 3c051000 lui r5,0x1000
0004015c: 34a51000 ori r5,r5,0x1000
00040160: 2402ffff addiu r2,r0,0xffff
00040164: 3c03800f lui r3,0x800f
00040168: 2463fe38 addiu r3,r3,0xfe38
0004016c: a4c20000 sh r2,0x0000(r6)
00040170: 00091040 sll r2,r9,0x01
00040174: 00431021 addu r2,r2,r3
00040178: a4470000 sh r7,0x0000(r2)
0004017c: 3c020800 lui r2,0x0800
00040180: acc20004 sw r2,0x0004(r6)
00040184: 240200c0 addiu r2,r0,0x00c0
00040188: a4c20008 sh r2,0x0008(r6)
0004018c: 24020002 addiu r2,r0,0x0002
00040190: a0c20017 sb r2,0x0017(r6)
00040194: 3c02801b lui r2,0x801b
00040198: 90c30017 lbu r3,0x0017(r6)
0004019c: 2442c000 addiu r2,r2,0xc000
000401a0: acc20054 sw r2,0x0054(r6)
000401a4: 2782006c addiu r2,r28,0x006c
000401a8: a0c0006c sb r0,0x006c(r6)
000401ac: acc00024 sw r0,0x0024(r6)
000401b0: a4c9001e sh r9,0x001e(r6)
000401b4: a0c7000a sb r7,0x000a(r6)
000401b8: a0c0000b sb r0,0x000b(r6)
000401bc: acc4000c sw r4,0x000c(r6)
000401c0: acc00020 sw r0,0x0020(r6)
000401c4: acc00010 sw r0,0x0010(r6)
000401c8: a4c0001c sh r0,0x001c(r6)
000401cc: a4c0001a sh r0,0x001a(r6)
000401d0: a4c00018 sh r0,0x0018(r6)
000401d4: a0c00066 sb r0,0x0066(r6)
000401d8: acc00048 sw r0,0x0048(r6)
000401dc: acc50044 sw r5,0x0044(r6)
000401e0: acc00040 sw r0,0x0040(r6)
000401e4: a4c0005e sh r0,0x005e(r6)
000401e8: a0c00065 sb r0,0x0065(r6)
000401ec: a0c00016 sb r0,0x0016(r6)
000401f0: 00031840 sll r3,r3,0x01
000401f4: 00621821 addu r3,r3,r2
000401f8: 94620000 lhu r2,0x0000(r3)
000401fc: 00000000 nop
00040200: a4c20014 sh r2,0x0014(r6)
00040204: 03e00008 jr r31
00040208: 00c01021 addu r2,r6,r0

0x404cc (related to the YOU WIN animation)

000404cc: 27bdffe0 addiu r29,r29,0xffe0
000404d0: 8fa20038 lw r2,0x0038(r29)
000404d4: 8fa3003c lw r3,0x003c(r29)
000404d8: afbf0018 sw r31,0x0018(r29)
000404dc: a4850030 sh r5,0x0030(r4)
000404e0: 00e02821 addu r5,r7,r0
000404e4: a4860032 sh r6,0x0032(r4)
000404e8: afa20010 sw r2,0x0010(r29)
000404ec: afa30014 sw r3,0x0014(r29)
000404f0: 8fa60030 lw r6,0x0030(r29)
000404f4: 8fa70034 lw r7,0x0034(r29)
000404f8: 0c01011a jal 0x00040468
000404fc: 00000000 nop
00040500: 8fbf0018 lw r31,0x0018(r29)
00040504: 00000000 nop
00040508: 03e00008 jr r31
0004050c: 27bd0020 addiu r29,r29,0x0020

0x42918 (related to YOU WIN animation)

00042918: 90830016 lbu r3,0x0016(r4)      ;r3 = (r4+0x16)
0004291c: 24020001 addiu r2,r0,0x0001     ;r2 = r0 + 1
00042920: a0820017 sb r2,0x0017(r4)       ;store r2 in (r4+0x17)
00042924: 9782006e lhu r2,0x006e(r28)     ;r2 = (r28+0x6e)
00042928: 00031e00 sll r3,r3,0x18         ;r3 << 0x18
0004292c: 00031e03 sra r3,r3,0x18         ;r3 >> 0x18
00042930: 00431023 subu r2,r2,r3          ;r2 -= r3
00042934: 03e00008 jr r31
00042938: a4820014 sh r2,0x0014(r4)       ;store r2 in (r4+0x14)

0x42874 (YOU WIN etc.)

00042874: 27bdffe0 addiu r29,r29,0xffe0
00042878: 8fa20038 lw r2,0x0038(r29)
0004287c: 8fa30030 lw r3,0x0030(r29)
00042880: 8fa80034 lw r8,0x0034(r29)
00042884: afbf0018 sw r31,0x0018(r29)
00042888: ac820054 sw r2,0x0054(r4)
0004288c: afa30010 sw r3,0x0010(r29)
00042890: 0c01011a jal 0x00040468
00042894: afa80014 sw r8,0x0014(r29)
00042898: 8fbf0018 lw r31,0x0018(r29)
0004289c: 00000000 nop
000428a0: 03e00008 jr r31
000428a4: 27bd0020 addiu r29,r29,0x0020

Loads YOU WIN letters

000428a8: 27bdffd8 addiu r29,r29,0xffd8       ;r29 -= 0x28
000428ac: 8fa20048 lw r2,0x0048(r29)          ;r2 = (r29+0x48)
000428b0: 8fa30038 lw r3,0x0038(r29)          ;...
000428b4: 8fa8003c lw r8,0x003c(r29)          ;
000428b8: 8fa90040 lw r9,0x0040(r29)          ;
000428bc: 8faa0044 lw r10,0x0044(r29)         ;
000428c0: afbf0020 sw r31,0x0020(r29)         ;
000428c4: ac820054 sw r2,0x0054(r4)           ;
000428c8: afa30010 sw r3,0x0010(r29)          ;
000428cc: afa80014 sw r8,0x0014(r29)          ;
000428d0: afa90018 sw r9,0x0018(r29)          ;...
000428d4: 0c010133 jal 0x000404cc             ;
000428d8: afaa001c sw r10,0x001c(r29)         ;store r10 in (r29+0x1c)
000428dc: 8fbf0020 lw r31,0x0020(r29)
000428e0: 00000000 nop
000428e4: 03e00008 jr r31
000428e8: 27bd0028 addiu r29,r29,0x0028       ;r29 += 0x28

PRNG

PRNG advance

seed × 0x41C64E6D + 0x3039
0008e590: 3c0341c6 lui r3,0x41c6
0008e594: 3c028010 lui r2,0x8010
0008e598: 8c42e6f8 lw r2,-0x1908(r2)      ;r2 = seed
0008e59c: 34634e6d ori r3,r3,0x4e6d       ;r3 = 0x41C64E6D
0008e5a0: 00430018 mult r2,r3
0008e5a4: 00002012 mflo r4                ;r4 = r2 × r3
0008e5a8: 24823039 addiu r2,r4,0x3039     ;r2 = r4 + 0x3039
0008e5ac: 3c018010 lui r1,0x8010
0008e5b0: ac22e6f8 sw r2,-0x1908(r1)      ;store new seed in (0x800FE6F8)
0008e5b4: 00021402 srl r2,r2,0x10         ;r2 >> 0x10
0008e5b8: 03e00008 jr r31
0008e5bc: 30427fff andi r2,r2,0x7fff      ;r2 &= 0x7FFF

PRNG seed update

0008e5c0: 3c018010 lui r1,0x8010
0008e5c4: 03e00008 jr r31
0008e5c8: ac24e6f8 sw r4,-0x1908(r1)      ;store new seed in (0x800FE6F8)

Starter Deck generation

0016a640: 8c83d4d8 lw r3,-0x2b28(r4)
0016a644: 00000000 nop
0016a648: 90620021 lbu r2,0x0021(r3)
0016a64c: 00000000 nop
0016a650: 24420008 addiu r2,r2,0x0008
0016a654: a0620021 sb r2,0x0021(r3)
0016a658: 8c83d4d8 lw r3,-0x2b28(r4)
0016a65c: 00000000 nop
0016a660: 90620021 lbu r2,0x0021(r3)
0016a664: 00000000 nop
0016a668: 144000ab bne r2,r0,0x0016a918
0016a66c: 2404000c addiu r4,r0,0x000c
0016a670: 94620008 lhu r2,0x0008(r3)
0016a674: 00000000 nop
0016a678: 3042fffb andi r2,r2,0xfffb
0016a67c: 0c00ffb8 jal 0x0003fee0
0016a680: a4620008 sh r2,0x0008(r3)
0016a684: 24020002 addiu r2,r0,0x0002
0016a688: a602d424 sh r2,-0x2bdc(r16)
0016a68c: 3c118017 lui r17,0x8017
0016a690: 9624d424 lhu r4,-0x2bdc(r17)
0016a694: 00000000 nop
0016a698: 30828000 andi r2,r4,0x8000
0016a69c: 14400029 bne r2,r0,0x0016a744
0016a6a0: 30824000 andi r2,r4,0x4000
0016a6a4: 3c128017 lui r18,0x8017
0016a6a8: 34828000 ori r2,r4,0x8000
0016a6ac: 3c06801d lui r6,0x801d
0016a6b0: a622d424 sh r2,-0x2bdc(r17)
0016a6b4: 3c02801b lui r2,0x801b
0016a6b8: 9643d4dc lhu r3,-0x2b24(r18)
0016a6bc: 24508000 addiu r16,r2,0x8000
0016a6c0: 24640400 addiu r4,r3,0x0400
0016a6c4: 000310c0 sll r2,r3,0x03
0016a6c8: 00501021 addu r2,r2,r16
0016a6cc: 8c450000 lw r5,0x0000(r2)
0016a6d0: 24c25608 addiu r2,r6,0x5608
0016a6d4: ac430004 sw r3,0x0004(r2)
0016a6d8: 0c00b32a jal 0x0002cca8
0016a6dc: acc55608 sw r5,0x5608(r6)
0016a6e0: 10400005 beq r2,r0,0x0016a6f8
0016a6e4: 240400e5 addiu r4,r0,0x00e5
0016a6e8: 0c05a761 jal 0x00169d84
0016a6ec: 24050080 addiu r5,r0,0x0080
0016a6f0: 0805aa46 j 0x0016a918
0016a6f4: 00000000 nop
0016a6f8: 3c02801d lui r2,0x801d
0016a6fc: 9643d4dc lhu r3,-0x2b24(r18)
0016a700: 8c4207e0 lw r2,0x07e0(r2)
0016a704: 000318c0 sll r3,r3,0x03
0016a708: 00701821 addu r3,r3,r16
0016a70c: 8c630000 lw r3,0x0000(r3)
0016a710: 00000000 nop
0016a714: 0043102b sltu r2,r2,r3
0016a718: 10400002 beq r2,r0,0x0016a724
0016a71c: 240400e3 addiu r4,r0,0x00e3
0016a720: 240400e4 addiu r4,r0,0x00e4
0016a724: 0c05a761 jal 0x00169d84
0016a728: 00002821 addu r5,r0,r0
0016a72c: 3c038017 lui r3,0x8017
0016a730: 9462d424 lhu r2,-0x2bdc(r3)
0016a734: 00000000 nop
0016a738: 34424000 ori r2,r2,0x4000
0016a73c: 0805aa46 j 0x0016a918
0016a740: a462d424 sh r2,-0x2bdc(r3)
0016a744: 1040000f beq r2,r0,0x0016a784
0016a748: 3c02800a lui r2,0x800a
0016a74c: 8043b34d lb r3,-0x4cb3(r2)
0016a750: 3082bfff andi r2,r4,0xbfff
0016a754: 1460000b bne r3,r0,0x0016a784
0016a758: a622d424 sh r2,-0x2bdc(r17)
0016a75c: 3c108017 lui r16,0x8017
0016a760: 9604d4dc lhu r4,-0x2b24(r16)
0016a764: 0c00b339 jal 0x0002cce4
0016a768: 24840400 addiu r4,r4,0x0400
0016a76c: 9604d4dc lhu r4,-0x2b24(r16)
0016a770: 0c008625 jal 0x00021894
0016a774: 00000000 nop
0016a778: 24020003 addiu r2,r0,0x0003
0016a77c: 0805aa46 j 0x0016a918
0016a780: a622d424 sh r2,-0x2bdc(r17)
0016a784: 3c038017 lui r3,0x8017
0016a788: 24020004 addiu r2,r0,0x0004
0016a78c: 0805aa46 j 0x0016a918
0016a790: a462d424 sh r2,-0x2bdc(r3)
0016a794: 3c058017 lui r5,0x8017
0016a798: 94a3d424 lhu r3,-0x2bdc(r5)
0016a79c: 00000000 nop
0016a7a0: 30628000 andi r2,r3,0x8000
0016a7a4: 1440000c bne r2,r0,0x0016a7d8
0016a7a8: 3c068017 lui r6,0x8017
0016a7ac: 34628000 ori r2,r3,0x8000
0016a7b0: a4a2d424 sh r2,-0x2bdc(r5)
0016a7b4: 3c028017 lui r2,0x8017
0016a7b8: 3c03801b lui r3,0x801b
0016a7bc: 9442d4dc lhu r2,-0x2b24(r2)
0016a7c0: 24638000 addiu r3,r3,0x8000
0016a7c4: 000210c0 sll r2,r2,0x03
0016a7c8: 00431021 addu r2,r2,r3
0016a7cc: 8c430000 lw r3,0x0000(r2)
0016a7d0: 3c028017 lui r2,0x8017
0016a7d4: ac43d438 sw r3,-0x2bc8(r2)
0016a7d8: 8cc4d438 lw r4,-0x2bc8(r6)
0016a7dc: 00000000 nop
0016a7e0: 2c82000a sltiu r2,r4,0x000a
0016a7e4: 14400006 bne r2,r0,0x0016a800
0016a7e8: 24100001 addiu r16,r0,0x0001
0016a7ec: 3c02cccc lui r2,0xcccc
0016a7f0: 3442cccd ori r2,r2,0xcccd
0016a7f4: 00820019 multu r4,r2
0016a7f8: 00003810 mfhi r7
0016a7fc: 000780c2 srl r16,r7,0x03
0016a800: 2c820064 sltiu r2,r4,0x0064
0016a804: 14400007 bne r2,r0,0x0016a824
0016a808: 2c8203e8 sltiu r2,r4,0x03e8
0016a80c: 3c02cccc lui r2,0xcccc
0016a810: 3442cccd ori r2,r2,0xcccd
0016a814: 00820019 multu r4,r2
0016a818: 00003810 mfhi r7
0016a81c: 00078102 srl r16,r7,0x04
0016a820: 2c8203e8 sltiu r2,r4,0x03e8
0016a824: 14400007 bne r2,r0,0x0016a844
0016a828: 2c822710 sltiu r2,r4,0x2710
0016a82c: 3c028888 lui r2,0x8888
0016a830: 34428889 ori r2,r2,0x8889
0016a834: 00820019 multu r4,r2
0016a838: 00003810 mfhi r7
0016a83c: 00078102 srl r16,r7,0x04
0016a840: 2c822710 sltiu r2,r4,0x2710
0016a844: 14400006 bne r2,r0,0x0016a860
0016a848: 00000000 nop
0016a84c: 3c02cccc lui r2,0xcccc
0016a850: 3442cccd ori r2,r2,0xcccd
0016a854: 00820019 multu r4,r2
0016a858: 00003810 mfhi r7
0016a85c: 00078142 srl r16,r7,0x05
0016a860: 16000002 bne r16,r0,0x0016a86c
0016a864: 3c02801d lui r2,0x801d
0016a868: 24100001 addiu r16,r0,0x0001
0016a86c: 24420000 addiu r2,r2,0x0000
0016a870: 8c4307e0 lw r3,0x07e0(r2)
0016a874: 00902023 subu r4,r4,r16
0016a878: acc4d438 sw r4,-0x2bc8(r6)
0016a87c: 00701823 subu r3,r3,r16
0016a880: 14800003 bne r4,r0,0x0016a890
0016a884: ac4307e0 sw r3,0x07e0(r2)
0016a888: 24020004 addiu r2,r0,0x0004
0016a88c: a4a2d424 sh r2,-0x2bdc(r5)
0016a890: 0c05a744 jal 0x00169d10
0016a894: 00000000 nop
0016a898: 0805aa46 j 0x0016a918
0016a89c: 00000000 nop

Starter Deck generation - Part 2

0016a8a0: 3c108017 lui r16,0x8017
0016a8a4: 9603d424 lhu r3,-0x2bdc(r16)                  ;r3 = (0x8016D424)
0016a8a8: 00000000 nop
0016a8ac: 30628000 andi r2,r3,0x8000                    ;r2 = r3 & 0x8000
0016a8b0: 1440000a bne r2,r0,0x0016a8dc                 ;if(r2 ≠ 0), branch to 0x0016a8dc
0016a8b4: 3c048017 lui r4,0x8017                        ;r7 = 0x80170000
0016a8b8: 3c028017 lui r2,0x8017
0016a8bc: 8c44d4d8 lw r4,-0x2b28(r2)                    ;r4 = (0x8016D4D8)
0016a8c0: 00000000 nop
0016a8c4: 94820008 lhu r2,0x0008(r4)                    ;r2 = ((0x80170008))
0016a8c8: 34638000 ori r3,r3,0x8000                     ;r3 |= 0x8000
0016a8cc: a603d424 sh r3,-0x2bdc(r16)                   ;Store r3 in (0x8016D424)
0016a8d0: 34420004 ori r2,r2,0x0004                     ;r2 |= 4
0016a8d4: a4820008 sh r2,0x0008(r4)                     ;Store r2 in (0x8016D4E0)
0016a8d8: 3c048017 lui r4,0x8017
0016a8dc: 8c83d4d8 lw r3,-0x2b28(r4)                     ;r3 = (0x8016D4D8)
0016a8e0: 00000000 nop
0016a8e4: 90620021 lbu r2,0x0021(r3)                    ;r2 = (r3+0x21)
0016a8e8: 00000000 nop
0016a8ec: 24420008 addiu r2,r2,0x0008                   ;r2 += 8
0016a8f0: a0620021 sb r2,0x0021(r3)                     ;Store r2 in (r3 + 0x21)
0016a8f4: 8c82d4d8 lw r2,-0x2b28(r4)                    ;r2 = (0x8016D4D8)
0016a8f8: 00000000 nop
0016a8fc: 80420021 lb r2,0x0021(r2)                     ;r2 = (r2 + 0x21)
0016a900: 00000000 nop
0016a904: 04410004 bgez r2,0x0016a918                   ;if(r2 ≥ 0), branch to 0x0016a918
0016a908: 240400e2 addiu r4,r0,0x00e2                   ;r4 = 0xE2
0016a90c: 0c05a761 jal 0x00169d84                       ;Jump to 0x00169d84 and link
0016a910: 00002821 addu r5,r0,r0                        ;r5 = 0
0016a914: a600d424 sh r0,-0x2bdc(r16)                   ;Store 0 in (0x8016D424)
0016a918: 8fbf001c lw r31,0x001c(r29)
0016a91c: 8fb20018 lw r18,0x0018(r29)
0016a920: 8fb10014 lw r17,0x0014(r29)
0016a924: 8fb00010 lw r16,0x0010(r29)
0016a928: 03e00008 jr r31
0016a92c: 27bd0020 addiu r29,r29,0x0020                 ;r29 += 0x20
0016a930: 27bdfcf0 addiu r29,r29,0xfcf0                 ;r29 -= 0x310
0016a934: afb002e8 sw r16,0x02e8(r29)
0016a938: 241002d1 addiu r16,r0,0x02d1                  ;r16 = 721
0016a93c: 27a30010 addiu r3,r29,0x0010                  ;r3 = r29 + 0x10
0016a940: afbf030c sw r31,0x030c(r29)
0016a944: afbe0308 sw r30,0x0308(r29)
0016a948: afb70304 sw r23,0x0304(r29)
0016a94c: afb60300 sw r22,0x0300(r29)
0016a950: afb502fc sw r21,0x02fc(r29)
0016a954: afb402f8 sw r20,0x02f8(r29)
0016a958: afb302f4 sw r19,0x02f4(r29)
0016a95c: afb202f0 sw r18,0x02f0(r29)
0016a960: afb102ec sw r17,0x02ec(r29)
0016a964: 00701021 addu r2,r3,r16                       ;r2 = r3 + r16
0016a968: 2610ffff addiu r16,r16,0xffff                 ;r16--
0016a96c: 0601fffd bgez r16,0x0016a964                  ;if(r16 ≥ 0), loop to 0x0016a964
0016a970: a0400000 sb r0,0x0000(r2)                     ;Store r0 to (r2)
0016a974: 3c02801d lui r2,0x801d
0016a978: 24560200 addiu r22,r2,0x0200                  ;r22 = 0x801D0200
0016a97c: 3c028017 lui r2,0x8017
0016a980: 8c54d3dc lw r20,-0x2c24(r2)                   ;r20 = (0x801CD3DC)
0016a984: 00000000 nop
0016a988: 1280002c beq r20,r0,0x0016aa3c                ;if(r20 == 0), branch to 0x0016aa3c
0016a98c: 2457d3dc addiu r23,r2,0xd3dc                  ;r23 = 0x8016d3dc (pointer table to the card probabilities)
0016a990: 27be0010 addiu r30,r29,0x0010                 ;r30 = r29 + 0x10
0016a994: 96930000 lhu r19,0x0000(r20)                  ;r19 = (r20)
0016a998: 26940002 addiu r20,r20,0x0002                 ;r20 += 2
0016a99c: 0c023964 jal 0x0008e590                       ;PRNG advance
0016a9a0: 00009021 addu r18,r0,r0                       ;r18 = 0
0016a9a4: 304207ff andi r2,r2,0x07ff                    ;r2 &= 2047
0016a9a8: 24550001 addiu r21,r2,0x0001                  ;r21 = r2 + 1
0016a9ac: 02408021 addu r16,r18,r0                      ;r16 = r18
0016a9b0: 02808821 addu r17,r20,r0                      ;r17 = r20
0016a9b4: 0c023964 jal 0x0008e590                       ;PRNG advance
0016a9b8: 00000000 nop
0016a9bc: 96220000 lhu r2,0x0000(r17)                   ;r2 = card_probability
0016a9c0: 00000000 nop
0016a9c4: 02429021 addu r18,r18,r2                      ;r18 += card_probability
0016a9c8: 0255102a slt r2,r18,r21
0016a9cc: 1440000f bne r2,r0,0x0016aa0c                 ;if(r18 < r21), branch to 0x0016aa0c
0016a9d0: 03d02021 addu r4,r30,r16                      ;r4 = r16 + r30
0016a9d4: 90830000 lbu r3,0x0000(r4)                    ;r3 = (r4)
0016a9d8: 00000000 nop
0016a9dc: 2c620003 sltiu r2,r3,0x0003
0016a9e0: 14400003 bne r2,r0,0x0016a9f0                 ;if(card_quantity < 3), branch to 0x0016a9f0
0016a9e4: 24620001 addiu r2,r3,0x0001                   ;r2 = card_quantity + 1
0016a9e8: 0805aa87 j 0x0016aa1c                         ;Jump to 0x0016aa1c
0016a9ec: 26730001 addiu r19,r19,0x0001                 ;r19++
0016a9f0: a0820000 sb r2,0x0000(r4)                     ;r2 = (r4)
0016a9f4: 26020001 addiu r2,r16,0x0001                  ;r2 = r16 + 1
0016a9f8: 26040121 addiu r4,r16,0x0121                  ;r4 = r16 + 0x121
0016a9fc: 0c00b339 jal 0x0002cce4                       ;Jump to 0x0002cce4 and link
0016aa00: a6c20000 sh r2,0x0000(r22)                    ;Store r2 to (r22)
0016aa04: 0805aa87 j 0x0016aa1c                         ;Jump to 0x0016aa1c
0016aa08: 26d60002 addiu r22,r22,0x0002                 ;r22 += 2
0016aa0c: 26100001 addiu r16,r16,0x0001                 ;r16++
0016aa10: 2a0202d0 slti r2,r16,0x02d0
0016aa14: 1440ffe7 bne r2,r0,0x0016a9b4                 ;if(r16 < 720), loop to 0x0016a9b4 (loop until all probas have been checked)
0016aa18: 26310002 addiu r17,r17,0x0002                 ;r17 += 2
0016aa1c: 2673ffff addiu r19,r19,0xffff                 ;r19--
0016aa20: 1660ffde bne r19,r0,0x0016a99c                ;if(r19 ≠ 0), loop to 0x0016a99c
0016aa24: 00000000 nop
0016aa28: 26f70004 addiu r23,r23,0x0004                 ;next entry in the card probabilities pointer table
0016aa2c: 8ef40000 lw r20,0x0000(r23)                   ;r20 = card probabilities pointer
0016aa30: 00000000 nop
0016aa34: 1680ffd7 bne r20,r0,0x0016a994                ;if(pointer ≠ 0), branch to 0x0016a994
0016aa38: 00000000 nop
0016aa3c: 8fbf030c lw r31,0x030c(r29)
0016aa40: 8fbe0308 lw r30,0x0308(r29)
0016aa44: 8fb70304 lw r23,0x0304(r29)
0016aa48: 8fb60300 lw r22,0x0300(r29)
0016aa4c: 8fb502fc lw r21,0x02fc(r29)
0016aa50: 8fb402f8 lw r20,0x02f8(r29)
0016aa54: 8fb302f4 lw r19,0x02f4(r29)
0016aa58: 8fb202f0 lw r18,0x02f0(r29)
0016aa5c: 8fb102ec lw r17,0x02ec(r29)
0016aa60: 8fb002e8 lw r16,0x02e8(r29)
0016aa64: 03e00008 jr r31
0016aa68: 27bd0310 addiu r29,r29,0x0310

Starter Deck generation - Part 3

0016aa6c: 27bdffe0 addiu r29,r29,0xffe0
0016aa70: afb00010 sw r16,0x0010(r29)
0016aa74: 3c10801d lui r16,0x801d
0016aa78: 26100000 addiu r16,r16,0x0000                 ;r16 = 0x801d0000
0016aa7c: 02002021 addu r4,r16,r0                       ;r4 = r16
0016aa80: 00002821 addu r5,r0,r0                        ;r5 = 0
0016aa84: 24063000 addiu r6,r0,0x3000                   ;r6 = 0x3000
0016aa88: afbf0018 sw r31,0x0018(r29)
0016aa8c: 0c00d5d2 jal 0x00035748                       ;Jump to 0x00035748 and link
0016aa90: afb10014 sw r17,0x0014(r29)
0016aa94: 3c048017 lui r4,0x8017
0016aa98: 24848090 addiu r4,r4,0x8090                   ;r4 = 0x80161910
0016aa9c: 02002821 addu r5,r16,r0                       ;r5 = r16
0016aaa0: 0c023a1c jal 0x0008e870                       ;Jump to 0x0008e870 and link
0016aaa4: 24063000 addiu r6,r0,0x3000                   ;r6 = 0x3000
0016aaa8: 0c05a0fb jal 0x001683ec                       ;Jump to 0x001683ec and link
0016aaac: 00000000 nop
0016aab0: 0c004b53 jal 0x00012d4c                       ;Jump to 0x00012d4c and link
0016aab4: 00000000 nop
0016aab8: 0c023964 jal 0x0008e590                       ;PRNG advance
0016aabc: 00000000 nop
0016aac0: 0c05a702 jal 0x00169c08                       ;Jump to 0x00169c08 and link
0016aac4: 00000000 nop
0016aac8: 1040fff9 beq r2,r0,0x0016aab0                 ;if(r2 == 0), branch to 0x0016aab0
0016aacc: 00000000 nop
0016aad0: 0c05aa4c jal 0x0016a930                       ;Jump to 0x0016a930 and link
0016aad4: 00008021 addu r16,r0,r0                       ;r16 = 0
0016aad8: 3c02801d lui r2,0x801d
0016aadc: 24510200 addiu r17,r2,0x0200                  ;r17 = 0x801d0200
0016aae0: 2624040c addiu r4,r17,0x040c                  ;r4 = 0x801D060C
0016aae4: 2403000b addiu r3,r0,0x000b                   ;r3 = 11
0016aae8: 90820000 lbu r2,0x0000(r4)                    ;Store r2 to (r4)
0016aaec: 24840001 addiu r4,r4,0x0001                   ;r4++
0016aaf0: 2463ffff addiu r3,r3,0xffff                   ;r3--
0016aaf4: 0461fffc bgez r3,0x0016aae8                   ;if(r3 ≥ 0), loop to 0x0016aae8
0016aaf8: 02028026 xor r16,r16,r2                       ;r16 ^= r2
0016aafc: 3c02800a lui r2,0x800a
0016ab00: 8c42b09c lw r2,-0x4f64(r2)                    ;r2 = (0x8009B09C)
0016ab04: 0805aac6 j 0x0016ab18                         ;Jump to 0x0016ab18
0016ab08: 00021200 sll r2,r2,0x08                       ;r2 << 8
0016ab0c: 0c023964 jal 0x0008e590                       ;PRNG advance
0016ab10: 00000000 nop
0016ab14: 00021200 sll r2,r2,0x08                       ;r2 = PRN << 8
0016ab18: 00501025 or r2,r2,r16                         ;r2 |= r16
0016ab1c: 1040fffb beq r2,r0,0x0016ab0c                 ;if(r2 == 0), loop to 0x0016ab0c
0016ab20: ae220334 sw r2,0x0334(r17)                    ;Store r2 to (r17+0x334) 
0016ab24: 8fbf0018 lw r31,0x0018(r29)
0016ab28: 8fb10014 lw r17,0x0014(r29)
0016ab2c: 8fb00010 lw r16,0x0010(r29)
0016ab30: 03e00008 jr r31
0016ab34: 27bd0020 addiu r29,r29,0x0020

Starter deck card groups

Card Probabilities, in groups of 1444 bytes (722 cards × 2)

0x276EC58-0x288E1DF (main ROM) or 0xE99800-0xFB8D87 (in data/wa_mrg.mrg)

Card drops / decks

Rex Raptor

  • 0x277C8D8 for the deck
  • 0x277CE8C for the drops

Weevil Underwood

  • 0x277E468 for the deck

Mai Valentine

  • 0x277FFF8 for the deck

Bandit Keith

  • 0x2781B88 for the deck

Shadi

  • 0x2783718 for the deck

Kaiba

  • 0x278A558 for the deck

DarkNite

  • 0x27ACC98 for the deck

Nitemare

  • 0x27AE828 for the deck

Starter deck card groups pointers

0x288E1F4-0x288E20F - Card Probabilities pointers

D4 AB 16 80
8C B1 16 80
44 B7 16 80
FC BC 16 80
B4 C2 16 80
6C C8 16 80
24 CE 16 80

Card passwords + Card cost

  • NTSC-U: 0x28B7CD0 (ROM .bin) or 0xFB9808 (in data/wa_mrg.mrg)
  • NTSC-J: 0x28BE1E0 (ROM .bin)
  • PAL: 0x2D17870 (ROM .bin)
xx xx xx xx yy yy yy yy
xx - Cost
yy - Password

3F 42 0F 00 39 11 63 89 - Blue-Eyes White Dragon
A0 00 00 00 44 58 02 15
46 00 00 00 92 46 18 76
3F 42 0F 00 87 95 81 88
1E 00 00 00 96 32 30 15
8C 00 00 00 91 28 39 41
3F 42 0F 00 00 69 79 87
1E 00 00 00 08 16 18 14
0F 00 00 00 13 53 57 40
50 00 00 00 52 43 56 87
E8 03 00 00 66 90 06 13
22 01 00 00 65 37 45 40
78 00 00 00 70 28 84 72
E6 00 00 00 79 64 24 18
40 01 00 00 77 11 23 45
3F 42 0F 00 22 52 62 71
3F 42 0F 00 21 49 12 08
3F 42 0F 00 36 95 51 44
3F 42 0F 00 34 36 90 70
3F 42 0F 00 49 23 90 07
3F 42 0F 00 48 69 39 33
3F 42 0F 00 52 10 78 70
3C 00 00 00 91 57 28 06
0A 00 00 00 90 44 27 32
50 00 00 00 05 94 66 69
3F 42 0F 00 03 31 05 05
8C 00 00 00 18 28 45 32
3F 42 0F 00 17 69 84 68
23 00 00 00 62 15 93 04
3C 00 00 00 60 92 33 31
8C 00 00 00 79 43 72 67
A0 00 00 00 74 99 11 94
E8 03 00 00 82 36 11 30
3C 00 00 00 87 27 60 66
3F 42 0F 00 14 64 98 46
8C 00 00 00 31 10 49 29
3F 42 0F 00 39 91 88 66
3F 42 0F 00 38 80 36 06
3F 42 0F 00 43 95 27 28
37 00 00 00 52 35 76 55
78 00 00 00 56 22 15 91
40 01 00 00 05 69 54 28
8C 00 00 00 00 19 54 54
78 00 00 00 08 96 93 91
1E 00 00 00 13 43 32 27
8C 00 00 00 12 94 82 53
2D 00 00 00 21 30 81 80
23 00 00 00 65 21 20 26
8C 00 00 00 74 68 60 53
19 00 00 00 79 15 09 89
3F 42 0F 00 88 05 48 15
3F 42 0F 00 82 42 58 52
46 00 00 00 91 99 97 88
3F 42 0F 00 30 70 36 15
8C 00 00 00 34 26 76 41
3F 42 0F 00 43 63 75 87
3F 42 0F 00 48 14 14 14
0A 00 00 00 57 00 64 40
37 00 00 00 23 49 37 40
3F 42 0F 00 00 98 42 13
37 00 00 00 09 75 41 49
3F 42 0F 00 13 21 81 76
3F 42 0F 00 12 62 20 12
3F 42 0F 00 27 19 79 49
37 00 00 00 90 70 35 90
8C 00 00 00 20 46 18 01
3F 42 0F 00 79 93 57 48
22 01 00 00 74 70 97 14
3F 42 0F 00 83 20 46 41
78 00 00 00 81 67 45 77
8C 00 00 00 96 14 85 14
3F 42 0F 00 95 05 24 40
22 01 00 00 49 41 63 76
22 01 00 00 48 98 03 13
1E 00 00 00 43 79 12 49
50 00 00 00 52 26 51 76
64 00 00 00 50 62 90 02
A0 00 00 00 65 53 30 48
F4 01 00 00 04 00 39 75
50 00 00 00 19 46 78 01
A0 00 00 00 17 97 28 38
3F 42 0F 00 22 74 67 74
A0 00 00 00 21 21 06 00
22 01 00 00 39 61 06 33
5E 01 00 00 34 58 45 69
B4 00 00 00 73 05 84 06
C8 00 00 00 88 46 34 32
22 01 00 00 86 92 33 68
C8 00 00 00 91 79 72 95
F4 01 00 00 90 20 12 31
3F 42 0F 00 05 67 51 68
3F 42 0F 00 43 53 90 94
04 01 00 00 52 04 09 30
C8 00 00 00 57 41 49 67
8C 00 00 00 55 97 88 93
04 01 00 00 60 78 27 20
C8 00 00 00 69 25 67 66
8C 00 00 00 14 72 66 92
F4 01 00 00 12 52 15 29
28 00 00 00 21 09 55 55
1E 00 00 00 26 46 94 92
1E 00 00 00 34 37 93 28
3F 42 0F 00 39 73 33 55
19 00 00 00 07 67 02 22
14 00 00 00 56 78 45 46
E6 00 00 00 81 57 61 54
1E 00 00 00 90 04 60 80
23 00 00 00 95 45 09 27
46 00 00 00 04 32 49 53
3C 00 00 00 08 72 98 89
C8 00 00 00 57 29 97 16
46 00 00 00 52 76 36 52
28 00 00 00 38 99 15 09
28 00 00 00 65 03 15 15
78 00 00 00 74 40 54 41
28 00 00 00 73 31 64 88
78 00 00 00 17 77 03 14
37 00 00 00 26 24 42 41
46 00 00 00 21 75 82 77
3C 00 00 00 30 52 21 13
78 00 00 00 34 08 20 40
19 00 00 00 43 49 70 76
0F 00 00 00 42 36 19 13
E6 00 00 00 96 73 58 49
78 00 00 00 95 23 58 75
22 01 00 00 90 10 97 02
B4 00 00 00 09 57 36 48
B4 00 00 00 03 08 85 75
1E 00 00 00 88 34 96 90
14 00 00 00 51 31 24 37
C8 00 00 00 66 72 63 74
3C 00 00 00 64 28 03 00
32 00 00 00 79 15 42 37
1E 00 00 00 78 56 51 63
19 00 00 00 28 04 80 52
8C 00 00 00 21 49 30 36
14 00 00 00 20 30 79 62
37 00 00 00 35 77 19 09
23 00 00 00 33 24 28 35
37 00 00 00 48 14 67 62
37 00 00 00 47 51 07 98
32 00 00 00 51 08 46 34
28 00 00 00 90 48 45 61
23 00 00 00 05 35 84 97
1E 00 00 00 04 82 34 24
46 00 00 00 02 23 73 00
3F 42 0F 00 17 19 12 36
1E 00 00 00 16 56 12 63
78 00 00 00 61 07 51 99
E6 00 00 00 69 44 90 36
64 00 00 00 74 30 40 62
19 00 00 00 73 81 89 98
3C 00 00 00 81 28 88 25
19 00 00 00 14 12 58 53
2D 00 00 00 35 55 67 94
1E 00 00 00 30 02 06 20
1E 00 00 00 45 35 29 53
1E 00 00 00 43 39 55 93
1E 00 00 00 42 86 94 29
1E 00 00 00 51 23 34 56
1E 00 00 00 55 14 73 92
37 00 00 00 04 50 72 28
78 00 00 00 09 07 21 55
50 00 00 00 17 88 61 81
3C 00 00 00 12 35 00 28
64 00 00 00 21 81 09 54
0F 00 00 00 26 22 49 81
8C 00 00 00 64 19 88 17
37 00 00 00 73 55 37 53
A0 00 00 00 78 06 77 80
46 00 00 00 87 83 76 16
37 00 00 00 81 34 15 53
23 00 00 00 90 80 55 89
19 00 00 00 35 27 04 15
28 00 00 00 43 18 43 42
1E 00 00 00 42 55 43 88
2D 00 00 00 47 01 82 15
2D 00 00 00 56 82 21 41
1E 00 00 00 50 39 60 77
2D 00 00 00 69 85 70 14
37 00 00 00 04 66 19 40
19 00 00 00 12 13 58 77
1E 00 00 00 11 50 98 03
1E 00 00 00 26 00 37 49
19 00 00 00 93 17 51 64
64 00 00 00 39 34 86 02
1E 00 00 00 78 85 25 49
28 00 00 00 73 61 64 75
23 00 00 00 82 18 64 01
2D 00 00 00 86 59 03 38
19 00 00 00 87 03 43 09
0F 00 00 00 94 92 92 01
64 00 00 00 48 33 31 37
64 00 00 00 47 80 30 63
1E 00 00 00 52 66 75 00
46 00 00 00 51 17 15 36
14 00 00 00 55 54 54 63
1E 00 00 00 64 01 03 99
28 00 00 00 63 91 03 36
1E 00 00 00 64 65 35 75
46 00 00 00 16 85 81 98
14 00 00 00 23 95 88 75
1E 00 00 00 20 12 20 61
E6 00 00 00 34 59 79 98
28 00 00 00 33 40 19 24
23 00 00 00 82 96 58 60
19 00 00 00 87 33 97 97
1E 00 00 00 39 27 14 38
1E 00 00 00 82 59 17 39
19 00 00 00 99 17 85 96
1E 00 00 00 88 09 51 15
1E 00 00 00 50 26 83 53
04 01 00 00 57 92 63 85
19 00 00 00 33 16 40 15
2D 00 00 00 64 89 52 58
78 00 00 00 69 66 91 84
3F 42 0F 00 78 16 90 11
23 00 00 00 73 53 30 57
37 00 00 00 11 40 79 84
50 00 00 00 26 91 18 10
3C 00 00 00 25 37 28 56
1E 00 00 00 33 84 67 83
26 02 00 00 38 65 06 19
23 00 00 00 47 12 46 46
46 00 00 00 82 58 85 22
28 00 00 00 90 49 84 54
1E 00 00 00 86 86 71 46
32 00 00 00 94 33 73 17
1E 00 00 00 85 36 78 08
8C 00 00 00 07 60 51 80
37 00 00 00 56 11 51 17
1E 00 00 00 51 57 90 43
78 00 00 00 69 44 49 89
78 00 00 00 64 95 89 16
3F 42 0F 00 73 32 88 42
46 00 00 00 78 28 27 89
14 00 00 00 23 56 28 84
1E 00 00 00 25 16 06 41
23 00 00 00 20 63 55 78
1E 00 00 00 75 45 94 08
78 00 00 00 33 90 94 41
19 00 00 00 16 54 69 47
23 00 00 00 47 27 73 03
32 00 00 00 95 64 82 40
19 00 00 00 94 11 21 76
3C 00 00 00 09 62 60 03
28 00 00 00 08 48 00 39
46 00 00 00 02 95 49 75
78 00 00 00 11 36 48 02
37 00 00 00 56 23 98 38
3C 00 00 00 65 69 37 75
3F 42 0F 00 63 10 76 01
2D 00 00 00 78 07 16 37
19 00 00 00 77 43 15 64
64 00 00 00 81 94 54 00
46 00 00 00 80 31 04 37
37 00 00 00 35 28 43 63
3C 00 00 00 34 68 42 99
50 00 00 00 38 15 82 36
2D 00 00 00 47 02 21 62
1E 00 00 00 71 03 15 15
3C 00 00 00 50 99 10 25
3C 00 00 00 99 36 19 62
2D 00 00 00 04 27 58 98
1E 00 00 00 07 07 71 18
23 00 00 00 17 10 37 51
1E 00 00 00 16 01 36 97
19 00 00 00 80 70 50 15
37 00 00 00 60 94 25 50
32 00 00 00 68 35 64 96
1E 00 00 00 73 22 03 23
46 00 00 00 72 69 03 59
3C 00 00 00 86 19 42 86
3C 00 00 00 85 06 91 22
64 00 00 00 94 43 31 58
37 00 00 00 39 94 30 85
23 00 00 00 47 30 79 11
0A 00 00 00 42 27 19 58
32 00 00 00 41 68 68 84
50 00 00 00 56 14 07 10
64 00 00 00 54 01 06 47
2D 00 00 00 09 42 46 83
2D 00 00 00 08 99 85 10
3F 42 0F 00 16 75 24 46
1E 00 00 00 11 26 74 82
22 01 00 00 20 73 73 19
78 00 00 00 25 10 12 45
3F 42 0F 00 73 00 52 72
0F 00 00 00 78 47 91 18
3C 00 00 00 77 94 90 45
50 00 00 00 86 74 40 71
1E 00 00 00 80 21 89 07
46 00 00 00 99 72 28 44
3C 00 00 00 94 19 68 70
32 00 00 00 42 05 67 07
37 00 00 00 47 46 06 33
78 00 00 00 56 93 55 75
2D 00 00 00 55 70 95 02
3F 42 0F 00 59 20 94 38
23 00 00 00 04 58 70 85
20 03 00 00 11 41 85 61
20 03 00 00 12 05 12 37
20 03 00 00 16 41 61 04
20 03 00 00 25 98 61 40
20 03 00 00 20 79 00 77
20 03 00 00 38 25 49 03
20 03 00 00 77 72 89 39
20 03 00 00 06 99 00 46
20 03 00 00 81 00 37 02
20 03 00 00 85 46 77 39
20 03 00 00 94 97 16 65
20 03 00 00 99 74 55 01
20 03 00 00 07 21 55 38
20 03 00 00 46 71 04 64
20 03 00 00 51 58 43 01
20 03 00 00 50 05 82 37
20 03 00 00 64 45 22 63
3F 42 0F 00 63 92 21 90
20 03 00 00 78 79 60 36
20 03 00 00 17 20 10 63
20 03 00 00 15 76 59 99
20 03 00 00 62 24 05 15
20 03 00 00 18 57 59 91
20 03 00 00 33 41 37 98
3F 42 0F 00 32 97 76 25
20 03 00 00 87 78 26 51
20 03 00 00 86 25 25 98
20 03 00 00 45 74 02 77
3F 42 0F 00 99 52 04 50
37 00 00 00 98 09 43 87
37 00 00 00 03 46 42 23
37 00 00 00 01 36 91 50
37 00 00 00 56 83 31 86
37 00 00 00 55 20 70 22
37 00 00 00 69 71 19 59
20 4E 00 00 43 94 12 53
3F 42 0F 00 77 04 58 12
3F 42 0F 00 72 45 07 58
37 00 00 00 96 96 19 38
20 4E 00 00 25 88 86 11
B8 88 00 00 24 29 85 47
3F 42 0F 00 39 76 25 84
0A 00 00 00 75 36 10 76
37 00 00 00 46 03 13 46
20 4E 00 00 81 40 13 73
B8 88 00 00 99 37 52 19
3F 42 0F 00 94 87 91 46
3F 42 0F 00 03 24 30 72
3F 42 0F 00 08 71 80 18
3F 42 0F 00 06 52 89 45
A0 00 00 00 11 08 28 71
A0 00 00 00 51 91 82 12
8C 00 00 00 68 36 07 44
3C 00 00 00 63 82 06 71
22 01 00 00 72 23 56 07
3F 42 0F 00 FE FF FF FF
40 01 00 00 85 57 34 70
A4 06 00 00 20 07 74 06
32 00 00 00 39 44 73 33
3F 42 0F 00 FE FF FF FF
46 00 00 00 32 82 62 05
C8 00 00 00 41 28 01 32
78 00 00 00 46 15 40 68
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 FE FF FF FF
C8 00 00 00 08 49 28 67
50 00 00 00 07 30 77 94
B4 00 00 00 11 87 77 30
3F 42 0F 00 10 23 16 63
3F 42 0F 00 25 14 55 99
3F 42 0F 00 64 51 95 25
3F 42 0F 00 68 08 34 62
3F 42 0F 00 77 48 43 98
3F 42 0F 00 FE FF FF FF
22 01 00 00 80 82 22 51
40 01 00 00 89 23 61 97
A0 00 00 00 34 19 61 24
90 01 00 00 33 56 00 50
A0 00 00 00 47 07 59 97
3F 42 0F 00 FE FF FF FF
78 00 00 00 41 30 38 59
40 01 00 00 50 81 37 26
22 01 00 00 98 28 76 62
78 00 00 00 03 14 26 99
84 03 00 00 02 55 65 25
3F 42 0F 00 16 02 04 52
0F 00 00 00 15 99 04 98
E8 03 00 00 20 39 43 24
22 01 00 00 29 86 82 51
3F 42 0F 00 77 23 32 87
3F 42 0F 00 72 13 31 24
3F 42 0F 00 71 50 70 50
0A 00 00 00 85 07 10 86
0A 00 00 00 84 98 59 13
0A 00 00 00 99 34 98 59
04 01 00 00 38 81 08 86
0F 00 00 00 42 22 47 12
0A 00 00 00 41 19 86 58
0A 00 00 00 50 55 25 85
22 01 00 00 55 06 25 11
BC 02 00 00 53 93 64 48
0F 00 00 00 08 30 13 84
22 01 00 00 07 80 53 10
B4 00 00 00 11 27 92 47
B4 00 00 00 10 14 91 73
50 00 00 00 29 54 31 10
20 03 00 00 24 01 70 46
90 01 00 00 32 98 29 72
5E 01 00 00 77 39 29 09
14 00 00 00 86 85 68 45
0F 00 00 00 81 62 07 72
78 00 00 00 89 13 47 08
04 01 00 00 98 50 86 44
3C 00 00 00 93 00 95 71
78 00 00 00 41 97 35 07
78 00 00 00 46 34 74 34
28 00 00 00 55 84 13 70
64 00 00 00 50 61 52 07
5E 01 00 00 68 18 62 33
19 00 00 00 63 59 01 69
1E 00 00 00 12 05 40 06
14 00 00 00 11 92 80 32
40 01 00 00 15 33 89 69
E8 03 00 00 24 80 28 95
E6 00 00 00 29 66 78 31
84 03 00 00 37 17 17 68
84 03 00 00 32 64 56 94
3F 42 0F 00 81 00 56 31
3F 42 0F 00 80 91 95 67
78 00 00 00 94 38 34 93
37 00 00 00 93 85 84 20
2D 00 00 00 98 65 83 66
78 00 00 00 06 12 22 93
04 01 00 00 41 69 61 29
46 00 00 00 50 40 01 55
14 00 00 00 59 96 40 92
5E 01 00 00 63 33 59 28
5E 01 00 00 62 84 99 55
22 01 00 00 77 61 38 81
78 00 00 00 16 17 77 23
22 01 00 00 20 68 17 50
BC 02 00 00 29 45 16 86
E8 03 00 00 24 91 65 23
14 00 00 00 32 32 05 59
50 00 00 00 31 89 44 85
32 00 00 00 46 66 43 12
78 00 00 00 85 16 83 58
B4 00 00 00 99 63 32 85
22 01 00 00 98 40 71 11
3C 00 00 00 03 91 10 48
1E 00 00 00 02 37 10 84
1E 00 00 00 00 84 59 10
20 03 00 00 55 65 98 47
64 00 00 00 54 11 48 73
50 00 00 00 68 68 47 10
64 00 00 00 67 49 86 46
46 00 00 00 72 96 26 72
22 01 00 00 71 32 65 09
64 00 00 00 29 23 04 45
B4 00 00 00 24 60 14 12
32 00 00 00 33 17 53 48
A0 00 00 00 38 67 92 84
28 00 00 00 36 44 32 11
22 01 00 00 41 91 31 47
26 02 00 00 40 31 70 74
8C 00 00 00 94 28 20 10
BC 02 00 00 93 65 69 46
04 01 00 00 02 16 08 73
0F 00 00 00 07 62 07 09
8C 00 00 00 15 49 47 46
20 03 00 00 10 90 86 72
E8 03 00 00 69 37 35 08
40 01 00 00 63 23 75 35
78 00 00 00 62 64 74 71
0A 00 00 00 71 11 13 08
1E 00 00 00 76 62 53 34
23 00 00 00 84 48 92 70
2D 00 00 00 29 95 01 07
3F 42 0F 00 38 36 41 33
46 00 00 00 33 22 80 60
23 00 00 00 41 79 29 06
40 01 00 00 40 10 69 33
E8 03 00 00 45 07 78 69
0F 00 00 00 53 43 17 95
14 00 00 00 98 94 56 32
19 00 00 00 07 31 96 68
04 01 00 00 02 28 95 95
14 00 00 00 10 78 34 21
28 00 00 00 15 15 84 67
1E 00 00 00 24 02 23 94
04 01 00 00 63 42 62 20
19 00 00 00 77 99 62 67
B4 00 00 00 76 36 01 93
04 01 00 00 71 27 40 29
04 01 00 00 89 73 90 56
46 00 00 00 84 10 39 92
78 00 00 00 33 01 38 29
A0 00 00 00 32 48 78 55
3F 42 0F 00 46 94 17 81
BC 02 00 00 45 35 56 28
14 00 00 00 50 22 65 54
78 00 00 00 59 79 05 81
23 00 00 00 53 19 44 17
0F 00 00 00 02 06 83 53
2D 00 00 00 01 43 23 80
19 00 00 00 15 93 22 16
A0 00 00 00 14 30 71 53
04 01 00 00 29 27 11 89
20 03 00 00 28 78 50 16
1E 00 00 00 72 14 59 42
8C 00 00 00 71 01 99 84
8C 00 00 00 80 42 38 11
04 01 00 00 85 99 87 47
50 00 00 00 83 75 27 74
64 00 00 00 98 26 26 10
14 00 00 00 37 73 65 46
B4 00 00 00 41 19 05 73
90 01 00 00 40 00 54 09
E6 00 00 00 55 47 53 46
90 01 00 00 54 94 92 72
90 01 00 00 62 74 32 08
26 02 00 00 07 21 71 35
A0 00 00 00 16 78 10 71
14 00 00 00 10 19 20 08
E6 00 00 00 19 05 69 34
90 01 00 00 24 42 08 70
0A 00 00 00 23 93 48 07
40 01 00 00 31 89 87 33
26 02 00 00 76 26 86 60
32 00 00 00 85 77 36 06
F4 01 00 00 80 14 75 32
A0 00 00 00 98 00 14 69
90 01 00 00 93 41 14 95
23 00 00 00 92 98 53 32
64 00 00 00 40 85 92 68
1E 00 00 00 45 25 41 94
1E 00 00 00 54 72 81 21
28 00 00 00 59 53 80 07
2D 00 00 00 67 00 29 34
1E 00 00 00 62 46 69 60
3F 42 0F 00 11 97 08 07
C8 00 00 00 16 84 17 33
3C 00 00 00 24 20 57 69
1E 00 00 00 23 71 96 96
3F 42 0F 00 28 58 35 32
3C 00 00 00 36 05 75 69
0F 00 00 00 31 45 74 95
0F 00 00 00 80 92 23 21
19 00 00 00 85 89 63 68
50 00 00 00 93 20 02 94
A0 00 00 00 92 76 41 21
46 00 00 00 07 53 40 57
37 00 00 00 06 04 90 93
3F 42 0F 00 40 40 39 20
3F 42 0F 00 59 97 78 56
1E 00 00 00 54 88 78 93
04 01 00 00 62 25 17 29
14 00 00 00 61 71 56 55
32 00 00 00 76 52 06 82
50 00 00 00 15 09 45 28
46 00 00 00 29 46 44 55
3F 42 0F 00 28 36 84 81
14 00 00 00 33 83 23 17
20 03 00 00 31 20 62 54
40 01 00 00 36 70 72 80
3C 00 00 00 45 57 11 17
3C 00 00 00 84 04 50 43
2D 00 00 00 98 45 90 89
28 00 00 00 97 31 35 16
3C 00 00 00 02 88 34 42
3F 42 0F 00 01 29 83 89
F4 01 00 00 15 76 23 15
2D 00 00 00 54 52 62 42
50 00 00 00 63 03 01 78
E8 03 00 00 67 50 01 14
3C 00 00 00 66 37 40 41
40 01 00 00 71 87 99 77
64 00 00 00 70 24 39 04
19 00 00 00 24 71 38 40
37 00 00 00 23 51 77 76
78 00 00 00 32 08 17 03
5E 01 00 00 37 55 56 35
78 00 00 00 45 36 05 72
3C 00 00 00 40 82 05 08
2D 00 00 00 49 29 44 34
1E 00 00 00 93 10 83 61
8C 00 00 00 92 57 22 07
37 00 00 00 07 03 32 34
19 00 00 00 06 54 71 60
28 00 00 00 14 31 10 06
1E 00 00 00 19 87 50 33
28 00 00 00 68 28 99 69
04 01 00 00 63 15 98 96
F4 01 00 00 71 52 48 32
8C 00 00 00 76 02 87 68
A0 00 00 00 75 59 26 95
8C 00 00 00 83 30 26 21
19 00 00 00 28 87 65 68
50 00 00 00 37 23 04 94
46 00 00 00 32 14 54 20
3C 00 00 00 40 51 93 57
19 00 00 00 45 07 92 93
3F 42 0F 00 54 58 31 20
1E 00 00 00 52 35 71 56
28 00 00 00 97 82 10 93
1E 00 00 00 06 22 69 29
64 00 00 00 01 19 69 55
78 00 00 00 19 56 08 82
1E 00 00 00 14 07 47 28
23 00 00 00 23 53 87 55
19 00 00 00 68 30 86 81
32 00 00 00 76 81 35 17
6C 07 00 00 75 28 75 54
C8 00 00 00 80 14 14 80
46 00 00 00 88 55 53 17
50 00 00 00 83 02 53 43
22 01 00 00 32 98 92 29
90 01 00 00 37 39 41 56
5E 01 00 00 45 86 81 82
46 00 00 00 44 23 80 29
B4 00 00 00 59 13 29 55
E6 00 00 00 58 60 68 81
64 00 00 00 62 07 18 18
B4 00 00 00 01 98 57 54
8C 00 00 00 16 34 56 81
8C 00 00 00 14 81 96 17
26 02 00 00 13 22 35 43
3F 42 0F 00 28 18 74 80
37 00 00 00 27 65 24 16
64 00 00 00 71 06 23 43
A0 00 00 00 70 93 62 79
E6 00 00 00 85 39 02 15
E6 00 00 00 84 80 41 42
78 00 00 00 98 27 40 78
0F 00 00 00 97 14 90 05
A0 00 00 00 36 64 39 41
22 01 00 00 40 01 78 78
22 01 00 00 49 98 17 04
E6 00 00 00 54 38 17 40
3F 42 0F 00 53 85 56 77
C8 00 00 00 67 62 05 03
37 00 00 00 66 13 45 30
50 00 00 00 15 69 44 76
14 00 00 00 19 06 83 02
BC 02 00 00 28 97 23 39
37 00 00 00 23 34 62 65
78 00 00 00 22 80 11 02
B4 00 00 00 36 61 11 38
78 00 00 00 75 18 50 64
04 01 00 00 84 65 99 91
20 03 00 00 89 05 39 37
0A 00 00 00 97 92 38 64
3F 42 0F 00 92 39 87 90
20 03 00 00 01 89 26 32
0A 00 00 00 45 66 66 69
3F 42 0F 00 44 13 05 95
50 C3 00 00 59 64 04 22
3F 42 0F 00 58 00 54 68
20 03 00 00 66 91 93 94
3F 42 0F 00 61 38 32 21
3F 42 0F 00 70 85 72 57
3F 42 0F 00 15 65 71 94
3F 42 0F 00 23 12 10 20
3F 42 0F 00 28 69 60 56
0A 00 00 00 37 49 09 83
0A 00 00 00 35 96 08 29
3F 42 0F 00 30 33 48 56
20 03 00 00 89 84 87 82
3F 42 0F 00 84 70 26 29
64 00 00 00 92 17 76 55
64 00 00 00 97 68 75 81
3F 42 0F 00 06 45 14 18
64 00 00 00 05 91 53 54
64 00 00 00 59 32 93 81
3F 42 0F 00 58 89 92 17
32 00 00 00 63 75 41 43
32 00 00 00 61 16 81 80
64 00 00 00 66 63 20 16
32 00 00 00 75 40 69 43
32 00 00 00 70 90 69 79
3F 42 0F 00 28 37 08 15
3F 42 0F 00 27 84 57 42
3F 42 0F 00 32 75 97 78
3F 42 0F 00 30 11 36 15
3F 42 0F 00 45 68 35 41
3F 42 0F 00 44 49 75 77
3F 42 0F 00 89 96 14 04
3F 42 0F 00 97 32 63 40
3F 42 0F 00 96 23 62 77
3F 42 0F 00 01 70 02 03
32 00 00 00 00 16 41 39
64 00 00 00 14 67 80 76
64 00 00 00 53 44 30 02
64 00 00 00 68 91 39 39
32 00 00 00 66 31 78 05
3F 42 0F 00 75 28 18 41
32 00 00 00 70 75 57 78
32 00 00 00 79 16 56 04
0A 00 00 00 83 62 06 31
0A 00 00 00 22 49 45 77
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 91 48 50 02
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 18 79 27 38
3F 42 0F 00 67 16 27 64
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 70 43 05 27
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 FE FF FF FF
3F 42 0F 00 FE FF FF FF - Magician of Black Chaos